From 6189af1ddb435986baca20410e1eb0b2e605fd59 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 18 Oct 2022 11:36:58 +0200 Subject: [PATCH] radeonsi: store the shader gpu adress in si_shader MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/radeonsi/si_shader.c | 1 + src/gallium/drivers/radeonsi/si_shader.h | 4 ++++ src/gallium/drivers/radeonsi/si_state_draw.cpp | 2 ++ 3 files changed, 7 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index c9eb13927a7..de21a805b10 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -951,6 +951,7 @@ bool si_shader_binary_upload(struct si_screen *sscreen, struct si_shader *shader sscreen->ws->buffer_unmap(sscreen->ws, shader->bo->buf); ac_rtld_close(&binary); + shader->gpu_address = u.rx_va; return size >= 0; } diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h index f8f2fe5519f..b1ff7fe654d 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -845,6 +845,10 @@ struct si_shader { struct si_shader *gs_copy_shader; struct si_resource *bo; + /* gpu_address should be bo->gpu_address except if SQTT is + * in use. + */ + uint64_t gpu_address; struct si_resource *scratch_bo; union si_shader_key key; struct util_queue_fence ready; diff --git a/src/gallium/drivers/radeonsi/si_state_draw.cpp b/src/gallium/drivers/radeonsi/si_state_draw.cpp index 128a5657aad..78681b8089d 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.cpp +++ b/src/gallium/drivers/radeonsi/si_state_draw.cpp @@ -374,6 +374,8 @@ static bool si_update_shaders(struct si_context *sctx) pipeline->offset[i] = offset; + shader->gpu_address = u.rx_va; + offset += align(size, 256); struct si_pm4_state *pm4 = &shader->pm4;