1617a3babSopenharmony_ci#version 450 core
2617a3babSopenharmony_ci
3617a3babSopenharmony_ciout gl_PerVertex {
4617a3babSopenharmony_ci    float gl_CullDistance[3];
5617a3babSopenharmony_ci};
6617a3babSopenharmony_ci
7617a3babSopenharmony_civoid main()
8617a3babSopenharmony_ci{
9617a3babSopenharmony_ci    gl_CullDistance[2] = 4.5;
10617a3babSopenharmony_ci}
11617a3babSopenharmony_ci
12617a3babSopenharmony_ciout bool outb;         // ERROR
13617a3babSopenharmony_ciout sampler2D outo;    // ERROR
14617a3babSopenharmony_ciout float outa[4];
15617a3babSopenharmony_ciout float outaa[4][2];
16617a3babSopenharmony_cistruct S { float f; };
17617a3babSopenharmony_ciout S outs;
18617a3babSopenharmony_ciout S[4] outasa;
19617a3babSopenharmony_ciout S outsa[4];
20617a3babSopenharmony_cistruct SA { float f[4]; };
21617a3babSopenharmony_ciout SA outSA;
22617a3babSopenharmony_cistruct SS { float f; S s; };
23617a3babSopenharmony_ciout SS outSS;
24617a3babSopenharmony_ci
25617a3babSopenharmony_cilayout(binding = 0) uniform atomic_uint aui;
26617a3babSopenharmony_ciuint ui;
27617a3babSopenharmony_ci
28617a3babSopenharmony_civoid foo()
29617a3babSopenharmony_ci{
30617a3babSopenharmony_ci    SS::f;
31617a3babSopenharmony_ci    atomicCounterAdd(aui, ui);           // ERROR, need 4.6
32617a3babSopenharmony_ci    atomicCounterSubtract(aui, ui);      // ERROR, need 4.6
33617a3babSopenharmony_ci    atomicCounterMin(aui, ui);           // ERROR, need 4.6
34617a3babSopenharmony_ci    atomicCounterMax(aui, ui);           // ERROR, need 4.6
35617a3babSopenharmony_ci    atomicCounterAnd(aui, ui);           // ERROR, need 4.6
36617a3babSopenharmony_ci    atomicCounterOr(aui, ui);            // ERROR, need 4.6
37617a3babSopenharmony_ci    atomicCounterXor(aui, ui);           // ERROR, need 4.6
38617a3babSopenharmony_ci    atomicCounterExchange(aui, ui);      // ERROR, need 4.6
39617a3babSopenharmony_ci    atomicCounterCompSwap(aui, ui, ui);  // ERROR, need 4.6
40617a3babSopenharmony_ci
41617a3babSopenharmony_ci    int a = gl_BaseVertex + gl_BaseInstance + gl_DrawID; // ERROR, need 4.6
42617a3babSopenharmony_ci
43617a3babSopenharmony_ci    bool b1;
44617a3babSopenharmony_ci    anyInvocation(b1);        // ERROR, need 4.6
45617a3babSopenharmony_ci    allInvocations(b1);       // ERROR, need 4.6
46617a3babSopenharmony_ci    allInvocationsEqual(b1);  // ERROR, need 4.6
47617a3babSopenharmony_ci}
48617a3babSopenharmony_ci; // ERROR: no extraneous semicolons
49617a3babSopenharmony_ci
50617a3babSopenharmony_cilayout(location = 0) uniform locBlock {        // ERROR, no location uniform block
51617a3babSopenharmony_ci    int a;
52617a3babSopenharmony_ci};
53617a3babSopenharmony_ci
54617a3babSopenharmony_cilayout(location = 0) buffer locBuffBlock {     // ERROR, no location on buffer block
55617a3babSopenharmony_ci    int b;
56617a3babSopenharmony_ci};
57