Просмотр исходного кода

vk_texture_cache: Use Download memory types for texture flushes

Use the Download memory type where it matters.
ReinUsesLisp 5 лет назад
Родитель
Сommit
432f045dba

+ 9 - 1
src/video_core/renderer_vulkan/vk_texture_cache.cpp

@@ -555,7 +555,15 @@ void TextureCacheRuntime::Finish() {
 
 ImageBufferMap TextureCacheRuntime::MapUploadBuffer(size_t size) {
     const auto staging_ref = staging_buffer_pool.Request(size, MemoryUsage::Upload);
-    return ImageBufferMap{
+    return {
+        .handle = staging_ref.buffer,
+        .span = staging_ref.mapped_span,
+    };
+}
+
+ImageBufferMap TextureCacheRuntime::MapDownloadBuffer(size_t size) {
+    const auto staging_ref = staging_buffer_pool.Request(size, MemoryUsage::Download);
+    return {
         .handle = staging_ref.buffer,
         .span = staging_ref.mapped_span,
     };

+ 1 - 4
src/video_core/renderer_vulkan/vk_texture_cache.h

@@ -78,10 +78,7 @@ struct TextureCacheRuntime {
 
     [[nodiscard]] ImageBufferMap MapUploadBuffer(size_t size);
 
-    [[nodiscard]] ImageBufferMap MapDownloadBuffer(size_t size) {
-        // TODO: Have a special function for this
-        return MapUploadBuffer(size);
-    }
+    [[nodiscard]] ImageBufferMap MapDownloadBuffer(size_t size);
 
     void BlitImage(Framebuffer* dst_framebuffer, ImageView& dst, ImageView& src,
                    const std::array<Offset2D, 2>& dst_region,