1#version 130 2 3lowp vec3 a; 4mediump float b; 5highp int c; 6 7precision highp float; 8 9in vec4 i; 10out vec4 o; 11 12flat in float fflat; 13smooth in float fsmooth; 14noperspective in float fnop; 15 16void main() 17{ 18 float clip = gl_ClipDistance[3]; 19} 20 21uniform samplerCube sampC; 22 23void foo() 24{ 25 vec4 s = textureGather(sampC, vec3(0.2)); 26} 27 28#extension GL_ARB_texture_gather : enable 29 30void bar() 31{ 32 vec4 s = textureGather(sampC, vec3(0.2)); 33} 34 35flat in vec3 gl_Color; // ERROR, type 36in vec4 gl_Color; 37flat in vec4 gl_Color; 38flat in vec4 gl_Color[2]; // ERROR, array 39vec4 gl_Color; // ERROR, storage 40 41#extension GL_ARB_texture_gather : warn 42 43void bar2() 44{ 45 vec4 s = textureGather(sampC, vec3(0.2)); 46 47 uvec3 uv3; 48 bvec3 b3; 49 b3 = lessThan(uv3, uv3); 50 b3 = equal(uv3, uv3); 51 const bvec2 bl1 = greaterThanEqual(uvec2(2, 3), uvec2(3,3)); 52 const bvec2 bl2 = equal(uvec2(2, 3), uvec2(3,3)); 53 const bvec2 bl3 = equal(bl1, bl2); // yes, equal 54 int a1[int(bl3.x)]; 55 int a2[int(bl3.y)]; 56 a1[0]; // size 1 57 a2[0]; // size 1 58 const bvec4 bl4 = notEqual(greaterThan(uvec4(1,2,3,4), uvec4(0,2,0,6)), lessThanEqual(uvec4(7,8,9,10), uvec4(6, 8, 0, 11))); // compare (t,f,t,f) with (f,t,f,t) 59 int a3[int(bl4.x)+int(bl4.y)+int(bl4.z)+int(bl4.w)]; 60 a3[3]; // size 4 61 b3 != b3; 62 b3 < b3; // ERROR 63 uv3 > uv3; // ERROR 64 uvec2(2, 3) >= uvec2(3,3); // ERROR 65 int(bl4) <= int(bl4); // true 66 int(bl4.x) > int(bl4.y); // false 67} 68 69#extension GL_ARB_texture_gather : enable 70#extension GL_ARB_texture_rectangle : enable 71 72uniform sampler2D samp2D; 73uniform sampler2DShadow samp2DS; 74uniform sampler2DRect samp2DR; 75uniform sampler2DArray samp2DA; 76 77void bar23() 78{ 79 vec4 s; 80 s = textureGatherOffset(sampC, vec3(0.3), ivec2(1)); // ERROR 81 s = textureGatherOffset(samp2DR, vec2(0.3), ivec2(1)); // ERROR 82 s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1)); 83 s = textureGatherOffset(samp2DA, vec3(0.3), ivec2(1)); 84 s = textureGatherOffset(samp2DS, vec2(0.3), 1.3, ivec2(1)); // ERROR 85 s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1), 2); // ERROR 86} 87 88#extension GL_ARB_gpu_shader5 : enable 89 90void bar234() 91{ 92 vec4 s; 93 s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1)); 94 s = textureGatherOffset(samp2DA, vec3(0.3), ivec2(1)); 95 s = textureGatherOffset(samp2DR, vec2(0.3), ivec2(1)); 96 s = textureGatherOffset(samp2DS, vec2(0.3), 1.3, ivec2(1)); 97 s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1), 2); 98} 99 100#extension GL_ARB_texture_cube_map_array : enable 101 102uniform samplerCubeArray Sca; 103uniform isamplerCubeArray Isca; 104uniform usamplerCubeArray Usca; 105uniform samplerCubeArrayShadow Scas; 106 107void bar235() 108{ 109 ivec3 a = textureSize(Sca, 3); 110 vec4 b = texture(Sca, i); 111 ivec4 c = texture(Isca, i, 0.7); 112 uvec4 d = texture(Usca, i); 113 114 b = textureLod(Sca, i, 1.7); 115 a = textureSize(Scas, a.x); 116 float f = texture(Scas, i, b.y); 117 c = textureGrad(Isca, i, vec3(0.1), vec3(0.2)); 118} 119 120int \ 121 x; // ERROR until 420pack is turned on 122 123#extension GL_ARB_shading_language_420pack : enable 124 125const int ai[3] = { 10, 23, 32 }; 126layout(binding=0) uniform blockname { int a; } instanceName; // ERROR 127uniform layout(binding=0) sampler2D bounds; 128 129void bar23444() 130{ 131 mat4x3 m43; \ 132 float a1 = m43[3].y; 133 vec3 v3; 134 int a2 = m43.length(); 135 a2 += m43[1].length(); 136 a2 += v3.length(); 137 const float b = 2 * a1; 138 a.x = gl_MinProgramTexelOffset + gl_MaxProgramTexelOffset; 139 bool boolb; 140 boolb.length(); // ERROR 141 m43[3][1].length(); // ERROR 142 v3.length; // ERROR 143 v3.length(b); // ERROR 144} 145 146in float gl_FogFragCoord; 147 148#extension GL_ARB_separate_shader_objects : enable 149 150in float gl_FogFragCoord; 151in int gl_FogFragCoord; // ERROR 152 153layout(early_fragment_tests) in; // ERROR 154layout(r32i) uniform iimage2D iimg2Dbad; // ERROR 155 156#extension GL_ARB_shader_image_load_store : enable 157 158layout(early_fragment_tests) in; 159 160layout(r32i) uniform iimage2D iimg2D; 161 162void qux2() 163{ 164 int i; 165 imageAtomicCompSwap(iimg2D, ivec2(i,i), i, i); 166 ivec4 pos = imageLoad(iimg2D, ivec2(i,i)); 167} 168 169layout(early_fragment_tests) out; // ERROR 170