radv: ignore subpass self-dependencies

Unnecessary as they allow the app to call vkCmdPipelineBarrier()
inside the render pass.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Samuel Pitoiset 2018-11-20 13:48:34 +01:00
parent 8e73b57634
commit 457ac6ce1e

View file

@ -337,7 +337,17 @@ VkResult radv_CreateRenderPass2KHR(
}
for (unsigned i = 0; i < pCreateInfo->dependencyCount; ++i) {
uint32_t src = pCreateInfo->pDependencies[i].srcSubpass;
uint32_t dst = pCreateInfo->pDependencies[i].dstSubpass;
/* Ignore subpass self-dependencies as they allow the app to
* call vkCmdPipelineBarrier() inside the render pass and the
* driver should only do the barrier when called, not when
* starting the render pass.
*/
if (src == dst)
continue;
if (dst == VK_SUBPASS_EXTERNAL) {
pass->end_barrier.src_stage_mask = pCreateInfo->pDependencies[i].srcStageMask;
pass->end_barrier.src_access_mask = pCreateInfo->pDependencies[i].srcAccessMask;