Module: Mesa Branch: master Commit: 6823e12d5aa4646fc8ef0e32455104ba47f80a38 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6823e12d5aa4646fc8ef0e32455104ba47f80a38
Author: Jordan Justen <[email protected]> Date: Mon Aug 17 15:49:44 2015 -0700 glsl/cs: Exclude gl_LocalInvocationIndex from builtin variable stripping We lower gl_LocalInvocationIndex based on the extension spec formula: gl_LocalInvocationIndex = gl_LocalInvocationID.z * gl_WorkGroupSize.x * gl_WorkGroupSize.y + gl_LocalInvocationID.y * gl_WorkGroupSize.x + gl_LocalInvocationID.x; https://www.opengl.org/registry/specs/ARB/compute_shader.txt We need to set this variable in main(), even if gl_LocalInvocationIndex is not referenced by the shader. (It may be used by a linked shader.) Therefore, we can't eliminate it as a dead variable. Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Tapani Pälli <[email protected]> --- src/glsl/opt_dead_builtin_variables.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/glsl/opt_dead_builtin_variables.cpp b/src/glsl/opt_dead_builtin_variables.cpp index 90b753e..03e5789 100644 --- a/src/glsl/opt_dead_builtin_variables.cpp +++ b/src/glsl/opt_dead_builtin_variables.cpp @@ -72,6 +72,13 @@ optimize_dead_builtin_variables(exec_list *instructions, * gl_GlobalInvocationID = * gl_WorkGroupID * gl_WorkGroupSize + gl_LocalInvocationID * + * Similarly, we initialize gl_LocalInvocationIndex in the main function: + * + * gl_LocalInvocationIndex = + * gl_LocalInvocationID.z * gl_WorkGroupSize.x * gl_WorkGroupSize.y + + * gl_LocalInvocationID.y * gl_WorkGroupSize.x + + * gl_LocalInvocationID.x; + * * 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 @@ -87,6 +94,7 @@ optimize_dead_builtin_variables(exec_list *instructions, || strcmp(var->name, "gl_WorkGroupSize") == 0 || strcmp(var->name, "gl_LocalInvocationID") == 0 || strcmp(var->name, "gl_GlobalInvocationID") == 0 + || strcmp(var->name, "gl_LocalInvocationIndex") == 0 || strstr(var->name, "Transpose") != NULL) continue; _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
