diff options
author | Fernando S <fsahmkow27@gmail.com> | 2023-11-26 18:33:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-26 18:33:05 +0100 |
commit | f21340f7aa60296c7b56e293b5f870b7efd3807d (patch) | |
tree | 9e2a8f9ba77be42bf7695b051f515e52481dd490 /src/video_core/renderer_vulkan/vk_buffer_cache.h | |
parent | Merge pull request #12180 from german77/cabinetmii (diff) | |
parent | Vulkan: Add a final barrier to the upload command buffer (diff) | |
download | yuzu-f21340f7aa60296c7b56e293b5f870b7efd3807d.tar yuzu-f21340f7aa60296c7b56e293b5f870b7efd3807d.tar.gz yuzu-f21340f7aa60296c7b56e293b5f870b7efd3807d.tar.bz2 yuzu-f21340f7aa60296c7b56e293b5f870b7efd3807d.tar.lz yuzu-f21340f7aa60296c7b56e293b5f870b7efd3807d.tar.xz yuzu-f21340f7aa60296c7b56e293b5f870b7efd3807d.tar.zst yuzu-f21340f7aa60296c7b56e293b5f870b7efd3807d.zip |
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_buffer_cache.h')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_buffer_cache.h | 21 |
1 files changed, 20 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 95446c732..4416a902f 100644 --- a/src/video_core/renderer_vulkan/vk_buffer_cache.h +++ b/src/video_core/renderer_vulkan/vk_buffer_cache.h @@ -5,6 +5,7 @@ #include "video_core/buffer_cache/buffer_cache_base.h" #include "video_core/buffer_cache/memory_tracker_base.h" +#include "video_core/buffer_cache/usage_tracker.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" @@ -34,6 +35,18 @@ public: return *buffer; } + [[nodiscard]] bool IsRegionUsed(u64 offset, u64 size) const noexcept { + return tracker.IsUsed(offset, size); + } + + void MarkUsage(u64 offset, u64 size) noexcept { + tracker.Track(offset, size); + } + + void ResetUsageTracking() noexcept { + tracker.Reset(); + } + operator VkBuffer() const noexcept { return *buffer; } @@ -49,6 +62,7 @@ private: const Device* device{}; vk::Buffer buffer; std::vector<BufferView> views; + VideoCommon::UsageTracker tracker; }; class QuadArrayIndexBuffer; @@ -67,6 +81,8 @@ public: ComputePassDescriptorQueue& compute_pass_descriptor_queue, DescriptorPool& descriptor_pool); + void TickFrame(VideoCommon::SlotVector<Buffer>& slot_buffers) noexcept; + void Finish(); u64 GetDeviceLocalMemory() const; @@ -79,12 +95,15 @@ public: [[nodiscard]] StagingBufferRef DownloadStagingBuffer(size_t size, bool deferred = false); + bool CanReorderUpload(const Buffer& buffer, std::span<const VideoCommon::BufferCopy> copies); + void FreeDeferredStagingBuffer(StagingBufferRef& ref); void PreCopyBarrier(); void CopyBuffer(VkBuffer src_buffer, VkBuffer dst_buffer, - std::span<const VideoCommon::BufferCopy> copies, bool barrier = true); + std::span<const VideoCommon::BufferCopy> copies, bool barrier, + bool can_reorder_upload = false); void PostCopyBarrier(); |