| #version 450 core | |
| out gl_PerVertex { | |
| float gl_CullDistance[3]; | |
| }; | |
| void main() | |
| { | |
| gl_CullDistance[2] = 4.5; | |
| } | |
| out bool outb; // ERROR | |
| out sampler2D outo; // ERROR | |
| out float outa[4]; | |
| out float outaa[4][2]; | |
| struct S { float f; }; | |
| out S outs; | |
| out S[4] outasa; | |
| out S outsa[4]; | |
| struct SA { float f[4]; }; | |
| out SA outSA; | |
| struct SS { float f; S s; }; | |
| out SS outSS; | |
| layout(binding = 0) uniform atomic_uint aui; | |
| uint ui; | |
| void foo() | |
| { | |
| SS::f; | |
| atomicCounterAdd(aui, ui); // ERROR, need 4.6 | |
| atomicCounterSubtract(aui, ui); // ERROR, need 4.6 | |
| atomicCounterMin(aui, ui); // ERROR, need 4.6 | |
| atomicCounterMax(aui, ui); // ERROR, need 4.6 | |
| atomicCounterAnd(aui, ui); // ERROR, need 4.6 | |
| atomicCounterOr(aui, ui); // ERROR, need 4.6 | |
| atomicCounterXor(aui, ui); // ERROR, need 4.6 | |
| atomicCounterExchange(aui, ui); // ERROR, need 4.6 | |
| atomicCounterCompSwap(aui, ui, ui); // ERROR, need 4.6 | |
| int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID; // ERROR, need 4.6 | |
| bool b1; | |
| anyInvocation(b1); // ERROR, need 4.6 | |
| allInvocations(b1); // ERROR, need 4.6 | |
| allInvocationsEqual(b1); // ERROR, need 4.6 | |
| } | |
| ; // ERROR: no extraneous semicolons | |
| layout(location = 0) uniform locBlock { // ERROR, no location uniform block | |
| int a; | |
| }; | |
| layout(location = 0) buffer locBuffBlock { // ERROR, no location on buffer block | |
| int b; | |
| }; |