summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/texture_cache/texture_cache.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index a483892e4..66de41f04 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -1758,6 +1758,7 @@ void TextureCache<P>::SynchronizeAliases(ImageId image_id) {
1758 boost::container::small_vector<const AliasedImage*, 1> aliased_images; 1758 boost::container::small_vector<const AliasedImage*, 1> aliased_images;
1759 Image& image = slot_images[image_id]; 1759 Image& image = slot_images[image_id];
1760 bool any_rescaled = True(image.flags & ImageFlagBits::Rescaled); 1760 bool any_rescaled = True(image.flags & ImageFlagBits::Rescaled);
1761 bool any_modified = True(image.flags & ImageFlagBits::GpuModified);
1761 u64 most_recent_tick = image.modification_tick; 1762 u64 most_recent_tick = image.modification_tick;
1762 for (const AliasedImage& aliased : image.aliased_images) { 1763 for (const AliasedImage& aliased : image.aliased_images) {
1763 ImageBase& aliased_image = slot_images[aliased.id]; 1764 ImageBase& aliased_image = slot_images[aliased.id];
@@ -1765,9 +1766,7 @@ void TextureCache<P>::SynchronizeAliases(ImageId image_id) {
1765 most_recent_tick = std::max(most_recent_tick, aliased_image.modification_tick); 1766 most_recent_tick = std::max(most_recent_tick, aliased_image.modification_tick);
1766 aliased_images.push_back(&aliased); 1767 aliased_images.push_back(&aliased);
1767 any_rescaled |= True(aliased_image.flags & ImageFlagBits::Rescaled); 1768 any_rescaled |= True(aliased_image.flags & ImageFlagBits::Rescaled);
1768 if (True(aliased_image.flags & ImageFlagBits::GpuModified)) { 1769 any_modified |= True(aliased_image.flags & ImageFlagBits::GpuModified);
1769 image.flags |= ImageFlagBits::GpuModified;
1770 }
1771 } 1770 }
1772 } 1771 }
1773 if (aliased_images.empty()) { 1772 if (aliased_images.empty()) {
@@ -1782,6 +1781,9 @@ void TextureCache<P>::SynchronizeAliases(ImageId image_id) {
1782 } 1781 }
1783 } 1782 }
1784 image.modification_tick = most_recent_tick; 1783 image.modification_tick = most_recent_tick;
1784 if (any_modified) {
1785 image.flags |= ImageFlagBits::GpuModified;
1786 }
1785 std::ranges::sort(aliased_images, [this](const AliasedImage* lhs, const AliasedImage* rhs) { 1787 std::ranges::sort(aliased_images, [this](const AliasedImage* lhs, const AliasedImage* rhs) {
1786 const ImageBase& lhs_image = slot_images[lhs->id]; 1788 const ImageBase& lhs_image = slot_images[lhs->id];
1787 const ImageBase& rhs_image = slot_images[rhs->id]; 1789 const ImageBase& rhs_image = slot_images[rhs->id];