summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_buffer_cache.h
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2022-11-20 00:09:56 +0100
committerFernando Sahmkow <fsahmkow27@gmail.com>2023-04-29 00:46:31 +0200
commita16c2611316e534bda310f99319f4e8c74c49c92 (patch)
tree906e44bc1bfcd358ecf7510a99adff05394c2846 /src/video_core/renderer_vulkan/vk_buffer_cache.h
parentMerge pull request #10051 from liamwhite/surface-capabilities (diff)
downloadyuzu-a16c2611316e534bda310f99319f4e8c74c49c92.tar
yuzu-a16c2611316e534bda310f99319f4e8c74c49c92.tar.gz
yuzu-a16c2611316e534bda310f99319f4e8c74c49c92.tar.bz2
yuzu-a16c2611316e534bda310f99319f4e8c74c49c92.tar.lz
yuzu-a16c2611316e534bda310f99319f4e8c74c49c92.tar.xz
yuzu-a16c2611316e534bda310f99319f4e8c74c49c92.tar.zst
yuzu-a16c2611316e534bda310f99319f4e8c74c49c92.zip
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_buffer_cache.h')
-rw-r--r--src/video_core/renderer_vulkan/vk_buffer_cache.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/vk_buffer_cache.h b/src/video_core/renderer_vulkan/vk_buffer_cache.h
index 183b33632..05968e6a6 100644
--- a/src/video_core/renderer_vulkan/vk_buffer_cache.h
+++ b/src/video_core/renderer_vulkan/vk_buffer_cache.h
@@ -4,6 +4,7 @@
#pragma once
#include "video_core/buffer_cache/buffer_cache.h"
+#include "video_core/buffer_cache/memory_tracker_base.h"
#include "video_core/engines/maxwell_3d.h"
#include "video_core/renderer_vulkan/vk_compute_pass.h"
#include "video_core/renderer_vulkan/vk_staging_buffer_pool.h"
@@ -75,7 +76,9 @@ public:
[[nodiscard]] StagingBufferRef UploadStagingBuffer(size_t size);
- [[nodiscard]] StagingBufferRef DownloadStagingBuffer(size_t size);
+ [[nodiscard]] StagingBufferRef DownloadStagingBuffer(size_t size, bool deferred = false);
+
+ void FreeDeferredStagingBuffer(StagingBufferRef& ref);
void PreCopyBarrier();
@@ -142,6 +145,8 @@ private:
struct BufferCacheParams {
using Runtime = Vulkan::BufferCacheRuntime;
using Buffer = Vulkan::Buffer;
+ using Async_Buffer = Vulkan::StagingBufferRef;
+ using MemoryTracker = VideoCommon::MemoryTrackerBase<VideoCore::RasterizerInterface>;
static constexpr bool IS_OPENGL = false;
static constexpr bool HAS_PERSISTENT_UNIFORM_BUFFER_BINDINGS = false;
@@ -150,6 +155,7 @@ struct BufferCacheParams {
static constexpr bool NEEDS_BIND_STORAGE_INDEX = false;
static constexpr bool USE_MEMORY_MAPS = true;
static constexpr bool SEPARATE_IMAGE_BUFFER_BINDINGS = false;
+ static constexpr bool IMPLEMENTS_ASYNC_DOWNLOADS = true;
};
using BufferCache = VideoCommon::BufferCache<BufferCacheParams>;