From 432f045dbaa9476b31530478d812067c9291f309 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Sun, 3 Jan 2021 21:05:59 -0300 Subject: [PATCH] vk_texture_cache: Use Download memory types for texture flushes Use the Download memory type where it matters. --- src/video_core/renderer_vulkan/vk_texture_cache.cpp | 10 +++++++++- src/video_core/renderer_vulkan/vk_texture_cache.h | 5 +---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index a55f84045a..ab14922d7a 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/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, }; diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.h b/src/video_core/renderer_vulkan/vk_texture_cache.h index 5da791a56f..a55d405d1c 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.h +++ b/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& dst_region,