diff options
| author | 2022-12-28 09:32:31 -0500 | |
|---|---|---|
| committer | 2023-01-03 22:52:15 -0500 | |
| commit | 03ccd8bf432e8b2c945b68f00e8fa88f67388098 (patch) | |
| tree | 446afdee8cfc6f5ec126bbdae7dbbe23b05d8550 /src/video_core/renderer_vulkan | |
| parent | Vulkan: Update blacklisting to latest driver versions. (diff) | |
| download | yuzu-03ccd8bf432e8b2c945b68f00e8fa88f67388098.tar.gz yuzu-03ccd8bf432e8b2c945b68f00e8fa88f67388098.tar.xz yuzu-03ccd8bf432e8b2c945b68f00e8fa88f67388098.zip | |
Texture Cache: Implement async texture downloads.
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 8 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.h | 6 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index a65bbeb1c..d39372ec4 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -812,8 +812,12 @@ StagingBufferRef TextureCacheRuntime::UploadStagingBuffer(size_t size) { | |||
| 812 | return staging_buffer_pool.Request(size, MemoryUsage::Upload); | 812 | return staging_buffer_pool.Request(size, MemoryUsage::Upload); |
| 813 | } | 813 | } |
| 814 | 814 | ||
| 815 | StagingBufferRef TextureCacheRuntime::DownloadStagingBuffer(size_t size) { | 815 | StagingBufferRef TextureCacheRuntime::DownloadStagingBuffer(size_t size, bool deferred) { |
| 816 | return staging_buffer_pool.Request(size, MemoryUsage::Download); | 816 | return staging_buffer_pool.Request(size, MemoryUsage::Download, deferred); |
| 817 | } | ||
| 818 | |||
| 819 | void TextureCacheRuntime::FreeDeferredStagingBuffer(StagingBufferRef& ref) { | ||
| 820 | staging_buffer_pool.FreeDeferred(ref); | ||
| 817 | } | 821 | } |
| 818 | 822 | ||
| 819 | bool TextureCacheRuntime::ShouldReinterpret(Image& dst, Image& src) { | 823 | bool TextureCacheRuntime::ShouldReinterpret(Image& dst, Image& src) { |
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.h b/src/video_core/renderer_vulkan/vk_texture_cache.h index 7ec0df134..1f27a3589 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.h +++ b/src/video_core/renderer_vulkan/vk_texture_cache.h | |||
| @@ -51,7 +51,9 @@ public: | |||
| 51 | 51 | ||
| 52 | StagingBufferRef UploadStagingBuffer(size_t size); | 52 | StagingBufferRef UploadStagingBuffer(size_t size); |
| 53 | 53 | ||
| 54 | StagingBufferRef DownloadStagingBuffer(size_t size); | 54 | StagingBufferRef DownloadStagingBuffer(size_t size, bool deferred = false); |
| 55 | |||
| 56 | void FreeDeferredStagingBuffer(StagingBufferRef& ref); | ||
| 55 | 57 | ||
| 56 | void TickFrame(); | 58 | void TickFrame(); |
| 57 | 59 | ||
| @@ -347,6 +349,7 @@ struct TextureCacheParams { | |||
| 347 | static constexpr bool FRAMEBUFFER_BLITS = false; | 349 | static constexpr bool FRAMEBUFFER_BLITS = false; |
| 348 | static constexpr bool HAS_EMULATED_COPIES = false; | 350 | static constexpr bool HAS_EMULATED_COPIES = false; |
| 349 | static constexpr bool HAS_DEVICE_MEMORY_INFO = true; | 351 | static constexpr bool HAS_DEVICE_MEMORY_INFO = true; |
| 352 | static constexpr bool IMPLEMENTS_ASYNC_DOWNLOADS = true; | ||
| 350 | 353 | ||
| 351 | using Runtime = Vulkan::TextureCacheRuntime; | 354 | using Runtime = Vulkan::TextureCacheRuntime; |
| 352 | using Image = Vulkan::Image; | 355 | using Image = Vulkan::Image; |
| @@ -354,6 +357,7 @@ struct TextureCacheParams { | |||
| 354 | using ImageView = Vulkan::ImageView; | 357 | using ImageView = Vulkan::ImageView; |
| 355 | using Sampler = Vulkan::Sampler; | 358 | using Sampler = Vulkan::Sampler; |
| 356 | using Framebuffer = Vulkan::Framebuffer; | 359 | using Framebuffer = Vulkan::Framebuffer; |
| 360 | using AsyncBuffer = Vulkan::StagingBufferRef; | ||
| 357 | }; | 361 | }; |
| 358 | 362 | ||
| 359 | using TextureCache = VideoCommon::TextureCache<TextureCacheParams>; | 363 | using TextureCache = VideoCommon::TextureCache<TextureCacheParams>; |