glsl: add input builtin variables 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-02-18 17:38:59 +08:00 committed by Marge Bot
parent 691601e89e
commit c260aa3928

View file

@ -429,6 +429,7 @@ public:
void generate_gs_special_vars();
void generate_fs_special_vars();
void generate_cs_special_vars();
void generate_ms_special_vars();
void generate_varyings();
private:
@ -1505,6 +1506,29 @@ builtin_variable_generator::generate_cs_special_vars()
}
/**
* Generate variables which only exist in task and mesh shaders.
*/
void
builtin_variable_generator::generate_ms_special_vars()
{
add_system_value(SYSTEM_VALUE_LOCAL_INVOCATION_ID, uvec3_t,
"gl_LocalInvocationID");
add_system_value(SYSTEM_VALUE_WORKGROUP_ID, uvec3_t, "gl_WorkGroupID");
add_system_value(SYSTEM_VALUE_NUM_WORKGROUPS, uvec3_t, "gl_NumWorkGroups");
add_system_value(SYSTEM_VALUE_GLOBAL_INVOCATION_ID,
uvec3_t, "gl_GlobalInvocationID");
add_system_value(SYSTEM_VALUE_LOCAL_INVOCATION_INDEX,
uint_t, "gl_LocalInvocationIndex");
if (state->is_version(460, 0))
add_system_value(SYSTEM_VALUE_DRAW_ID, int_t, "gl_DrawID");
if (state->ARB_shader_draw_parameters_enable)
add_system_value(SYSTEM_VALUE_DRAW_ID, int_t, "gl_DrawIDARB");
}
/**
* Add a single "varying" variable. The variable's type and direction (input
* or output) are adjusted as appropriate for the type of shader being
@ -1709,6 +1733,10 @@ _mesa_glsl_initialize_variables(ir_exec_list *instructions,
case MESA_SHADER_COMPUTE:
gen.generate_cs_special_vars();
break;
case MESA_SHADER_TASK:
case MESA_SHADER_MESH:
gen.generate_ms_special_vars();
break;
default:
break;
}