mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
radeonsi: fix OpenCL shader compile fail
sel->stage is assigned with MESA_SHADER_COMPUTE statically,
change to use nir->info.stage need to handle with MESA_SHADER_KERNEL.
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12372
Fixes: 9b7ea720c9 ("radeonsi: use nir->info instead of sel->info.base")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32781>
This commit is contained in:
parent
c0e5e8f932
commit
9a8eef282b
3 changed files with 7 additions and 3 deletions
|
|
@ -680,6 +680,7 @@ static void si_init_shader_args(struct si_shader *shader, struct si_shader_args
|
|||
break;
|
||||
|
||||
case MESA_SHADER_COMPUTE:
|
||||
case MESA_SHADER_KERNEL:
|
||||
declare_global_desc_pointers(args);
|
||||
declare_per_stage_desc_pointers(args, shader, info, true);
|
||||
if (shader->selector->info.uses_grid_size)
|
||||
|
|
@ -2246,7 +2247,8 @@ static void si_nir_emit_polygon_stipple(nir_shader *nir, struct si_shader_args *
|
|||
|
||||
bool si_should_clear_lds(struct si_screen *sscreen, const struct nir_shader *shader)
|
||||
{
|
||||
return shader->info.stage == MESA_SHADER_COMPUTE && shader->info.shared_size > 0 && sscreen->options.clear_lds;
|
||||
return gl_shader_stage_is_compute(shader->info.stage) &&
|
||||
shader->info.shared_size > 0 && sscreen->options.clear_lds;
|
||||
}
|
||||
|
||||
static bool clamp_shadow_comparison_value(nir_builder *b, nir_instr *instr, void *state)
|
||||
|
|
@ -3102,7 +3104,7 @@ bool si_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler *compi
|
|||
}
|
||||
|
||||
/* Validate SGPR and VGPR usage for compute to detect compiler bugs. */
|
||||
if (nir->info.stage == MESA_SHADER_COMPUTE) {
|
||||
if (gl_shader_stage_is_compute(nir->info.stage)) {
|
||||
unsigned max_vgprs =
|
||||
sscreen->info.num_physical_wave64_vgprs_per_simd * (shader->wave_size == 32 ? 2 : 1);
|
||||
unsigned max_sgprs = sscreen->info.num_physical_sgprs_per_simd;
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ void si_llvm_create_func(struct si_shader_context *ctx, const char *name, LLVMTy
|
|||
call_conv = AC_LLVM_AMDGPU_PS;
|
||||
break;
|
||||
case MESA_SHADER_COMPUTE:
|
||||
case MESA_SHADER_KERNEL:
|
||||
call_conv = AC_LLVM_AMDGPU_CS;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -596,6 +597,7 @@ static bool si_llvm_translate_nir(struct si_shader_context *ctx, struct si_shade
|
|||
}
|
||||
|
||||
case MESA_SHADER_COMPUTE:
|
||||
case MESA_SHADER_KERNEL:
|
||||
if (ctx->shader->selector->info.base.shared_size)
|
||||
si_llvm_declare_compute_memory(ctx);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@ static void si_lower_nir(struct si_screen *sscreen, struct nir_shader *nir)
|
|||
NIR_PASS_V(nir, nir_lower_gs_intrinsics, flags);
|
||||
}
|
||||
|
||||
if (nir->info.stage == MESA_SHADER_COMPUTE) {
|
||||
if (gl_shader_stage_is_compute(nir->info.stage)) {
|
||||
nir_lower_compute_system_values_options options = {0};
|
||||
|
||||
/* gl_LocalInvocationIndex must be derived from gl_LocalInvocationID.xyz to make it correct
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue