1#version 450 core 2 3in float in1; 4in vec2 in2; 5in vec3 in3; 6in vec4 in4; 7 8void main() 9{ 10 vec2 v2 = dFdxFine(in2); 11 vec3 v3 = dFdyCoarse(in3); 12 vec4 v4 = fwidth(in4); 13 v4 = dFdyFine(in4); 14 v3 = dFdyFine(in3); 15 float f = dFdx(in1) + dFdxFine(in1) + dFdxCoarse(in1); 16 v4 = fwidthCoarse(in4) + fwidthFine(in4); 17 18 float cull = gl_CullDistance[2]; 19 float consts = gl_MaxCullDistances + gl_MaxCombinedClipAndCullDistances + gl_MaxSamples; 20 21 if (gl_HelperInvocation) 22 ++v4; 23 24 int sum = gl_MaxVertexImageUniforms + 25 gl_MaxFragmentImageUniforms + 26 gl_MaxComputeImageUniforms + 27 gl_MaxCombinedImageUniforms + 28 gl_MaxCombinedShaderOutputResources; 29 30 bool b1, b3, b; 31 uint uin; 32 bvec2 b2 = mix(bvec2(b1), bvec2(b3), bvec2(b)); 33 uint um = mix(uin, uin, b); 34 ivec3 im3 = mix(ivec3(uin), ivec3(uin), bvec3(b)); 35} 36 37uniform sampler2DMS s2dms; 38uniform usampler2DMSArray us2dmsa; 39layout(rgba32i) uniform iimage2DMS ii2dms; 40layout(rgba32f) uniform image2DMSArray i2dmsa; 41 42void foo() 43{ 44 int s = textureSamples(s2dms); 45 s += textureSamples(us2dmsa); 46 s += imageSamples(ii2dms); 47 s += imageSamples(i2dmsa); 48 float f = imageAtomicExchange(i2dmsa, ivec3(in3), 2, 4.5); 49} 50 51#extension GL_ARB_sparse_texture2: enable 52 53uniform sampler2D s2D; 54uniform isampler2DArray is2DArray; 55uniform sampler2DRectShadow s2DRectShadow; 56 57in flat ivec2 offsets[4]; 58in vec2 c2; 59in vec3 c3; 60 61void testOffsets() 62{ 63 vec4 texel = vec4(0.0); 64 ivec4 itexel = ivec4(0); 65 const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); 66 sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel); 67 sparseTextureGatherOffsetsARB(is2DArray, c3, constOffsets, itexel, 2); 68 sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, constOffsets, texel); 69 70 sparseTextureGatherOffsetsARB(s2D, c2, offsets, texel); // Error : Non constant offsets 71 sparseTextureGatherOffsetsARB(is2DArray, c3, offsets, itexel, 2); // Error : Non constant offsets 72 sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, offsets, texel); // Error : Non constant offsets 73 74} 75 76in float gl_CullDistance[6]; 77 78float cull(int i) 79{ 80 return (i >= 6) ? gl_CullDistance[5] : gl_CullDistance[i]; 81} 82 83layout(location = 6) in bName1 { 84 float f; 85 layout(location = 7) float g; 86 mat4 m; 87} bInst1; 88layout(location = 12) in bName2 { 89 float f; 90 layout(location = 13) float g; // ERROR, location on array 91} bInst2[3]; 92 93layout(early_fragment_tests) in float f; // ERROR, must be standalone 94