diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 1ee8c62e84..685810337f 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -1495,6 +1495,10 @@ void TextureCache
::TickAsyncUnswizzle() { } task.initialized = true; + task.was_rescaled = image.IsRescaled(); + if (task.was_rescaled) { + image.ScaleDown(true); + } } // Read data @@ -1625,8 +1629,11 @@ void TextureCache
::TickAsyncUnswizzle() {
if (is_final_batch && all_submitted) {
runtime.FreeDeferredStagingBuffer(task.staging_buffer);
- image.flags &= ~ImageFlagBits::IsDecoding;
runtime.ReleaseSparseUnswizzleBuffer(image);
+ image.flags &= ~ImageFlagBits::IsDecoding;
+ if (task.was_rescaled) {
+ image.ScaleUp();
+ }
unswizzle_queue.pop_front();
}
}
diff --git a/src/video_core/texture_cache/texture_cache_base.h b/src/video_core/texture_cache/texture_cache_base.h
index 755085ec43..69c494254b 100644
--- a/src/video_core/texture_cache/texture_cache_base.h
+++ b/src/video_core/texture_cache/texture_cache_base.h
@@ -141,6 +141,7 @@ class TextureCache : public VideoCommon::ChannelSetupCaches