From 45afeaa67b7a1a4dd2ad7fc8b7e6f9581a5080ac Mon Sep 17 00:00:00 2001 From: goeiecool9999 <7033575+goeiecool9999@users.noreply.github.com> Date: Tue, 5 Nov 2024 01:16:22 +0100 Subject: [PATCH] Vulkan: mark descriptor samplers on draw --- src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp index c42ceb66..34dfdff8 100644 --- a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp +++ b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp @@ -1539,6 +1539,12 @@ void VulkanRenderer::draw_execute(uint32 baseVertex, uint32 baseInstance, uint32 draw_updateVkBlendConstants(); // update descriptor sets + auto markSamplers = [this](VkDescriptorSetInfo* info) { + if(!info) + return; + for(auto& sampler : info->m_vkObjSamplers) + sampler->flagForCurrentCommandBuffer(); + }; uint32_t dynamicOffsets[17 * 2]; if (vertexDS && pixelDS) { @@ -1585,6 +1591,9 @@ void VulkanRenderer::draw_execute(uint32 baseVertex, uint32 baseInstance, uint32 vkObjPipeline->pipeline_layout, 2, 1, &geometryDS->m_vkObjDescriptorSet->descriptorSet, numDynOffsets, dynamicOffsets); } + markSamplers(vertexDS); + markSamplers(pixelDS); + markSamplers(geometryDS); // draw if (hostIndexType != INDEX_TYPE::NONE)