From 5048216b43cc06f3931c02dc23f2d2f9d319c6a9 Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Wed, 11 Jun 2025 10:11:21 +0800 Subject: [PATCH] radeonsi: init mesh shader ngg info 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 | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 0cec4939fce..0f392163633 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -1727,6 +1727,17 @@ static void si_fix_resource_usage(struct si_screen *sscreen, struct si_shader *s } } +static void si_init_mesh_shader_ngg_info(struct si_shader *shader) +{ + struct si_shader_selector *sel = shader->selector; + + shader->ngg.info.hw_max_esverts = 1; + shader->ngg.info.max_gsprims = 1; + shader->ngg.info.max_out_verts = sel->info.base.mesh.max_vertices_out; + shader->ngg.info.max_vert_out_per_gs_instance = false; + shader->ngg.info.ngg_out_lds_size = 0; +} + bool si_create_shader_variant(struct si_screen *sscreen, struct ac_llvm_compiler *compiler, struct si_shader *shader, struct util_debug_callback *debug) { @@ -1897,6 +1908,8 @@ bool si_create_shader_variant(struct si_screen *sscreen, struct ac_llvm_compiler sel->info.base.gs.invocations, shader->previous_stage_sel->info.esgs_vertex_stride, &shader->gs_info); + } else if (sel->stage == MESA_SHADER_MESH) { + si_init_mesh_shader_ngg_info(shader); } si_fix_resource_usage(sscreen, shader);