glsl/linker: always validate explicit location among inputs
authorAndres Gomez <agomez@igalia.com>
Fri, 28 Dec 2018 10:24:53 +0000 (12:24 +0200)
committerAndres Gomez <agomez@igalia.com>
Tue, 19 Mar 2019 15:23:27 +0000 (17:23 +0200)
commitde1bc2d19a6e4b9081a79424ffc1cd082d27f6bd
tree30bf13583eeb07cc21178fb57b926524b107f267
parenta96093136bddfe17661f1de54228fe4b5618ba8a
glsl/linker: always validate explicit location among inputs

Outputs are always validated when having explicit locations and we
were trusting its outcome to catch similar problems with the inputs
since, in case of having undefined outputs for existing inputs, we
would be already reporting a linker error.

However, consider this case:

  " Shader stage n:
    ---------------

    ...

    layout(location = 0) out float a;

    ...

    Shader stage n+1:
    -----------------

    ...

    layout(location = 0) in float b;
    layout(location = 0) in float c;

    ...
  "

Currently, this won't report a linker error even though location
aliasing is happening for the inputs.

Therefore, we also need to validate the inputs independently from the
outcome of the outputs validation.

Cc: Timothy Arceri <tarceri@itsqueeze.com>
Cc: Iago Toral Quiroga <itoral@igalia.com>
Cc: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/compiler/glsl/link_varyings.cpp