radeonsi: add si_init_screen_nir_options

Extract code from si_init_screen_get_functions to new helper.
The code assigning nir_options[] is moved out to help future
changes.

Reviewed-by: David Rosca <david.rosca@amd.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41133>
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2026-04-20 15:15:01 +02:00
parent e8cdd8ccb1
commit 4c08b87fe1
3 changed files with 10 additions and 2 deletions

View file

@ -217,7 +217,10 @@ void si_init_screen_get_functions(struct si_screen *sscreen)
sscreen->b.get_disk_shader_cache = si_get_disk_shader_cache;
si_init_renderer_string(sscreen);
}
void si_init_screen_nir_options(struct si_screen *sscreen)
{
#ifndef HAVE_GFX_COMPUTE
return;
#endif
@ -297,7 +300,7 @@ void si_init_screen_get_functions(struct si_screen *sscreen)
unsigned max_support_shader = enable_mesh_shader(sscreen) ?
MESA_SHADER_MESH : MESA_SHADER_COMPUTE;
for (unsigned i = 0; i <= max_support_shader; i++)
sscreen->b.nir_options[i] = options;
sscreen->b.nir_options[i] = sscreen->nir_options;
}
void si_init_shader_caps(struct si_screen *sscreen)
@ -460,6 +463,7 @@ void si_init_screen_caps(struct si_screen *sscreen)
{
struct pipe_caps *caps = (struct pipe_caps *)&sscreen->b.caps;
/* u_init_pipe_screen_caps depends on shader caps. */
u_init_pipe_screen_caps(&sscreen->b, 1);
/* Gfx8 (Polaris11) hangs, so don't enable this on Gfx8 and older chips. */
@ -612,7 +616,7 @@ void si_init_screen_caps(struct si_screen *sscreen)
#ifdef HAVE_GFX_COMPUTE
caps->graphics = sscreen->info.has_graphics;
caps->mesh_shader = enable_mesh_shader(sscreen);
caps->mesh_shader = sscreen->b.nir_options[MESA_SHADER_MESH];
caps->compute = true;
#else
caps->graphics = caps->mesh_shader = caps->compute = false;

View file

@ -1425,8 +1425,11 @@ static struct pipe_screen *radeonsi_screen_create_impl(struct radeon_winsys *ws,
sscreen->info.me_fw_version >= 142);
si_init_screen_get_functions(sscreen);
si_init_screen_nir_options(sscreen);
si_init_shader_caps(sscreen);
si_init_compute_caps(sscreen);
/* si_init_screen_caps depends on shader caps. */
si_init_screen_caps(sscreen);
if (sscreen->debug_flags & DBG(INFO))

View file

@ -1588,6 +1588,7 @@ struct pipe_fence_handle *si_create_fence(struct pipe_context *ctx,
/* si_get.c */
void si_init_screen_get_functions(struct si_screen *sscreen);
void si_init_screen_nir_options(struct si_screen *sscreen);
void si_init_shader_caps(struct si_screen *sscreen);
void si_init_compute_caps(struct si_screen *sscreen);
void si_init_screen_caps(struct si_screen *sscreen);