diff --git a/src/gui/rhi/qrhivulkan.cpp b/src/gui/rhi/qrhivulkan.cpp index 4f6af6e41bf..cbca8c578dd 100644 --- a/src/gui/rhi/qrhivulkan.cpp +++ b/src/gui/rhi/qrhivulkan.cpp @@ -2789,18 +2789,17 @@ QRhi::FrameOpResult QRhiVulkan::endAndSubmitPrimaryCommandBuffer(VkCommandBuffer if (signalSem) signalSemaphoresForQueueSubmit.append(*signalSem); + submitInfo.waitSemaphoreCount = uint32_t(waitSemaphoresForQueueSubmit.count()); if (!waitSemaphoresForQueueSubmit.isEmpty()) { - submitInfo.waitSemaphoreCount = uint32_t(waitSemaphoresForQueueSubmit.count()); submitInfo.pWaitSemaphores = waitSemaphoresForQueueSubmit.constData(); + semaphoresWaitMasksForQueueSubmit.resize(waitSemaphoresForQueueSubmit.count(), VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT); + submitInfo.pWaitDstStageMask = semaphoresWaitMasksForQueueSubmit.constData(); } + submitInfo.signalSemaphoreCount = uint32_t(signalSemaphoresForQueueSubmit.count()); if (!signalSemaphoresForQueueSubmit.isEmpty()) { - submitInfo.signalSemaphoreCount = uint32_t(signalSemaphoresForQueueSubmit.count()); submitInfo.pSignalSemaphores = signalSemaphoresForQueueSubmit.constData(); } - VkPipelineStageFlags psf = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; - submitInfo.pWaitDstStageMask = &psf; - err = df->vkQueueSubmit(gfxQueue, 1, &submitInfo, cmdFence); waitSemaphoresForQueueSubmit.clear(); diff --git a/src/gui/rhi/qrhivulkan_p.h b/src/gui/rhi/qrhivulkan_p.h index c987dd2c501..75cdf0dd7d1 100644 --- a/src/gui/rhi/qrhivulkan_p.h +++ b/src/gui/rhi/qrhivulkan_p.h @@ -1079,6 +1079,7 @@ public: #endif QVarLengthArray waitSemaphoresForQueueSubmit; + QVarLengthArray semaphoresWaitMasksForQueueSubmit; QVarLengthArray signalSemaphoresForQueueSubmit; QVarLengthArray waitSemaphoresForPresent; };