mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 20:00:11 +01:00
radv: fix dynamic rendering inheritance if the subpass index isn't 0
The driver will always create only one subpass in the render pass for inheritance but the subpass index isn't always zero. This fixes dEQP-VK.multiview.dynamic_rendering.secondary_cmd_buffer*. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14109>
This commit is contained in:
parent
43022ecc3a
commit
841949e50b
1 changed files with 15 additions and 10 deletions
|
|
@ -4372,14 +4372,9 @@ radv_ResetCommandBuffer(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags
|
|||
|
||||
static void
|
||||
radv_inherit_dynamic_rendering(struct radv_cmd_buffer *cmd_buffer,
|
||||
const VkCommandBufferInheritanceInfo *inherit_info)
|
||||
const VkCommandBufferInheritanceInfo *inherit_info,
|
||||
const VkCommandBufferInheritanceRenderingInfoKHR *dyn_info)
|
||||
{
|
||||
const VkCommandBufferInheritanceRenderingInfoKHR *dyn_info =
|
||||
vk_find_struct_const(inherit_info->pNext, COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR);
|
||||
|
||||
if (!dyn_info)
|
||||
return;
|
||||
|
||||
const VkAttachmentSampleCountInfoAMD *sample_info =
|
||||
vk_find_struct_const(inherit_info->pNext, ATTACHMENT_SAMPLE_COUNT_INFO_AMD);
|
||||
VkResult result;
|
||||
|
|
@ -4503,16 +4498,26 @@ radv_BeginCommandBuffer(VkCommandBuffer commandBuffer, const VkCommandBufferBegi
|
|||
|
||||
if (cmd_buffer->level == VK_COMMAND_BUFFER_LEVEL_SECONDARY &&
|
||||
(pBeginInfo->flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT)) {
|
||||
struct radv_subpass *subpass;
|
||||
|
||||
assert(pBeginInfo->pInheritanceInfo);
|
||||
|
||||
cmd_buffer->state.framebuffer =
|
||||
radv_framebuffer_from_handle(pBeginInfo->pInheritanceInfo->framebuffer);
|
||||
cmd_buffer->state.pass =
|
||||
radv_render_pass_from_handle(pBeginInfo->pInheritanceInfo->renderPass);
|
||||
|
||||
radv_inherit_dynamic_rendering(cmd_buffer, pBeginInfo->pInheritanceInfo);
|
||||
const VkCommandBufferInheritanceRenderingInfoKHR *dyn_info =
|
||||
vk_find_struct_const(pBeginInfo->pInheritanceInfo->pNext,
|
||||
COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR);
|
||||
|
||||
struct radv_subpass *subpass =
|
||||
&cmd_buffer->state.pass->subpasses[pBeginInfo->pInheritanceInfo->subpass];
|
||||
if (dyn_info) {
|
||||
radv_inherit_dynamic_rendering(cmd_buffer, pBeginInfo->pInheritanceInfo, dyn_info);
|
||||
subpass = &cmd_buffer->state.pass->subpasses[0];
|
||||
} else {
|
||||
assert(pBeginInfo->pInheritanceInfo->subpass < cmd_buffer->state.pass->subpass_count);
|
||||
subpass = &cmd_buffer->state.pass->subpasses[pBeginInfo->pInheritanceInfo->subpass];
|
||||
}
|
||||
|
||||
if (cmd_buffer->state.framebuffer) {
|
||||
result = radv_cmd_state_setup_attachments(cmd_buffer, cmd_buffer->state.pass, NULL, NULL);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue