This test links together separable programs with incompatible or missing gl_PerVertex block declarations. It expects a linker error. We allow the link.
In the failing case, a VS and GS are being linked together into a single program. The vertex shader contains:
while the geometry shader contains:
which obviously don't match. Unfortunately, the geometry shader doesn't actually use the gl_ClipDistance input at all, so it gets dead code eliminated at compile time, before we even consider linking. At link time, validate_interstage_inout_blocks() is supposed to enforce matching types, but there are no longer any GS inputs with an interface type, so it can't check anything.
Not sure what to do about this.
Oh, Eduardo sent patches to fix this back in January:
Khronos made it pretty clear this test is valid:
I’ve posted a v2 of Eduardo’s patches here:
I’ve pushed the patches to master with Ken’s RB. Thanks!