mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
tu: Don't leak pre_chain.rp_trace, and correct u_trace_move
pre_chain.rp_trace usage relied on a bunch of bad assumptions and together with u_trace_move didn't cause issues until u_trace is started to be refactored. Fixing those bad assumptions and correctly initializing and freeing pre_chain.rp_trace also requires fixing u_trace_move at the same time. u_trace_move fixes: - If dst had trace chunks in it - we may have leaked them. - The correct list move pattern is "list_replace -> list_inithead" not "list_replace -> list_delinit" Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
This commit is contained in:
parent
27c870a283
commit
0a1539d0c0
2 changed files with 8 additions and 1 deletions
|
|
@ -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->trace, &device->trace_context);
|
||||||
u_trace_init(&cmd_buffer->rp_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 =
|
cmd_buffer->trace_renderpass_start =
|
||||||
u_trace_begin_iterator(&cmd_buffer->rp_trace);
|
u_trace_begin_iterator(&cmd_buffer->rp_trace);
|
||||||
new (&cmd_buffer->autotune_ctx) tu_autotune::cmd_buf_ctx(*device->autotune);
|
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->trace);
|
||||||
u_trace_fini(&cmd_buffer->rp_trace);
|
u_trace_fini(&cmd_buffer->rp_trace);
|
||||||
|
u_trace_fini(&cmd_buffer->pre_chain.rp_trace);
|
||||||
|
|
||||||
cmd_buffer->autotune_ctx.~cmd_buf_ctx();
|
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_init(&cmd_buffer->trace, &cmd_buffer->device->trace_context);
|
||||||
u_trace_fini(&cmd_buffer->rp_trace);
|
u_trace_fini(&cmd_buffer->rp_trace);
|
||||||
u_trace_init(&cmd_buffer->rp_trace, &cmd_buffer->device->trace_context);
|
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 =
|
cmd_buffer->trace_renderpass_start =
|
||||||
u_trace_begin_iterator(&cmd_buffer->rp_trace);
|
u_trace_begin_iterator(&cmd_buffer->rp_trace);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -796,11 +796,13 @@ u_trace_init(struct u_trace *ut, struct u_trace_context *utctx)
|
||||||
void
|
void
|
||||||
u_trace_move(struct u_trace *dst, struct u_trace *src)
|
u_trace_move(struct u_trace *dst, struct u_trace *src)
|
||||||
{
|
{
|
||||||
|
u_trace_fini(dst);
|
||||||
|
|
||||||
dst->utctx = src->utctx;
|
dst->utctx = src->utctx;
|
||||||
list_replace(&src->trace_chunks, &dst->trace_chunks);
|
list_replace(&src->trace_chunks, &dst->trace_chunks);
|
||||||
dst->num_traces = src->num_traces;
|
dst->num_traces = src->num_traces;
|
||||||
src->num_traces = 0;
|
src->num_traces = 0;
|
||||||
list_delinit(&src->trace_chunks);
|
list_inithead(&src->trace_chunks);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue