summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Ameer J2023-08-06 14:55:05 -0400
committerGravatar Ameer J2023-08-06 14:55:05 -0400
commit9058486b9b9833d0554d3e3f11a582859657b21f (patch)
treefe16d174b54119a593b43c01f89c8ff1d4e1f3cf
parentHACK: Avoid swizzling and reuploading ASTC image every frame (diff)
downloadyuzu-9058486b9b9833d0554d3e3f11a582859657b21f.tar.gz
yuzu-9058486b9b9833d0554d3e3f11a582859657b21f.tar.xz
yuzu-9058486b9b9833d0554d3e3f11a582859657b21f.zip
Revert "HACK: Avoid swizzling and reuploading ASTC image every frame"
This reverts commit b18c1fb1bbbcc235e9a1cbbb2704fed2e5895e61.
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.cpp9
-rw-r--r--src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp1
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_cache.cpp10
-rw-r--r--src/video_core/texture_cache/texture_cache.h14
-rw-r--r--src/video_core/textures/decoders.cpp9
5 files changed, 4 insertions, 39 deletions
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp
index 9ca544ec9..9cafd2983 100644
--- a/src/video_core/renderer_opengl/gl_texture_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp
@@ -554,14 +554,7 @@ void TextureCacheRuntime::Finish() {
554} 554}
555 555
556StagingBufferMap TextureCacheRuntime::UploadStagingBuffer(size_t size) { 556StagingBufferMap TextureCacheRuntime::UploadStagingBuffer(size_t size) {
557 static StagingBufferMap result; 557 return staging_buffer_pool.RequestUploadBuffer(size);
558 static size_t last_size = 0;
559 if (size == last_size) {
560 return result;
561 }
562 last_size = size;
563 result = staging_buffer_pool.RequestUploadBuffer(size);
564 return result;
565} 558}
566 559
567StagingBufferMap TextureCacheRuntime::DownloadStagingBuffer(size_t size) { 560StagingBufferMap TextureCacheRuntime::DownloadStagingBuffer(size_t size) {
diff --git a/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp b/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
index 27328dab2..ce92f66ab 100644
--- a/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
+++ b/src/video_core/renderer_vulkan/vk_staging_buffer_pool.cpp
@@ -214,7 +214,6 @@ StagingBufferPool::StagingBuffersCache& StagingBufferPool::GetCache(MemoryUsage
214} 214}
215 215
216void StagingBufferPool::ReleaseCache(MemoryUsage usage) { 216void StagingBufferPool::ReleaseCache(MemoryUsage usage) {
217 return;
218 ReleaseLevel(GetCache(usage), current_delete_level); 217 ReleaseLevel(GetCache(usage), current_delete_level);
219} 218}
220 219
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
index 51be57b19..b3e17c332 100644
--- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
@@ -846,15 +846,7 @@ void TextureCacheRuntime::Finish() {
846} 846}
847 847
848StagingBufferRef TextureCacheRuntime::UploadStagingBuffer(size_t size) { 848StagingBufferRef TextureCacheRuntime::UploadStagingBuffer(size_t size) {
849 static StagingBufferRef result; 849 return staging_buffer_pool.Request(size, MemoryUsage::Upload);
850 static size_t last_size = 0;
851 if (size == last_size) {
852 return result;
853 }
854 LOG_ERROR(Debug, "Called");
855 last_size = size;
856 result = staging_buffer_pool.Request(size, MemoryUsage::Upload);
857 return result;
858} 850}
859 851
860StagingBufferRef TextureCacheRuntime::DownloadStagingBuffer(size_t size, bool deferred) { 852StagingBufferRef TextureCacheRuntime::DownloadStagingBuffer(size_t size, bool deferred) {
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index 6b87987de..4457b366f 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -1021,18 +1021,8 @@ 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 static u64 last_size = 0; 1024 gpu_memory->ReadBlock(gpu_addr, mapped_span.data(), mapped_span.size_bytes(),
1025 bool has_run = false; 1025 VideoCommon::CacheType::NoTextureCache);
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 }
1036 const auto uploads = FullUploadSwizzles(image.info); 1026 const auto uploads = FullUploadSwizzles(image.info);
1037 runtime.AccelerateImageUpload(image, staging, uploads); 1027 runtime.AccelerateImageUpload(image, staging, uploads);
1038 return; 1028 return;
diff --git a/src/video_core/textures/decoders.cpp b/src/video_core/textures/decoders.cpp
index dde4b0904..95bcdd37b 100644
--- a/src/video_core/textures/decoders.cpp
+++ b/src/video_core/textures/decoders.cpp
@@ -88,7 +88,6 @@ void SwizzleImpl(std::span<u8> output, std::span<const u8> input, u32 width, u32
88 } 88 }
89} 89}
90 90
91
92template <bool TO_LINEAR, u32 BYTES_PER_PIXEL> 91template <bool TO_LINEAR, u32 BYTES_PER_PIXEL>
93void SwizzleSubrectImpl(std::span<u8> output, std::span<const u8> input, u32 width, u32 height, 92void SwizzleSubrectImpl(std::span<u8> output, std::span<const u8> input, u32 width, u32 height,
94 u32 depth, u32 origin_x, u32 origin_y, u32 extent_x, u32 num_lines, 93 u32 depth, u32 origin_x, u32 origin_y, u32 extent_x, u32 num_lines,
@@ -96,14 +95,6 @@ void SwizzleSubrectImpl(std::span<u8> output, std::span<const u8> input, u32 wid
96 // The origin of the transformation can be configured here, leave it as zero as the current API 95 // The origin of the transformation can be configured here, leave it as zero as the current API
97 // doesn't expose it. 96 // doesn't expose it.
98 static constexpr u32 origin_z = 0; 97 static constexpr u32 origin_z = 0;
99 static u32 last_width = 0;
100 static u32 last_height = 0;
101 if (last_width == width && last_height == height) {
102 return;
103 }
104 LOG_ERROR(Debug, "Called");
105 last_width = width;
106 last_height = height;
107 98
108 // We can configure here a custom pitch 99 // We can configure here a custom pitch
109 // As it's not exposed 'width * BYTES_PER_PIXEL' will be the expected pitch. 100 // As it's not exposed 'width * BYTES_PER_PIXEL' will be the expected pitch.