glsl: handle explicit location for mesh shader

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36405>
This commit is contained in:
Qiang Yu 2025-05-23 10:24:54 +08:00 committed by Marge Bot
parent bd365d1d2a
commit 2b76809dfc

View file

@ -3402,6 +3402,7 @@ apply_explicit_location(const struct ast_type_qualifier *qual,
case MESA_SHADER_TESS_CTRL: case MESA_SHADER_TESS_CTRL:
case MESA_SHADER_TESS_EVAL: case MESA_SHADER_TESS_EVAL:
case MESA_SHADER_GEOMETRY: case MESA_SHADER_GEOMETRY:
case MESA_SHADER_MESH:
if (var->data.mode == ir_var_shader_in || var->data.mode == ir_var_shader_out) { if (var->data.mode == ir_var_shader_in || var->data.mode == ir_var_shader_out) {
if (!state->check_separate_shader_objects_allowed(loc, var)) if (!state->check_separate_shader_objects_allowed(loc, var))
return; return;
@ -3430,10 +3431,11 @@ apply_explicit_location(const struct ast_type_qualifier *qual,
fail = true; fail = true;
break; break;
case MESA_SHADER_TASK:
case MESA_SHADER_COMPUTE: case MESA_SHADER_COMPUTE:
_mesa_glsl_error(loc, state, _mesa_glsl_error(loc, state,
"compute shader variables cannot be given " "%s shader variables cannot be given explicit locations",
"explicit locations"); _mesa_shader_stage_to_string(state->stage));
return; return;
default: default:
fail = true; fail = true;
@ -3458,6 +3460,7 @@ apply_explicit_location(const struct ast_type_qualifier *qual,
case MESA_SHADER_TESS_CTRL: case MESA_SHADER_TESS_CTRL:
case MESA_SHADER_TESS_EVAL: case MESA_SHADER_TESS_EVAL:
case MESA_SHADER_GEOMETRY: case MESA_SHADER_GEOMETRY:
case MESA_SHADER_MESH:
if (var->data.patch) if (var->data.patch)
var->data.location = qual_location + VARYING_SLOT_PATCH0; var->data.location = qual_location + VARYING_SLOT_PATCH0;
else else