glsl: Interface Block instances don't need linking validation
authorAndres Gomez <agomez@igalia.com>
Mon, 20 Feb 2017 15:20:58 +0000 (17:20 +0200)
committerAndres Gomez <agomez@igalia.com>
Mon, 27 Mar 2017 09:47:21 +0000 (12:47 +0300)
commit6255cc654d372352f060da8f9622bae56d6e8af5
tree9323bc1aa5a88d976842a0fd51451d2b5799dfc1
parent40b09ed15c708629b7fb3f30baf0f73d376f8ca0
glsl: Interface Block instances don't need linking validation

From page 45 (page 52 of the PDF) of the GLSL ES 3.00 v.6 spec:

  " When instance names are present on matched block names, it is
    allowed for the instance names to differ; they need not match for
    the blocks to match.

From page 51 (page 57 of the PDF) of the GLSL 4.30 v.8 spec:

  " When instance names are present on matched block names, it is
    allowed for the instance names to differ; they need not match for
    the blocks to match."

Therefore, no cross linking validation is needed for the instance name
of an Interface Block.

This patch will make that no link error will be reported on a program
like this:

    "# VS

    layout(binding = 1) Block1 {
      vec4 color;
    } uni_block;

    ...

    # FS

    layout(binding = 2) Block2 {
      vec4 color;
    } uni_block;

    ..."

Fixes GL45-CTS.enhanced_layouts.ssb_layout_qualifier_conflict

Signed-off-by: Andres Gomez <agomez@igalia.com>
Cc: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/compiler/glsl/linker.cpp