summaryrefslogtreecommitdiff
path: root/src/video_core/texture_cache
diff options
context:
space:
mode:
authorGravatar Ameer J2023-08-06 14:49:34 -0400
committerGravatar Ameer J2023-08-06 14:54:58 -0400
commitb18c1fb1bbbcc235e9a1cbbb2704fed2e5895e61 (patch)
treeeab3d5b675ddac021b1c2c31c6f3d2cea41ef569 /src/video_core/texture_cache
parentCompute Replicate (diff)
downloadyuzu-b18c1fb1bbbcc235e9a1cbbb2704fed2e5895e61.tar.gz
yuzu-b18c1fb1bbbcc235e9a1cbbb2704fed2e5895e61.tar.xz
yuzu-b18c1fb1bbbcc235e9a1cbbb2704fed2e5895e61.zip
HACK: Avoid swizzling and reuploading ASTC image every frame
Diffstat (limited to 'src/video_core/texture_cache')
-rw-r--r--src/video_core/texture_cache/texture_cache.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index 4457b366f..6b87987de 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -1021,8 +1021,18 @@ void TextureCache<P>::UploadImageContents(Image& image, StagingBuffer& staging)
1021 const GPUVAddr gpu_addr = image.gpu_addr; 1021 const GPUVAddr gpu_addr = image.gpu_addr;
1022 1022
1023 if (True(image.flags & ImageFlagBits::AcceleratedUpload)) { 1023 if (True(image.flags & ImageFlagBits::AcceleratedUpload)) {
1024 gpu_memory->ReadBlock(gpu_addr, mapped_span.data(), mapped_span.size_bytes(), 1024 static u64 last_size = 0;
1025 VideoCommon::CacheType::NoTextureCache); 1025 bool has_run = false;
1026 if (last_size == image.unswizzled_size_bytes) {
1027 has_run = true;
1028 }
1029 last_size = image.unswizzled_size_bytes;
1030
1031 if (!has_run) {
1032 LOG_ERROR(Debug, "Called");
1033 gpu_memory->ReadBlock(gpu_addr, mapped_span.data(), mapped_span.size_bytes(),
1034 VideoCommon::CacheType::NoTextureCache);
1035 }
1026 const auto uploads = FullUploadSwizzles(image.info); 1036 const auto uploads = FullUploadSwizzles(image.info);
1027 runtime.AccelerateImageUpload(image, staging, uploads); 1037 runtime.AccelerateImageUpload(image, staging, uploads);
1028 return; 1038 return;