From 1c156f7fa9a031f6cd1603c435d61d6c0e3a76c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sat, 14 Sep 2024 10:07:20 -0400 Subject: [PATCH] radeonsi: clean up set_log_context code for all aux contexts Instead of allocating it and then leaking it, store the log context in si_screen. Also, the log context was only set for "general" instead of all aux contexts. Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_pipe.c | 13 ++++--------- src/gallium/drivers/radeonsi/si_pipe.h | 2 ++ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 0725134354b..4e466979de3 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -17,7 +17,6 @@ #include "util/disk_cache.h" #include "util/hex.h" #include "util/u_cpu_detect.h" -#include "util/u_log.h" #include "util/u_memory.h" #include "util/u_suballoc.h" #include "util/u_tests.h" @@ -841,12 +840,10 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, unsign if (status != PIPE_NO_RESET) { /* We lost the aux_context, create a new one */ unsigned context_flags = saux->context_flags; - struct u_log_context *aux_log = saux->log; - saux->b.set_log_context(&saux->b, NULL); saux->b.destroy(&saux->b); saux = (struct si_context *)si_create_context(&sscreen->b, context_flags); - saux->b.set_log_context(&saux->b, aux_log); + saux->b.set_log_context(&saux->b, &sscreen->aux_contexts[i].log); sscreen->aux_contexts[i].ctx = &saux->b; } @@ -1481,12 +1478,10 @@ static struct pipe_screen *radeonsi_screen_create_impl(struct radeon_winsys *ws, (compute ? PIPE_CONTEXT_COMPUTE_ONLY : 0)); if (sscreen->options.aux_debug) { - struct u_log_context *log = CALLOC_STRUCT(u_log_context); - u_log_context_init(log); + u_log_context_init(&sscreen->aux_contexts[i].log); - struct si_context *sctx = si_get_aux_context(&sscreen->aux_context.general); - sctx->b.set_log_context(&sctx->b, log); - si_put_aux_context_flush(&sscreen->aux_context.general); + struct pipe_context *ctx = sscreen->aux_contexts[i].ctx; + ctx->set_log_context(ctx, &sscreen->aux_contexts[i].log); } } diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h index 8fbb1321e5e..7bab2f596cc 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.h +++ b/src/gallium/drivers/radeonsi/si_pipe.h @@ -12,6 +12,7 @@ #include "winsys/radeon_winsys.h" #include "util/u_blitter.h" #include "util/u_idalloc.h" +#include "util/u_log.h" #include "util/u_suballoc.h" #include "util/u_threaded_context.h" #include "util/u_vertex_state_cache.h" @@ -498,6 +499,7 @@ struct radeon_saved_cs { struct si_aux_context { struct pipe_context *ctx; + struct u_log_context log; mtx_t lock; };