mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 17:30:12 +01:00
glsl/cs: Don't strip gl_GlobalInvocationID and dependencies
We lower gl_GlobalInvocationID based on the extension spec formula:
gl_GlobalInvocationID =
gl_WorkGroupID * gl_WorkGroupSize + gl_LocalInvocationID
https://www.opengl.org/registry/specs/ARB/compute_shader.txt
We need to set this variable in main(), even if gl_GlobalInvocationID
is not referenced by the shader. (It may be used by a linked shader.)
Therefore, we can't eliminate these as dead variables.
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
This commit is contained in:
parent
c5743a5d7f
commit
34e187ec38
1 changed files with 14 additions and 0 deletions
|
|
@ -62,6 +62,16 @@ optimize_dead_builtin_variables(exec_list *instructions,
|
|||
* information, so removing these variables from the user shader will
|
||||
* cause problems later.
|
||||
*
|
||||
* For compute shaders, gl_GlobalInvocationID has some dependencies, so
|
||||
* we avoid removing these dependencies.
|
||||
*
|
||||
* We also avoid removing gl_GlobalInvocationID at this stage because it
|
||||
* might be used by a linked shader. In this case it still needs to be
|
||||
* initialized by the main function.
|
||||
*
|
||||
* gl_GlobalInvocationID =
|
||||
* gl_WorkGroupID * gl_WorkGroupSize + gl_LocalInvocationID
|
||||
*
|
||||
* Matrix uniforms with "Transpose" are not eliminated because there's
|
||||
* an optimization pass that can turn references to the regular matrix
|
||||
* into references to the transpose matrix. Eliminating the transpose
|
||||
|
|
@ -73,6 +83,10 @@ optimize_dead_builtin_variables(exec_list *instructions,
|
|||
*/
|
||||
if (strcmp(var->name, "gl_ModelViewProjectionMatrix") == 0
|
||||
|| strcmp(var->name, "gl_Vertex") == 0
|
||||
|| strcmp(var->name, "gl_WorkGroupID") == 0
|
||||
|| strcmp(var->name, "gl_WorkGroupSize") == 0
|
||||
|| strcmp(var->name, "gl_LocalInvocationID") == 0
|
||||
|| strcmp(var->name, "gl_GlobalInvocationID") == 0
|
||||
|| strstr(var->name, "Transpose") != NULL)
|
||||
continue;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue