diff options
| author | 2023-05-22 01:13:47 -0400 | |
|---|---|---|
| committer | 2023-05-22 18:10:16 -0400 | |
| commit | 8758932031ff4836652e7577ec566fd733f46e0b (patch) | |
| tree | 05e92cf0f69862e7a59cf55744acc9657afa2a86 /src/video_core/renderer_vulkan | |
| parent | Merge pull request #10392 from danilaml/update-cubeb-again (diff) | |
| download | yuzu-8758932031ff4836652e7577ec566fd733f46e0b.tar.gz yuzu-8758932031ff4836652e7577ec566fd733f46e0b.tar.xz yuzu-8758932031ff4836652e7577ec566fd733f46e0b.zip | |
renderer_vulkan: barrier attachment feedback loops
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | 3 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_texture_cache.h | 2 |
3 files changed, 8 insertions, 1 deletions
diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index f1bcd5cd6..506b78f08 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | |||
| @@ -481,12 +481,13 @@ void GraphicsPipeline::ConfigureImpl(bool is_indexed) { | |||
| 481 | if constexpr (Spec::enabled_stages[4]) { | 481 | if constexpr (Spec::enabled_stages[4]) { |
| 482 | prepare_stage(4); | 482 | prepare_stage(4); |
| 483 | } | 483 | } |
| 484 | texture_cache.UpdateRenderTargets(false); | ||
| 485 | texture_cache.CheckFeedbackLoop(views); | ||
| 484 | ConfigureDraw(rescaling, render_area); | 486 | ConfigureDraw(rescaling, render_area); |
| 485 | } | 487 | } |
| 486 | 488 | ||
| 487 | void GraphicsPipeline::ConfigureDraw(const RescalingPushConstant& rescaling, | 489 | void GraphicsPipeline::ConfigureDraw(const RescalingPushConstant& rescaling, |
| 488 | const RenderAreaPushConstant& render_area) { | 490 | const RenderAreaPushConstant& render_area) { |
| 489 | texture_cache.UpdateRenderTargets(false); | ||
| 490 | scheduler.RequestRenderpass(texture_cache.GetFramebuffer()); | 491 | scheduler.RequestRenderpass(texture_cache.GetFramebuffer()); |
| 491 | 492 | ||
| 492 | if (!is_built.load(std::memory_order::relaxed)) { | 493 | if (!is_built.load(std::memory_order::relaxed)) { |
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index 4d0481f2a..da5af25eb 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp | |||
| @@ -861,6 +861,10 @@ VkBuffer TextureCacheRuntime::GetTemporaryBuffer(size_t needed_size) { | |||
| 861 | return *buffers[level]; | 861 | return *buffers[level]; |
| 862 | } | 862 | } |
| 863 | 863 | ||
| 864 | void TextureCacheRuntime::BarrierFeedbackLoop() { | ||
| 865 | scheduler.RequestOutsideRenderPassOperationContext(); | ||
| 866 | } | ||
| 867 | |||
| 864 | void TextureCacheRuntime::ReinterpretImage(Image& dst, Image& src, | 868 | void TextureCacheRuntime::ReinterpretImage(Image& dst, Image& src, |
| 865 | std::span<const VideoCommon::ImageCopy> copies) { | 869 | std::span<const VideoCommon::ImageCopy> copies) { |
| 866 | std::vector<VkBufferImageCopy> vk_in_copies(copies.size()); | 870 | std::vector<VkBufferImageCopy> vk_in_copies(copies.size()); |
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.h b/src/video_core/renderer_vulkan/vk_texture_cache.h index 4166b3d20..0f7a5ffd4 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.h +++ b/src/video_core/renderer_vulkan/vk_texture_cache.h | |||
| @@ -103,6 +103,8 @@ public: | |||
| 103 | 103 | ||
| 104 | [[nodiscard]] VkBuffer GetTemporaryBuffer(size_t needed_size); | 104 | [[nodiscard]] VkBuffer GetTemporaryBuffer(size_t needed_size); |
| 105 | 105 | ||
| 106 | void BarrierFeedbackLoop(); | ||
| 107 | |||
| 106 | const Device& device; | 108 | const Device& device; |
| 107 | Scheduler& scheduler; | 109 | Scheduler& scheduler; |
| 108 | MemoryAllocator& memory_allocator; | 110 | MemoryAllocator& memory_allocator; |