185 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #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
 | |
| }
 | 
