From 644061fdbc31d53a4a29a5bc33a16b75b4a61bfa Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Mon, 26 May 2025 15:44:06 +0800 Subject: [PATCH] radeonsi: add si_emit_buffered_gfx_sh_regs_for_mesh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For mesh shader support. Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/radeonsi/si_state.h | 1 + src/gallium/drivers/radeonsi/si_state_draw.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_state.h b/src/gallium/drivers/radeonsi/si_state.h index 180359a95fe..dc0731ce4cb 100644 --- a/src/gallium/drivers/radeonsi/si_state.h +++ b/src/gallium/drivers/radeonsi/si_state.h @@ -695,6 +695,7 @@ void si_set_vertex_buffer_descriptor(struct si_screen *sscreen, struct si_vertex const struct pipe_vertex_buffer *vb, unsigned element_index, uint32_t *out); void si_emit_buffered_compute_sh_regs(struct si_context *sctx); +void si_emit_buffered_gfx_sh_regs_for_mesh(struct si_context *sctx); void si_init_draw_functions_GFX6(struct si_context *sctx); void si_init_draw_functions_GFX7(struct si_context *sctx); void si_init_draw_functions_GFX8(struct si_context *sctx); diff --git a/src/gallium/drivers/radeonsi/si_state_draw.cpp b/src/gallium/drivers/radeonsi/si_state_draw.cpp index e8b725a39eb..b30cf9519ab 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.cpp +++ b/src/gallium/drivers/radeonsi/si_state_draw.cpp @@ -1274,6 +1274,20 @@ void si_emit_buffered_compute_sh_regs(struct si_context *sctx) } } +/* Used by mesh pipeline only. */ +void si_emit_buffered_gfx_sh_regs_for_mesh(struct si_context *sctx) +{ + if (sctx->gfx_level >= GFX12) { + radeon_begin(&sctx->gfx_cs); + gfx12_emit_buffered_sh_regs_inline(&sctx->num_buffered_gfx_sh_regs, + sctx->gfx12.buffered_gfx_sh_regs); + radeon_end(); + } else { + gfx11_emit_buffered_sh_regs_inline(sctx, &sctx->num_buffered_gfx_sh_regs, + sctx->gfx11.buffered_gfx_sh_regs); + } +} + #endif template