diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index d5aaed7fbfc..5b9ceca4cd4 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -1445,6 +1445,8 @@ tu_cmd_render_tiles(struct tu_cmd_buffer *cmd, tu6_emit_tile_store(cmd, &cmd->tile_store_cs); tu_cs_end(&cmd->tile_store_cs); + cmd->trace_renderpass_end = u_trace_end_iterator(&cmd->trace); + tu6_tile_render_begin(cmd, &cmd->cs, autotune_result); /* Note: we reverse the order of walking the pipes and tiles on every @@ -1484,6 +1486,7 @@ tu_cmd_render_tiles(struct tu_cmd_buffer *cmd, trace_end_render_pass(&cmd->trace, &cmd->cs, fb, tiling); + /* tu6_render_tile has cloned these tracepoints for each tile */ if (!u_trace_iterator_equal(cmd->trace_renderpass_start, cmd->trace_renderpass_end)) u_trace_disable_event_range(cmd->trace_renderpass_start, cmd->trace_renderpass_end); @@ -1498,6 +1501,8 @@ static void tu_cmd_render_sysmem(struct tu_cmd_buffer *cmd, struct tu_renderpass_result *autotune_result) { + cmd->trace_renderpass_end = u_trace_end_iterator(&cmd->trace); + tu6_sysmem_render_begin(cmd, &cmd->cs, autotune_result); trace_start_draw_ib_sysmem(&cmd->trace, &cmd->cs); @@ -3668,7 +3673,6 @@ tu_CmdExecuteCommands(VkCommandBuffer commandBuffer, cmd->trace_renderpass_start = u_trace_end_iterator(&cmd->trace); tu_append_pre_chain(cmd, secondary); - cmd->trace_renderpass_end = u_trace_end_iterator(&cmd->trace); /* We're about to render, so we need to end the command stream * in case there were any extra commands generated by copying @@ -3684,6 +3688,7 @@ tu_CmdExecuteCommands(VkCommandBuffer commandBuffer, * started in the primary, so we have to move the state to * `pre_chain`. */ + cmd->trace_renderpass_end = u_trace_end_iterator(&cmd->trace); tu_save_pre_chain(cmd); cmd->state.suspend_resume = SR_AFTER_PRE_CHAIN; break; @@ -5242,8 +5247,6 @@ tu_CmdEndRenderPass2(VkCommandBuffer commandBuffer, return; } - cmd_buffer->trace_renderpass_end = u_trace_end_iterator(&cmd_buffer->trace); - tu_cs_end(&cmd_buffer->draw_cs); tu_cs_end(&cmd_buffer->draw_epilogue_cs); tu_cmd_render(cmd_buffer); @@ -5262,8 +5265,6 @@ tu_CmdEndRendering(VkCommandBuffer commandBuffer) { TU_FROM_HANDLE(tu_cmd_buffer, cmd_buffer, commandBuffer); - cmd_buffer->trace_renderpass_end = u_trace_end_iterator(&cmd_buffer->trace); - if (cmd_buffer->state.suspending) cmd_buffer->state.suspended_pass.lrz = cmd_buffer->state.lrz; @@ -5272,6 +5273,7 @@ tu_CmdEndRendering(VkCommandBuffer commandBuffer) tu_cs_end(&cmd_buffer->draw_epilogue_cs); if (cmd_buffer->state.suspend_resume == SR_IN_PRE_CHAIN) { + cmd_buffer->trace_renderpass_end = u_trace_end_iterator(&cmd_buffer->trace); tu_save_pre_chain(cmd_buffer); } else { tu_cmd_render(cmd_buffer);