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: out gl_PerVertex { vec4 gl_Position; }; while the geometry shader contains: in gl_PerVertex { float gl_ClipDistance[]; } gl_in[]; 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: https://lists.freedesktop.org/archives/mesa-dev/2017-January/142386.html Khronos made it pretty clear this test is valid: https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/137
I’ve posted a v2 of Eduardo’s patches here: https://lists.freedesktop.org/archives/mesa-dev/2017-October/174550.html
I’ve pushed the patches to master with Ken’s RB. Thanks!
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.