glsl/linker: validate attribute aliasing before optimizations
authorTapani Pälli <tapani.palli@intel.com>
Wed, 6 Jun 2018 11:19:16 +0000 (14:19 +0300)
committerTapani Pälli <tapani.palli@intel.com>
Wed, 31 Oct 2018 12:53:47 +0000 (14:53 +0200)
commit27f1298b9d95899c4061294e384fadfd1c0a1b44
tree7c5c3591119417ca888777205f6420163c114518
parenta96749b13ca9446155964ddd32379251b822f6f8
glsl/linker: validate attribute aliasing before optimizations

Patch does a 'dry run' of assign_attribute_or_color_locations before
optimizations to catch cases where we have aliasing of unused attributes
which is forbidden by the GLSL ES 3.x specifications.

We need to run this pass before unused attributes may be removed and with
attribute binding information from program, therefore we re-use existing
pass in linker rather than attempt to write another one.

This fixes WebGL2 test 'gl-bindAttribLocation-aliasing-inactive' and
Piglit test 'gles-3.0-attribute-aliasing'.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106833
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/compiler/glsl/linker.cpp