#version 130 lowp vec3 a; mediump float b; highp int c; precision highp float; in vec4 i; out vec4 o; flat in float fflat; smooth in float fsmooth; noperspective in float fnop; void main() { float clip = gl_ClipDistance[3]; } uniform samplerCube sampC; void foo() { vec4 s = textureGather(sampC, vec3(0.2)); } #extension GL_ARB_texture_gather : enable void bar() { vec4 s = textureGather(sampC, vec3(0.2)); } flat in vec3 gl_Color; // ERROR, type in vec4 gl_Color; flat in vec4 gl_Color; flat in vec4 gl_Color[2]; // ERROR, array vec4 gl_Color; // ERROR, storage #extension GL_ARB_texture_gather : warn void bar2() { vec4 s = textureGather(sampC, vec3(0.2)); uvec3 uv3; bvec3 b3; b3 = lessThan(uv3, uv3); b3 = equal(uv3, uv3); const bvec2 bl1 = greaterThanEqual(uvec2(2, 3), uvec2(3,3)); const bvec2 bl2 = equal(uvec2(2, 3), uvec2(3,3)); const bvec2 bl3 = equal(bl1, bl2); // yes, equal int a1[int(bl3.x)]; int a2[int(bl3.y)]; a1[0]; // size 1 a2[0]; // size 1 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) int a3[int(bl4.x)+int(bl4.y)+int(bl4.z)+int(bl4.w)]; a3[3]; // size 4 b3 != b3; b3 < b3; // ERROR uv3 > uv3; // ERROR uvec2(2, 3) >= uvec2(3,3); // ERROR int(bl4) <= int(bl4); // true int(bl4.x) > int(bl4.y); // false } #extension GL_ARB_texture_gather : enable #extension GL_ARB_texture_rectangle : enable uniform sampler2D samp2D; uniform sampler2DShadow samp2DS; uniform sampler2DRect samp2DR; uniform sampler2DArray samp2DA; void bar23() { vec4 s; s = textureGatherOffset(sampC, vec3(0.3), ivec2(1)); // ERROR s = textureGatherOffset(samp2DR, vec2(0.3), ivec2(1)); // ERROR s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1)); s = textureGatherOffset(samp2DA, vec3(0.3), ivec2(1)); s = textureGatherOffset(samp2DS, vec2(0.3), 1.3, ivec2(1)); // ERROR s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1), 2); // ERROR } #extension GL_ARB_gpu_shader5 : enable void bar234() { vec4 s; s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1)); s = textureGatherOffset(samp2DA, vec3(0.3), ivec2(1)); s = textureGatherOffset(samp2DR, vec2(0.3), ivec2(1)); s = textureGatherOffset(samp2DS, vec2(0.3), 1.3, ivec2(1)); s = textureGatherOffset(samp2D, vec2(0.3), ivec2(1), 2); } #extension GL_ARB_texture_cube_map_array : enable uniform samplerCubeArray Sca; uniform isamplerCubeArray Isca; uniform usamplerCubeArray Usca; uniform samplerCubeArrayShadow Scas; void bar235() { ivec3 a = textureSize(Sca, 3); vec4 b = texture(Sca, i); ivec4 c = texture(Isca, i, 0.7); uvec4 d = texture(Usca, i); b = textureLod(Sca, i, 1.7); a = textureSize(Scas, a.x); float f = texture(Scas, i, b.y); c = textureGrad(Isca, i, vec3(0.1), vec3(0.2)); } int \ x; // ERROR until 420pack is turned on #extension GL_ARB_shading_language_420pack : enable const int ai[3] = { 10, 23, 32 }; layout(binding=0) uniform blockname { int a; } instanceName; // ERROR uniform layout(binding=0) sampler2D bounds; void bar23444() { mat4x3 m43; \ float a1 = m43[3].y; vec3 v3; int a2 = m43.length(); a2 += m43[1].length(); a2 += v3.length(); const float b = 2 * a1; a.x = gl_MinProgramTexelOffset + gl_MaxProgramTexelOffset; bool boolb; boolb.length(); // ERROR m43[3][1].length(); // ERROR v3.length; // ERROR v3.length(b); // ERROR } in float gl_FogFragCoord; #extension GL_ARB_separate_shader_objects : enable in float gl_FogFragCoord; in int gl_FogFragCoord; // ERROR layout(early_fragment_tests) in; // ERROR layout(r32i) uniform iimage2D iimg2Dbad; // ERROR #extension GL_ARB_shader_image_load_store : enable layout(early_fragment_tests) in; layout(r32i) uniform iimage2D iimg2D; void qux2() { int i; imageAtomicCompSwap(iimg2D, ivec2(i,i), i, i); ivec4 pos = imageLoad(iimg2D, ivec2(i,i)); } layout(early_fragment_tests) out; // ERROR