mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
turnip: Execute main cs for secondary command buffers
Previously, we only added the secondary command buffer's draw and draw epilogue command streams to the primary command buffer on vkCmdExecuteCommands. However, we also need to merge the primary cs for non-draw operations like vkCmdCopyBuffer and vkCmdBeginQuery. Fixes dEQP-VK.memory.pipeline_barrier.host_write_transfer_src.* and various other tests in dEQP-VK.api.command_buffers.*. Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3988> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3988>
This commit is contained in:
parent
5715a61fa9
commit
69628ababb
1 changed files with 25 additions and 10 deletions
|
|
@ -2400,17 +2400,32 @@ tu_CmdExecuteCommands(VkCommandBuffer commandBuffer,
|
|||
break;
|
||||
}
|
||||
|
||||
result = tu_cs_add_entries(&cmd->draw_cs, &secondary->draw_cs);
|
||||
if (result != VK_SUCCESS) {
|
||||
cmd->record_result = result;
|
||||
break;
|
||||
}
|
||||
if (secondary->usage_flags &
|
||||
VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) {
|
||||
assert(tu_cs_is_empty(&secondary->cs));
|
||||
|
||||
result = tu_cs_add_entries(&cmd->draw_epilogue_cs,
|
||||
&secondary->draw_epilogue_cs);
|
||||
if (result != VK_SUCCESS) {
|
||||
cmd->record_result = result;
|
||||
break;
|
||||
result = tu_cs_add_entries(&cmd->draw_cs, &secondary->draw_cs);
|
||||
if (result != VK_SUCCESS) {
|
||||
cmd->record_result = result;
|
||||
break;
|
||||
}
|
||||
|
||||
result = tu_cs_add_entries(&cmd->draw_epilogue_cs,
|
||||
&secondary->draw_epilogue_cs);
|
||||
if (result != VK_SUCCESS) {
|
||||
cmd->record_result = result;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
assert(tu_cs_is_empty(&secondary->draw_cs));
|
||||
assert(tu_cs_is_empty(&secondary->draw_epilogue_cs));
|
||||
|
||||
for (uint32_t j = 0; j < secondary->cs.bo_count; j++) {
|
||||
tu_bo_list_add(&cmd->bo_list, secondary->cs.bos[j],
|
||||
MSM_SUBMIT_BO_READ | MSM_SUBMIT_BO_DUMP);
|
||||
}
|
||||
|
||||
tu_cs_emit_call(&cmd->cs, &secondary->cs);
|
||||
}
|
||||
}
|
||||
cmd->state.dirty = ~0u; /* TODO: set dirty only what needs to be */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue