diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index 753a87905eb..f7078b2313c 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -2542,26 +2542,30 @@ VkResult pvr_BeginCommandBuffer(VkCommandBuffer commandBuffer, ~VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT; } - if (cmd_buffer->usage_flags & - VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) { - const VkCommandBufferInheritanceInfo *inheritance_info = - pBeginInfo->pInheritanceInfo; - struct pvr_render_pass *pass; + if (cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_SECONDARY) { + if (cmd_buffer->usage_flags & + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) { + const VkCommandBufferInheritanceInfo *inheritance_info = + pBeginInfo->pInheritanceInfo; + struct pvr_render_pass *pass; - pass = pvr_render_pass_from_handle(inheritance_info->renderPass); - state->render_pass_info.pass = pass; - state->render_pass_info.framebuffer = - pvr_framebuffer_from_handle(inheritance_info->framebuffer); - state->render_pass_info.subpass_idx = inheritance_info->subpass; - state->render_pass_info.isp_userpass = - pass->subpasses[inheritance_info->subpass].isp_userpass; + pass = pvr_render_pass_from_handle(inheritance_info->renderPass); + state->render_pass_info.pass = pass; + state->render_pass_info.framebuffer = + pvr_framebuffer_from_handle(inheritance_info->framebuffer); + state->render_pass_info.subpass_idx = inheritance_info->subpass; + state->render_pass_info.isp_userpass = + pass->subpasses[inheritance_info->subpass].isp_userpass; - result = - pvr_cmd_buffer_start_sub_cmd(cmd_buffer, PVR_SUB_CMD_TYPE_GRAPHICS); - if (result != VK_SUCCESS) - return result; + result = + pvr_cmd_buffer_start_sub_cmd(cmd_buffer, PVR_SUB_CMD_TYPE_GRAPHICS); + if (result != VK_SUCCESS) + return result; - state->vis_test_enabled = inheritance_info->occlusionQueryEnable; + state->vis_test_enabled = inheritance_info->occlusionQueryEnable; + } + + state->dirty.isp_userpass = true; } util_dynarray_init(&state->query_indices, NULL);