diff options
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_compute_pipeline.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | 14 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp index f89b84c6e..6dc52e399 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp | |||
| @@ -159,7 +159,7 @@ void ComputePipeline::Configure(Tegra::Engines::KeplerCompute& kepler_compute, | |||
| 159 | } | 159 | } |
| 160 | } | 160 | } |
| 161 | for (const auto& desc : info.image_descriptors) { | 161 | for (const auto& desc : info.image_descriptors) { |
| 162 | add_image(desc, true); | 162 | add_image(desc, desc.is_written); |
| 163 | } | 163 | } |
| 164 | texture_cache.FillComputeImageViews(std::span(views.data(), views.size())); | 164 | texture_cache.FillComputeImageViews(std::span(views.data(), views.size())); |
| 165 | 165 | ||
diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index 4efb5d735..c29bab678 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | |||
| @@ -322,20 +322,24 @@ void GraphicsPipeline::ConfigureImpl(bool is_indexed) { | |||
| 322 | } | 322 | } |
| 323 | return TexturePair(gpu_memory.Read<u32>(addr), via_header_index); | 323 | return TexturePair(gpu_memory.Read<u32>(addr), via_header_index); |
| 324 | }}; | 324 | }}; |
| 325 | const auto add_image{[&](const auto& desc) { | 325 | const auto add_image{[&](const auto& desc, bool blacklist) LAMBDA_FORCEINLINE { |
| 326 | for (u32 index = 0; index < desc.count; ++index) { | 326 | for (u32 index = 0; index < desc.count; ++index) { |
| 327 | const auto handle{read_handle(desc, index)}; | 327 | const auto handle{read_handle(desc, index)}; |
| 328 | views[view_index++] = {handle.first}; | 328 | views[view_index++] = { |
| 329 | .index = handle.first, | ||
| 330 | .blacklist = blacklist, | ||
| 331 | .id = {}, | ||
| 332 | }; | ||
| 329 | } | 333 | } |
| 330 | }}; | 334 | }}; |
| 331 | if constexpr (Spec::has_texture_buffers) { | 335 | if constexpr (Spec::has_texture_buffers) { |
| 332 | for (const auto& desc : info.texture_buffer_descriptors) { | 336 | for (const auto& desc : info.texture_buffer_descriptors) { |
| 333 | add_image(desc); | 337 | add_image(desc, false); |
| 334 | } | 338 | } |
| 335 | } | 339 | } |
| 336 | if constexpr (Spec::has_image_buffers) { | 340 | if constexpr (Spec::has_image_buffers) { |
| 337 | for (const auto& desc : info.image_buffer_descriptors) { | 341 | for (const auto& desc : info.image_buffer_descriptors) { |
| 338 | add_image(desc); | 342 | add_image(desc, false); |
| 339 | } | 343 | } |
| 340 | } | 344 | } |
| 341 | for (const auto& desc : info.texture_descriptors) { | 345 | for (const auto& desc : info.texture_descriptors) { |
| @@ -349,7 +353,7 @@ void GraphicsPipeline::ConfigureImpl(bool is_indexed) { | |||
| 349 | } | 353 | } |
| 350 | if constexpr (Spec::has_images) { | 354 | if constexpr (Spec::has_images) { |
| 351 | for (const auto& desc : info.image_descriptors) { | 355 | for (const auto& desc : info.image_descriptors) { |
| 352 | add_image(desc); | 356 | add_image(desc, desc.is_written); |
| 353 | } | 357 | } |
| 354 | } | 358 | } |
| 355 | }}; | 359 | }}; |