#version 150 core in vec4 gl_FragCoord; layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR layout(pixel_center_integer) in vec4 gl_FragCoord; // ERROR layout(origin_upper_left) in vec4 foo; // ERROR layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; void main() { vec4 c = gl_FragCoord; } layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord; // ERROR, declared after use in struct S { float f; } s; float patch = 3.1; uniform sampler2DMS sms; uniform isampler2DMS isms; uniform usampler2DMS usms; uniform sampler2DMSArray smsa; uniform isampler2DMSArray ismsa; uniform usampler2DMSArray usmsa; flat in ivec2 p2; flat in ivec3 p3; flat in int samp; void barWxyz() { ivec2 t11 = textureSize( sms); ivec2 t12 = textureSize(isms); ivec2 t13 = textureSize(usms); ivec3 t21 = textureSize( smsa); ivec3 t22 = textureSize(ismsa); ivec3 t23 = textureSize(usmsa); vec4 t31 = texelFetch( sms, p2, samp); ivec4 t32 = texelFetch(isms, p2, samp); uvec4 t33 = texelFetch(usms, p2, 3); vec4 t41 = texelFetch( smsa, p3, samp); ivec4 t42 = texelFetch(ismsa, ivec3(2), samp); uvec4 t43 = texelFetch(usmsa, p3, samp); } int primitiveID() { return gl_PrimitiveID; gl_PerFragment; // ERROR, block name can't get reused } in double type1; // ERROR #extension GL_ARB_gpu_shader_fp64 : enable double type2; double type3 = 2.0; int absTest = sqrt(type3); double absTest2 = sqrt(type3); double absTest3 = sqrt(2); float dk = sqrt(11); #extension GL_ARB_shader_bit_encoding: enable float f; vec4 v4; ivec4 iv4a; uvec2 uv2c; void bitEncodingPass() { int i = floatBitsToInt(f); uvec4 uv11 = floatBitsToUint(v4); vec4 v14 = intBitsToFloat(iv4a); vec2 v15 = uintBitsToFloat(uv2c); } #extension GL_ARB_shader_bit_encoding: disable void bitEncodingFail() { int i = floatBitsToInt(f); // Error, extention GL_ARB_bit_encoding is diabled } #extension GL_ARB_shading_language_packing : enable vec2 v2a; uint uy; void packingPass() { uint u19 = packSnorm2x16(v2a); vec2 v20 = unpackSnorm2x16(uy); uint u15 = packUnorm2x16(v2a); vec2 v16 = unpackUnorm2x16(uy); uint u17 = packHalf2x16(v2a); vec2 v18 = unpackHalf2x16(uy); } #extension GL_ARB_shading_language_packing : disable void packingFail() { uint u19 = packSnorm2x16(v2a); // Error, extension GL_ARB_shading_language_packing is disabled } // Testing extension GL_ARB_texture_query_lod uniform sampler1D samp1D; uniform sampler2DShadow samp2Ds; void qlodFail() { vec2 lod; float pf; vec2 pf2; vec3 pf3; lod = textureQueryLod(samp1D, pf); // ERROR, extension GL_ARB_texture_query_lod needed lod = textureQueryLod(samp2Ds, pf2); // ERROR, extension GL_ARB_texture_query_lod needed } #extension GL_ARB_texture_query_lod : enable uniform isampler2D isamp2D; uniform usampler3D usamp3D; uniform samplerCube sampCube; uniform isampler1DArray isamp1DA; uniform usampler2DArray usamp2DA; uniform sampler1DShadow samp1Ds; uniform samplerCubeShadow sampCubes; uniform sampler1DArrayShadow samp1DAs; uniform sampler2DArrayShadow samp2DAs; uniform samplerBuffer sampBuf; uniform sampler2DRect sampRect; void qlodPass() { vec2 lod; float pf; vec2 pf2; vec3 pf3; lod = textureQueryLod(samp1D, pf); lod = textureQueryLod(isamp2D, pf2); lod = textureQueryLod(usamp3D, pf3); lod = textureQueryLod(sampCube, pf3); lod = textureQueryLod(isamp1DA, pf); lod = textureQueryLod(usamp2DA, pf2); lod = textureQueryLod(samp1Ds, pf); lod = textureQueryLod(samp2Ds, pf2); lod = textureQueryLod(sampCubes, pf3); lod = textureQueryLod(samp1DAs, pf); lod = textureQueryLod(samp2DAs, pf2); lod = textureQueryLod(sampBuf, pf); // ERROR lod = textureQueryLod(sampRect, pf2); // ERROR } // Test extension GL_EXT_shader_integer_mix #extension GL_EXT_shader_integer_mix : enable bool b1, b2, b; int x,y; uint z,w; void testmix() { int ival = mix(x, y, b); ivec2 iv2 = mix(ivec2(x), ivec2(y), bvec2(b)); ivec3 iv3 = mix(ivec3(x), ivec3(y), bvec3(b)); ivec4 iv4 = mix(ivec4(x), ivec4(x), bvec4(b)); uint uiv = mix(z, w, b); uvec2 uv2 = mix(uvec2(z), uvec2(z), bvec2(b)); uvec3 uv3 = mix(uvec3(z), uvec3(z), bvec3(b)); uvec4 uv4 = mix(uvec4(z), uvec4(z), bvec4(b)); bool bv = mix(b1, b2, b); bvec2 bv2 = mix(bvec2(b1), bvec2(b2), bvec2(b)); bvec3 bv3 = mix(bvec3(b1), bvec3(b2), bvec3(b)); bvec4 bv4 = mix(bvec4(b1), bvec4(b2), bvec4(b)); } #extension GL_EXT_shader_integer_mix : disable void testmixFail() { int ival = mix(x, y, b); // Error since extenson GL_EXT_shader_integer_mix is disabled }