diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-01-06 21:58:46 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-01-06 21:58:46 +0100 |
commit | 85bb6a6f0847793c8bbb2870768c56e4a542c3b7 (patch) | |
tree | 337a292eabf521ad1f36d371363f9b3418c8b195 /src/video_core/renderer_vulkan/vk_buffer_cache.h | |
parent | Merge pull request #3257 from degasus/no_busy_loops (diff) | |
download | yuzu-85bb6a6f0847793c8bbb2870768c56e4a542c3b7.tar yuzu-85bb6a6f0847793c8bbb2870768c56e4a542c3b7.tar.gz yuzu-85bb6a6f0847793c8bbb2870768c56e4a542c3b7.tar.bz2 yuzu-85bb6a6f0847793c8bbb2870768c56e4a542c3b7.tar.lz yuzu-85bb6a6f0847793c8bbb2870768c56e4a542c3b7.tar.xz yuzu-85bb6a6f0847793c8bbb2870768c56e4a542c3b7.tar.zst yuzu-85bb6a6f0847793c8bbb2870768c56e4a542c3b7.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_buffer_cache.h | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/src/video_core/renderer_vulkan/vk_buffer_cache.h b/src/video_core/renderer_vulkan/vk_buffer_cache.h index daa8ccf66..bc6e584cf 100644 --- a/src/video_core/renderer_vulkan/vk_buffer_cache.h +++ b/src/video_core/renderer_vulkan/vk_buffer_cache.h @@ -3,107 +3,3 @@ // Refer to the license.txt file included. #pragma once - -#include <memory> -#include <tuple> - -#include "common/common_types.h" -#include "video_core/gpu.h" -#include "video_core/rasterizer_cache.h" -#include "video_core/renderer_vulkan/declarations.h" -#include "video_core/renderer_vulkan/vk_scheduler.h" - -namespace Memory { -class Memory; -} - -namespace Tegra { -class MemoryManager; -} - -namespace Vulkan { - -class VKDevice; -class VKFence; -class VKMemoryManager; -class VKStreamBuffer; - -class CachedBufferEntry final : public RasterizerCacheObject { -public: - explicit CachedBufferEntry(VAddr cpu_addr, std::size_t size, u64 offset, std::size_t alignment, - u8* host_ptr); - - VAddr GetCpuAddr() const override { - return cpu_addr; - } - - std::size_t GetSizeInBytes() const override { - return size; - } - - std::size_t GetSize() const { - return size; - } - - u64 GetOffset() const { - return offset; - } - - std::size_t GetAlignment() const { - return alignment; - } - -private: - VAddr cpu_addr{}; - std::size_t size{}; - u64 offset{}; - std::size_t alignment{}; -}; - -class VKBufferCache final : public RasterizerCache<std::shared_ptr<CachedBufferEntry>> { -public: - explicit VKBufferCache(Tegra::MemoryManager& tegra_memory_manager, Memory::Memory& cpu_memory_, - VideoCore::RasterizerInterface& rasterizer, const VKDevice& device, - VKMemoryManager& memory_manager, VKScheduler& scheduler, u64 size); - ~VKBufferCache(); - - /// Uploads data from a guest GPU address. Returns host's buffer offset where it's been - /// allocated. - u64 UploadMemory(GPUVAddr gpu_addr, std::size_t size, u64 alignment = 4, bool cache = true); - - /// Uploads from a host memory. Returns host's buffer offset where it's been allocated. - u64 UploadHostMemory(const u8* raw_pointer, std::size_t size, u64 alignment = 4); - - /// Reserves memory to be used by host's CPU. Returns mapped address and offset. - std::tuple<u8*, u64> ReserveMemory(std::size_t size, u64 alignment = 4); - - /// Reserves a region of memory to be used in subsequent upload/reserve operations. - void Reserve(std::size_t max_size); - - /// Ensures that the set data is sent to the device. - void Send(); - - /// Returns the buffer cache handle. - vk::Buffer GetBuffer() const { - return buffer_handle; - } - -protected: - // We do not have to flush this cache as things in it are never modified by us. - void FlushObjectInner(const std::shared_ptr<CachedBufferEntry>& object) override {} - -private: - void AlignBuffer(std::size_t alignment); - - Tegra::MemoryManager& tegra_memory_manager; - Memory::Memory& cpu_memory; - - std::unique_ptr<VKStreamBuffer> stream_buffer; - vk::Buffer buffer_handle; - - u8* buffer_ptr = nullptr; - u64 buffer_offset = 0; - u64 buffer_offset_base = 0; -}; - -} // namespace Vulkan |