summaryrefslogtreecommitdiffstats
path: root/src/glsl/ralloc.c
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2011-10-21 11:21:02 -0700
committerIan Romanick <[email protected]>2011-10-25 17:51:43 -0700
commit960d722bf7db636863a05ddf9258236fccb58ecd (patch)
treea622c43f04495ef94a5f62dca3ddc1c4fe22bb6c /src/glsl/ralloc.c
parent1d5d67f8adac9f94715de9804adb536d9a7ec5ee (diff)
linker: Eliminate more dead code after demoting shader inputs and outputs
Consider the following vertex shader and fragment shader: // vertex shader varying vec4 v; uniform vec4 u; void main() { gl_Position = vec4(0.0); v = u; } // fragment shader void main() { gl_FragColor = vec4(0.0); } Since the fragment shader does not use 'v', it is demoted from a varying to a simple global variable. Once that happens, the assignment to 'v' is useless, and it should be removed. In addition, 'u' is no longer active, and it should also be removed. Performing extra dead code elimination after demoting shader inputs and outputs takes care of this. This elimination must occur before assigning uniform locations, or the declaration of 'u' cannot be removed. This change *breaks* the piglit test getuniform-01, but that test is already incorrect. The test uses a vertex shader that assigns to a user-defined varying, but it has no fragment shader. Since Mesa does not support ARB_separate_shader_objects (we only support the EXT version), the linker correctly eliminates the user-defined varying. The cascading effect is that the uniform queried by the C code of the test is also (correctly) eliminated. Signed-off-by: Ian Romanick <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41980 Tested-by: Brian Paul <[email protected]> Cc: Bryan Cain <[email protected]> Cc: Vinson Lee <[email protected]> Cc: José Fonseca <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Yuanhan Liu <[email protected]>
Diffstat (limited to 'src/glsl/ralloc.c')
0 files changed, 0 insertions, 0 deletions