From 432f045dbaa9476b31530478d812067c9291f309 Mon Sep 17 00:00:00 2001
From: ReinUsesLisp <reinuseslisp@airmail.cc>
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<Offset2D, 2>& dst_region,