1617a3babSopenharmony_ci#version 450 core 2617a3babSopenharmony_ci 3617a3babSopenharmony_ciin float in1; 4617a3babSopenharmony_ciin vec2 in2; 5617a3babSopenharmony_ciin vec3 in3; 6617a3babSopenharmony_ciin vec4 in4; 7617a3babSopenharmony_ci 8617a3babSopenharmony_civoid main() 9617a3babSopenharmony_ci{ 10617a3babSopenharmony_ci vec2 v2 = dFdxFine(in2); 11617a3babSopenharmony_ci vec3 v3 = dFdyCoarse(in3); 12617a3babSopenharmony_ci vec4 v4 = fwidth(in4); 13617a3babSopenharmony_ci v4 = dFdyFine(in4); 14617a3babSopenharmony_ci v3 = dFdyFine(in3); 15617a3babSopenharmony_ci float f = dFdx(in1) + dFdxFine(in1) + dFdxCoarse(in1); 16617a3babSopenharmony_ci v4 = fwidthCoarse(in4) + fwidthFine(in4); 17617a3babSopenharmony_ci 18617a3babSopenharmony_ci float cull = gl_CullDistance[2]; 19617a3babSopenharmony_ci float consts = gl_MaxCullDistances + gl_MaxCombinedClipAndCullDistances + gl_MaxSamples; 20617a3babSopenharmony_ci 21617a3babSopenharmony_ci if (gl_HelperInvocation) 22617a3babSopenharmony_ci ++v4; 23617a3babSopenharmony_ci 24617a3babSopenharmony_ci int sum = gl_MaxVertexImageUniforms + 25617a3babSopenharmony_ci gl_MaxFragmentImageUniforms + 26617a3babSopenharmony_ci gl_MaxComputeImageUniforms + 27617a3babSopenharmony_ci gl_MaxCombinedImageUniforms + 28617a3babSopenharmony_ci gl_MaxCombinedShaderOutputResources; 29617a3babSopenharmony_ci 30617a3babSopenharmony_ci bool b1, b3, b; 31617a3babSopenharmony_ci uint uin; 32617a3babSopenharmony_ci bvec2 b2 = mix(bvec2(b1), bvec2(b3), bvec2(b)); 33617a3babSopenharmony_ci uint um = mix(uin, uin, b); 34617a3babSopenharmony_ci ivec3 im3 = mix(ivec3(uin), ivec3(uin), bvec3(b)); 35617a3babSopenharmony_ci} 36617a3babSopenharmony_ci 37617a3babSopenharmony_ciuniform sampler2DMS s2dms; 38617a3babSopenharmony_ciuniform usampler2DMSArray us2dmsa; 39617a3babSopenharmony_cilayout(rgba32i) uniform iimage2DMS ii2dms; 40617a3babSopenharmony_cilayout(rgba32f) uniform image2DMSArray i2dmsa; 41617a3babSopenharmony_ci 42617a3babSopenharmony_civoid foo() 43617a3babSopenharmony_ci{ 44617a3babSopenharmony_ci int s = textureSamples(s2dms); 45617a3babSopenharmony_ci s += textureSamples(us2dmsa); 46617a3babSopenharmony_ci s += imageSamples(ii2dms); 47617a3babSopenharmony_ci s += imageSamples(i2dmsa); 48617a3babSopenharmony_ci float f = imageAtomicExchange(i2dmsa, ivec3(in3), 2, 4.5); 49617a3babSopenharmony_ci} 50617a3babSopenharmony_ci 51617a3babSopenharmony_ci#extension GL_ARB_sparse_texture2: enable 52617a3babSopenharmony_ci 53617a3babSopenharmony_ciuniform sampler2D s2D; 54617a3babSopenharmony_ciuniform isampler2DArray is2DArray; 55617a3babSopenharmony_ciuniform sampler2DRectShadow s2DRectShadow; 56617a3babSopenharmony_ci 57617a3babSopenharmony_ciin flat ivec2 offsets[4]; 58617a3babSopenharmony_ciin vec2 c2; 59617a3babSopenharmony_ciin vec3 c3; 60617a3babSopenharmony_ci 61617a3babSopenharmony_civoid testOffsets() 62617a3babSopenharmony_ci{ 63617a3babSopenharmony_ci vec4 texel = vec4(0.0); 64617a3babSopenharmony_ci ivec4 itexel = ivec4(0); 65617a3babSopenharmony_ci const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); 66617a3babSopenharmony_ci sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel); 67617a3babSopenharmony_ci sparseTextureGatherOffsetsARB(is2DArray, c3, constOffsets, itexel, 2); 68617a3babSopenharmony_ci sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, constOffsets, texel); 69617a3babSopenharmony_ci 70617a3babSopenharmony_ci sparseTextureGatherOffsetsARB(s2D, c2, offsets, texel); // Error : Non constant offsets 71617a3babSopenharmony_ci sparseTextureGatherOffsetsARB(is2DArray, c3, offsets, itexel, 2); // Error : Non constant offsets 72617a3babSopenharmony_ci sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, offsets, texel); // Error : Non constant offsets 73617a3babSopenharmony_ci 74617a3babSopenharmony_ci} 75617a3babSopenharmony_ci 76617a3babSopenharmony_ciin float gl_CullDistance[6]; 77617a3babSopenharmony_ci 78617a3babSopenharmony_cifloat cull(int i) 79617a3babSopenharmony_ci{ 80617a3babSopenharmony_ci return (i >= 6) ? gl_CullDistance[5] : gl_CullDistance[i]; 81617a3babSopenharmony_ci} 82617a3babSopenharmony_ci 83617a3babSopenharmony_cilayout(location = 6) in bName1 { 84617a3babSopenharmony_ci float f; 85617a3babSopenharmony_ci layout(location = 7) float g; 86617a3babSopenharmony_ci mat4 m; 87617a3babSopenharmony_ci} bInst1; 88617a3babSopenharmony_cilayout(location = 12) in bName2 { 89617a3babSopenharmony_ci float f; 90617a3babSopenharmony_ci layout(location = 13) float g; // ERROR, location on array 91617a3babSopenharmony_ci} bInst2[3]; 92617a3babSopenharmony_ci 93617a3babSopenharmony_cilayout(early_fragment_tests) in float f; // ERROR, must be standalone 94