diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 9e00175d80f..5abf26190e9 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -4109,6 +4109,7 @@ tu_create_cmd_buffer(struct vk_command_pool *pool, u_trace_init(&cmd_buffer->trace, &device->trace_context); u_trace_init(&cmd_buffer->rp_trace, &device->trace_context); + u_trace_init(&cmd_buffer->pre_chain.rp_trace, &device->trace_context); cmd_buffer->trace_renderpass_start = u_trace_begin_iterator(&cmd_buffer->rp_trace); new (&cmd_buffer->autotune_ctx) tu_autotune::cmd_buf_ctx(*device->autotune); @@ -4159,6 +4160,7 @@ tu_cmd_buffer_destroy(struct vk_command_buffer *vk_cmd_buffer) u_trace_fini(&cmd_buffer->trace); u_trace_fini(&cmd_buffer->rp_trace); + u_trace_fini(&cmd_buffer->pre_chain.rp_trace); cmd_buffer->autotune_ctx.~cmd_buf_ctx(); @@ -4267,6 +4269,9 @@ tu_reset_cmd_buffer(struct vk_command_buffer *vk_cmd_buffer, u_trace_init(&cmd_buffer->trace, &cmd_buffer->device->trace_context); u_trace_fini(&cmd_buffer->rp_trace); u_trace_init(&cmd_buffer->rp_trace, &cmd_buffer->device->trace_context); + u_trace_fini(&cmd_buffer->pre_chain.rp_trace); + u_trace_init(&cmd_buffer->pre_chain.rp_trace, + &cmd_buffer->device->trace_context); cmd_buffer->trace_renderpass_start = u_trace_begin_iterator(&cmd_buffer->rp_trace); diff --git a/src/util/perf/u_trace.c b/src/util/perf/u_trace.c index c5c25eb67e3..c3698a04c12 100644 --- a/src/util/perf/u_trace.c +++ b/src/util/perf/u_trace.c @@ -796,11 +796,13 @@ u_trace_init(struct u_trace *ut, struct u_trace_context *utctx) void u_trace_move(struct u_trace *dst, struct u_trace *src) { + u_trace_fini(dst); + dst->utctx = src->utctx; list_replace(&src->trace_chunks, &dst->trace_chunks); dst->num_traces = src->num_traces; src->num_traces = 0; - list_delinit(&src->trace_chunks); + list_inithead(&src->trace_chunks); } void