Add support for extension GL_EXT_shader_integer_mix (#2203)
This commit is contained in:
parent
97ee5c88de
commit
2c53baedbb
@ -154,3 +154,31 @@ void qlodPass()
|
|||||||
lod = textureQueryLod(sampBuf, pf); // ERROR
|
lod = textureQueryLod(sampBuf, pf); // ERROR
|
||||||
lod = textureQueryLod(sampRect, pf2); // 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
|
||||||
|
}
|
||||||
|
@ -149,6 +149,34 @@ uniform mediump; // ERROR
|
|||||||
|
|
||||||
layout(early_fragment_tests) in; // ERROR
|
layout(early_fragment_tests) in; // 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
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef GL_FRAGMENT_PRECISION_HIGH
|
#ifndef GL_FRAGMENT_PRECISION_HIGH
|
||||||
#error missing GL_FRAGMENT_PRECISION_HIGH
|
#error missing GL_FRAGMENT_PRECISION_HIGH
|
||||||
#endif
|
#endif
|
||||||
|
@ -17,7 +17,8 @@ ERROR: 0:154: 'textureQueryLod' : no matching overloaded function found
|
|||||||
ERROR: 0:154: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
|
ERROR: 0:154: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
|
||||||
ERROR: 0:155: 'textureQueryLod' : no matching overloaded function found
|
ERROR: 0:155: 'textureQueryLod' : no matching overloaded function found
|
||||||
ERROR: 0:155: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
|
ERROR: 0:155: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
|
||||||
ERROR: 18 compilation errors. No code generated.
|
ERROR: 0:183: 'mix' : required extension not requested: GL_EXT_shader_integer_mix
|
||||||
|
ERROR: 19 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 150
|
Shader version: 150
|
||||||
@ -25,6 +26,7 @@ Requested GL_ARB_gpu_shader_fp64
|
|||||||
Requested GL_ARB_shader_bit_encoding
|
Requested GL_ARB_shader_bit_encoding
|
||||||
Requested GL_ARB_shading_language_packing
|
Requested GL_ARB_shading_language_packing
|
||||||
Requested GL_ARB_texture_query_lod
|
Requested GL_ARB_texture_query_lod
|
||||||
|
Requested GL_EXT_shader_integer_mix
|
||||||
gl_FragCoord pixel center is integer
|
gl_FragCoord pixel center is integer
|
||||||
gl_FragCoord origin is upper left
|
gl_FragCoord origin is upper left
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
@ -290,6 +292,130 @@ ERROR: node is still EOpNull!
|
|||||||
0:152 'pf2' ( temp 2-component vector of float)
|
0:152 'pf2' ( temp 2-component vector of float)
|
||||||
0:154 'lod' ( temp 2-component vector of float)
|
0:154 'lod' ( temp 2-component vector of float)
|
||||||
0:155 'lod' ( temp 2-component vector of float)
|
0:155 'lod' ( temp 2-component vector of float)
|
||||||
|
0:164 Function Definition: testmix( ( global void)
|
||||||
|
0:164 Function Parameters:
|
||||||
|
0:166 Sequence
|
||||||
|
0:166 Sequence
|
||||||
|
0:166 move second child to first child ( temp int)
|
||||||
|
0:166 'ival' ( temp int)
|
||||||
|
0:166 mix ( global int)
|
||||||
|
0:166 'x' ( global int)
|
||||||
|
0:166 'y' ( global int)
|
||||||
|
0:166 'b' ( global bool)
|
||||||
|
0:167 Sequence
|
||||||
|
0:167 move second child to first child ( temp 2-component vector of int)
|
||||||
|
0:167 'iv2' ( temp 2-component vector of int)
|
||||||
|
0:167 mix ( global 2-component vector of int)
|
||||||
|
0:167 Construct ivec2 ( temp 2-component vector of int)
|
||||||
|
0:167 'x' ( global int)
|
||||||
|
0:167 Construct ivec2 ( temp 2-component vector of int)
|
||||||
|
0:167 'y' ( global int)
|
||||||
|
0:167 Construct bvec2 ( temp 2-component vector of bool)
|
||||||
|
0:167 'b' ( global bool)
|
||||||
|
0:168 Sequence
|
||||||
|
0:168 move second child to first child ( temp 3-component vector of int)
|
||||||
|
0:168 'iv3' ( temp 3-component vector of int)
|
||||||
|
0:168 mix ( global 3-component vector of int)
|
||||||
|
0:168 Construct ivec3 ( temp 3-component vector of int)
|
||||||
|
0:168 'x' ( global int)
|
||||||
|
0:168 Construct ivec3 ( temp 3-component vector of int)
|
||||||
|
0:168 'y' ( global int)
|
||||||
|
0:168 Construct bvec3 ( temp 3-component vector of bool)
|
||||||
|
0:168 'b' ( global bool)
|
||||||
|
0:169 Sequence
|
||||||
|
0:169 move second child to first child ( temp 4-component vector of int)
|
||||||
|
0:169 'iv4' ( temp 4-component vector of int)
|
||||||
|
0:169 mix ( global 4-component vector of int)
|
||||||
|
0:169 Construct ivec4 ( temp 4-component vector of int)
|
||||||
|
0:169 'x' ( global int)
|
||||||
|
0:169 Construct ivec4 ( temp 4-component vector of int)
|
||||||
|
0:169 'x' ( global int)
|
||||||
|
0:169 Construct bvec4 ( temp 4-component vector of bool)
|
||||||
|
0:169 'b' ( global bool)
|
||||||
|
0:170 Sequence
|
||||||
|
0:170 move second child to first child ( temp uint)
|
||||||
|
0:170 'uiv' ( temp uint)
|
||||||
|
0:170 mix ( global uint)
|
||||||
|
0:170 'z' ( global uint)
|
||||||
|
0:170 'w' ( global uint)
|
||||||
|
0:170 'b' ( global bool)
|
||||||
|
0:171 Sequence
|
||||||
|
0:171 move second child to first child ( temp 2-component vector of uint)
|
||||||
|
0:171 'uv2' ( temp 2-component vector of uint)
|
||||||
|
0:171 mix ( global 2-component vector of uint)
|
||||||
|
0:171 Construct uvec2 ( temp 2-component vector of uint)
|
||||||
|
0:171 'z' ( global uint)
|
||||||
|
0:171 Construct uvec2 ( temp 2-component vector of uint)
|
||||||
|
0:171 'z' ( global uint)
|
||||||
|
0:171 Construct bvec2 ( temp 2-component vector of bool)
|
||||||
|
0:171 'b' ( global bool)
|
||||||
|
0:172 Sequence
|
||||||
|
0:172 move second child to first child ( temp 3-component vector of uint)
|
||||||
|
0:172 'uv3' ( temp 3-component vector of uint)
|
||||||
|
0:172 mix ( global 3-component vector of uint)
|
||||||
|
0:172 Construct uvec3 ( temp 3-component vector of uint)
|
||||||
|
0:172 'z' ( global uint)
|
||||||
|
0:172 Construct uvec3 ( temp 3-component vector of uint)
|
||||||
|
0:172 'z' ( global uint)
|
||||||
|
0:172 Construct bvec3 ( temp 3-component vector of bool)
|
||||||
|
0:172 'b' ( global bool)
|
||||||
|
0:173 Sequence
|
||||||
|
0:173 move second child to first child ( temp 4-component vector of uint)
|
||||||
|
0:173 'uv4' ( temp 4-component vector of uint)
|
||||||
|
0:173 mix ( global 4-component vector of uint)
|
||||||
|
0:173 Construct uvec4 ( temp 4-component vector of uint)
|
||||||
|
0:173 'z' ( global uint)
|
||||||
|
0:173 Construct uvec4 ( temp 4-component vector of uint)
|
||||||
|
0:173 'z' ( global uint)
|
||||||
|
0:173 Construct bvec4 ( temp 4-component vector of bool)
|
||||||
|
0:173 'b' ( global bool)
|
||||||
|
0:174 Sequence
|
||||||
|
0:174 move second child to first child ( temp bool)
|
||||||
|
0:174 'bv' ( temp bool)
|
||||||
|
0:174 mix ( global bool)
|
||||||
|
0:174 'b1' ( global bool)
|
||||||
|
0:174 'b2' ( global bool)
|
||||||
|
0:174 'b' ( global bool)
|
||||||
|
0:175 Sequence
|
||||||
|
0:175 move second child to first child ( temp 2-component vector of bool)
|
||||||
|
0:175 'bv2' ( temp 2-component vector of bool)
|
||||||
|
0:175 mix ( global 2-component vector of bool)
|
||||||
|
0:175 Construct bvec2 ( temp 2-component vector of bool)
|
||||||
|
0:175 'b1' ( global bool)
|
||||||
|
0:175 Construct bvec2 ( temp 2-component vector of bool)
|
||||||
|
0:175 'b2' ( global bool)
|
||||||
|
0:175 Construct bvec2 ( temp 2-component vector of bool)
|
||||||
|
0:175 'b' ( global bool)
|
||||||
|
0:176 Sequence
|
||||||
|
0:176 move second child to first child ( temp 3-component vector of bool)
|
||||||
|
0:176 'bv3' ( temp 3-component vector of bool)
|
||||||
|
0:176 mix ( global 3-component vector of bool)
|
||||||
|
0:176 Construct bvec3 ( temp 3-component vector of bool)
|
||||||
|
0:176 'b1' ( global bool)
|
||||||
|
0:176 Construct bvec3 ( temp 3-component vector of bool)
|
||||||
|
0:176 'b2' ( global bool)
|
||||||
|
0:176 Construct bvec3 ( temp 3-component vector of bool)
|
||||||
|
0:176 'b' ( global bool)
|
||||||
|
0:177 Sequence
|
||||||
|
0:177 move second child to first child ( temp 4-component vector of bool)
|
||||||
|
0:177 'bv4' ( temp 4-component vector of bool)
|
||||||
|
0:177 mix ( global 4-component vector of bool)
|
||||||
|
0:177 Construct bvec4 ( temp 4-component vector of bool)
|
||||||
|
0:177 'b1' ( global bool)
|
||||||
|
0:177 Construct bvec4 ( temp 4-component vector of bool)
|
||||||
|
0:177 'b2' ( global bool)
|
||||||
|
0:177 Construct bvec4 ( temp 4-component vector of bool)
|
||||||
|
0:177 'b' ( global bool)
|
||||||
|
0:181 Function Definition: testmixFail( ( global void)
|
||||||
|
0:181 Function Parameters:
|
||||||
|
0:183 Sequence
|
||||||
|
0:183 Sequence
|
||||||
|
0:183 move second child to first child ( temp int)
|
||||||
|
0:183 'ival' ( temp int)
|
||||||
|
0:183 mix ( global int)
|
||||||
|
0:183 'x' ( global int)
|
||||||
|
0:183 'y' ( global int)
|
||||||
|
0:183 'b' ( global bool)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
|
0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
|
||||||
0:? 'foo' ( smooth in 4-component vector of float)
|
0:? 'foo' ( smooth in 4-component vector of float)
|
||||||
@ -330,6 +456,13 @@ ERROR: node is still EOpNull!
|
|||||||
0:? 'samp2DAs' ( uniform sampler2DArrayShadow)
|
0:? 'samp2DAs' ( uniform sampler2DArrayShadow)
|
||||||
0:? 'sampBuf' ( uniform samplerBuffer)
|
0:? 'sampBuf' ( uniform samplerBuffer)
|
||||||
0:? 'sampRect' ( uniform sampler2DRect)
|
0:? 'sampRect' ( uniform sampler2DRect)
|
||||||
|
0:? 'b1' ( global bool)
|
||||||
|
0:? 'b2' ( global bool)
|
||||||
|
0:? 'b' ( global bool)
|
||||||
|
0:? 'x' ( global int)
|
||||||
|
0:? 'y' ( global int)
|
||||||
|
0:? 'z' ( global uint)
|
||||||
|
0:? 'w' ( global uint)
|
||||||
|
|
||||||
|
|
||||||
Linked fragment stage:
|
Linked fragment stage:
|
||||||
@ -340,6 +473,7 @@ Requested GL_ARB_gpu_shader_fp64
|
|||||||
Requested GL_ARB_shader_bit_encoding
|
Requested GL_ARB_shader_bit_encoding
|
||||||
Requested GL_ARB_shading_language_packing
|
Requested GL_ARB_shading_language_packing
|
||||||
Requested GL_ARB_texture_query_lod
|
Requested GL_ARB_texture_query_lod
|
||||||
|
Requested GL_EXT_shader_integer_mix
|
||||||
gl_FragCoord pixel center is integer
|
gl_FragCoord pixel center is integer
|
||||||
gl_FragCoord origin is upper left
|
gl_FragCoord origin is upper left
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
@ -415,4 +549,11 @@ ERROR: node is still EOpNull!
|
|||||||
0:? 'samp2DAs' ( uniform sampler2DArrayShadow)
|
0:? 'samp2DAs' ( uniform sampler2DArrayShadow)
|
||||||
0:? 'sampBuf' ( uniform samplerBuffer)
|
0:? 'sampBuf' ( uniform samplerBuffer)
|
||||||
0:? 'sampRect' ( uniform sampler2DRect)
|
0:? 'sampRect' ( uniform sampler2DRect)
|
||||||
|
0:? 'b1' ( global bool)
|
||||||
|
0:? 'b2' ( global bool)
|
||||||
|
0:? 'b' ( global bool)
|
||||||
|
0:? 'x' ( global int)
|
||||||
|
0:? 'y' ( global int)
|
||||||
|
0:? 'z' ( global uint)
|
||||||
|
0:? 'w' ( global uint)
|
||||||
|
|
||||||
|
@ -40,15 +40,17 @@ ERROR: 0:129: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset,
|
|||||||
ERROR: 0:129: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
|
ERROR: 0:129: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]
|
||||||
ERROR: 0:148: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type)
|
ERROR: 0:148: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type)
|
||||||
ERROR: 0:150: 'early_fragment_tests' : not supported for this version or the enabled extensions
|
ERROR: 0:150: 'early_fragment_tests' : not supported for this version or the enabled extensions
|
||||||
ERROR: 0:156: 'invariant' : can only apply to an output
|
ERROR: 0:177: 'specific signature of builtin mix' : required extension not requested: GL_EXT_shader_integer_mix
|
||||||
ERROR: 0:157: 'invariant' : can only apply to an output
|
ERROR: 0:184: 'invariant' : can only apply to an output
|
||||||
ERROR: 0:158: 'invariant' : can only apply to an output
|
ERROR: 0:185: 'invariant' : can only apply to an output
|
||||||
ERROR: 0:160: 'imageBuffer' : Reserved word.
|
ERROR: 0:186: 'invariant' : can only apply to an output
|
||||||
ERROR: 0:160: '' : syntax error, unexpected IMAGEBUFFER, expecting COMMA or SEMICOLON
|
ERROR: 0:188: 'imageBuffer' : Reserved word.
|
||||||
ERROR: 46 compilation errors. No code generated.
|
ERROR: 0:188: '' : syntax error, unexpected IMAGEBUFFER, expecting COMMA or SEMICOLON
|
||||||
|
ERROR: 47 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 300
|
Shader version: 300
|
||||||
|
Requested GL_EXT_shader_integer_mix
|
||||||
using early_fragment_tests
|
using early_fragment_tests
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
0:53 Function Definition: main( ( global void)
|
0:53 Function Definition: main( ( global void)
|
||||||
@ -362,6 +364,130 @@ ERROR: node is still EOpNull!
|
|||||||
0:145 21.000000
|
0:145 21.000000
|
||||||
0:145 22.000000
|
0:145 22.000000
|
||||||
0:145 33.000000
|
0:145 33.000000
|
||||||
|
0:158 Function Definition: testmix( ( global void)
|
||||||
|
0:158 Function Parameters:
|
||||||
|
0:160 Sequence
|
||||||
|
0:160 Sequence
|
||||||
|
0:160 move second child to first child ( temp mediump int)
|
||||||
|
0:160 'ival' ( temp mediump int)
|
||||||
|
0:160 mix ( global mediump int)
|
||||||
|
0:160 'x' ( global mediump int)
|
||||||
|
0:160 'y' ( global mediump int)
|
||||||
|
0:160 'b' ( global bool)
|
||||||
|
0:161 Sequence
|
||||||
|
0:161 move second child to first child ( temp mediump 2-component vector of int)
|
||||||
|
0:161 'iv2' ( temp mediump 2-component vector of int)
|
||||||
|
0:161 mix ( global mediump 2-component vector of int)
|
||||||
|
0:161 Construct ivec2 ( temp mediump 2-component vector of int)
|
||||||
|
0:161 'x' ( global mediump int)
|
||||||
|
0:161 Construct ivec2 ( temp mediump 2-component vector of int)
|
||||||
|
0:161 'y' ( global mediump int)
|
||||||
|
0:161 Construct bvec2 ( temp 2-component vector of bool)
|
||||||
|
0:161 'b' ( global bool)
|
||||||
|
0:162 Sequence
|
||||||
|
0:162 move second child to first child ( temp mediump 3-component vector of int)
|
||||||
|
0:162 'iv3' ( temp mediump 3-component vector of int)
|
||||||
|
0:162 mix ( global mediump 3-component vector of int)
|
||||||
|
0:162 Construct ivec3 ( temp mediump 3-component vector of int)
|
||||||
|
0:162 'x' ( global mediump int)
|
||||||
|
0:162 Construct ivec3 ( temp mediump 3-component vector of int)
|
||||||
|
0:162 'y' ( global mediump int)
|
||||||
|
0:162 Construct bvec3 ( temp 3-component vector of bool)
|
||||||
|
0:162 'b' ( global bool)
|
||||||
|
0:163 Sequence
|
||||||
|
0:163 move second child to first child ( temp mediump 4-component vector of int)
|
||||||
|
0:163 'iv4' ( temp mediump 4-component vector of int)
|
||||||
|
0:163 mix ( global mediump 4-component vector of int)
|
||||||
|
0:163 Construct ivec4 ( temp mediump 4-component vector of int)
|
||||||
|
0:163 'x' ( global mediump int)
|
||||||
|
0:163 Construct ivec4 ( temp mediump 4-component vector of int)
|
||||||
|
0:163 'x' ( global mediump int)
|
||||||
|
0:163 Construct bvec4 ( temp 4-component vector of bool)
|
||||||
|
0:163 'b' ( global bool)
|
||||||
|
0:164 Sequence
|
||||||
|
0:164 move second child to first child ( temp mediump uint)
|
||||||
|
0:164 'uiv' ( temp mediump uint)
|
||||||
|
0:164 mix ( global mediump uint)
|
||||||
|
0:164 'z' ( global mediump uint)
|
||||||
|
0:164 'w' ( global mediump uint)
|
||||||
|
0:164 'b' ( global bool)
|
||||||
|
0:165 Sequence
|
||||||
|
0:165 move second child to first child ( temp mediump 2-component vector of uint)
|
||||||
|
0:165 'uv2' ( temp mediump 2-component vector of uint)
|
||||||
|
0:165 mix ( global mediump 2-component vector of uint)
|
||||||
|
0:165 Construct uvec2 ( temp mediump 2-component vector of uint)
|
||||||
|
0:165 'z' ( global mediump uint)
|
||||||
|
0:165 Construct uvec2 ( temp mediump 2-component vector of uint)
|
||||||
|
0:165 'z' ( global mediump uint)
|
||||||
|
0:165 Construct bvec2 ( temp 2-component vector of bool)
|
||||||
|
0:165 'b' ( global bool)
|
||||||
|
0:166 Sequence
|
||||||
|
0:166 move second child to first child ( temp mediump 3-component vector of uint)
|
||||||
|
0:166 'uv3' ( temp mediump 3-component vector of uint)
|
||||||
|
0:166 mix ( global mediump 3-component vector of uint)
|
||||||
|
0:166 Construct uvec3 ( temp mediump 3-component vector of uint)
|
||||||
|
0:166 'z' ( global mediump uint)
|
||||||
|
0:166 Construct uvec3 ( temp mediump 3-component vector of uint)
|
||||||
|
0:166 'z' ( global mediump uint)
|
||||||
|
0:166 Construct bvec3 ( temp 3-component vector of bool)
|
||||||
|
0:166 'b' ( global bool)
|
||||||
|
0:167 Sequence
|
||||||
|
0:167 move second child to first child ( temp mediump 4-component vector of uint)
|
||||||
|
0:167 'uv4' ( temp mediump 4-component vector of uint)
|
||||||
|
0:167 mix ( global mediump 4-component vector of uint)
|
||||||
|
0:167 Construct uvec4 ( temp mediump 4-component vector of uint)
|
||||||
|
0:167 'z' ( global mediump uint)
|
||||||
|
0:167 Construct uvec4 ( temp mediump 4-component vector of uint)
|
||||||
|
0:167 'z' ( global mediump uint)
|
||||||
|
0:167 Construct bvec4 ( temp 4-component vector of bool)
|
||||||
|
0:167 'b' ( global bool)
|
||||||
|
0:168 Sequence
|
||||||
|
0:168 move second child to first child ( temp bool)
|
||||||
|
0:168 'bv' ( temp bool)
|
||||||
|
0:168 mix ( global bool)
|
||||||
|
0:168 'b1' ( global bool)
|
||||||
|
0:168 'b2' ( global bool)
|
||||||
|
0:168 'b' ( global bool)
|
||||||
|
0:169 Sequence
|
||||||
|
0:169 move second child to first child ( temp 2-component vector of bool)
|
||||||
|
0:169 'bv2' ( temp 2-component vector of bool)
|
||||||
|
0:169 mix ( global 2-component vector of bool)
|
||||||
|
0:169 Construct bvec2 ( temp 2-component vector of bool)
|
||||||
|
0:169 'b1' ( global bool)
|
||||||
|
0:169 Construct bvec2 ( temp 2-component vector of bool)
|
||||||
|
0:169 'b2' ( global bool)
|
||||||
|
0:169 Construct bvec2 ( temp 2-component vector of bool)
|
||||||
|
0:169 'b' ( global bool)
|
||||||
|
0:170 Sequence
|
||||||
|
0:170 move second child to first child ( temp 3-component vector of bool)
|
||||||
|
0:170 'bv3' ( temp 3-component vector of bool)
|
||||||
|
0:170 mix ( global 3-component vector of bool)
|
||||||
|
0:170 Construct bvec3 ( temp 3-component vector of bool)
|
||||||
|
0:170 'b1' ( global bool)
|
||||||
|
0:170 Construct bvec3 ( temp 3-component vector of bool)
|
||||||
|
0:170 'b2' ( global bool)
|
||||||
|
0:170 Construct bvec3 ( temp 3-component vector of bool)
|
||||||
|
0:170 'b' ( global bool)
|
||||||
|
0:171 Sequence
|
||||||
|
0:171 move second child to first child ( temp 4-component vector of bool)
|
||||||
|
0:171 'bv4' ( temp 4-component vector of bool)
|
||||||
|
0:171 mix ( global 4-component vector of bool)
|
||||||
|
0:171 Construct bvec4 ( temp 4-component vector of bool)
|
||||||
|
0:171 'b1' ( global bool)
|
||||||
|
0:171 Construct bvec4 ( temp 4-component vector of bool)
|
||||||
|
0:171 'b2' ( global bool)
|
||||||
|
0:171 Construct bvec4 ( temp 4-component vector of bool)
|
||||||
|
0:171 'b' ( global bool)
|
||||||
|
0:175 Function Definition: testmixFail( ( global void)
|
||||||
|
0:175 Function Parameters:
|
||||||
|
0:177 Sequence
|
||||||
|
0:177 Sequence
|
||||||
|
0:177 move second child to first child ( temp mediump int)
|
||||||
|
0:177 'ival' ( temp mediump int)
|
||||||
|
0:177 mix ( global mediump int)
|
||||||
|
0:177 'x' ( global mediump int)
|
||||||
|
0:177 'y' ( global mediump int)
|
||||||
|
0:177 'b' ( global bool)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? 's2D' ( uniform lowp sampler2D)
|
0:? 's2D' ( uniform lowp sampler2D)
|
||||||
0:? 's3D' ( uniform lowp sampler3D)
|
0:? 's3D' ( uniform lowp sampler3D)
|
||||||
@ -397,6 +523,13 @@ ERROR: node is still EOpNull!
|
|||||||
0:? 'colors' ( out 4-element array of lowp 4-component vector of float)
|
0:? 'colors' ( out 4-element array of lowp 4-component vector of float)
|
||||||
0:? 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s})
|
0:? 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s})
|
||||||
0:? 'st2' ( uniform structure{ global mediump int i, global lowp sampler2D s})
|
0:? 'st2' ( uniform structure{ global mediump int i, global lowp sampler2D s})
|
||||||
|
0:? 'b1' ( global bool)
|
||||||
|
0:? 'b2' ( global bool)
|
||||||
|
0:? 'b' ( global bool)
|
||||||
|
0:? 'x' ( global mediump int)
|
||||||
|
0:? 'y' ( global mediump int)
|
||||||
|
0:? 'z' ( global mediump uint)
|
||||||
|
0:? 'w' ( global mediump uint)
|
||||||
0:? 'fooinv' ( invariant smooth in lowp 4-component vector of float)
|
0:? 'fooinv' ( invariant smooth in lowp 4-component vector of float)
|
||||||
|
|
||||||
|
|
||||||
@ -405,6 +538,7 @@ Linked fragment stage:
|
|||||||
ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers
|
ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers
|
||||||
|
|
||||||
Shader version: 300
|
Shader version: 300
|
||||||
|
Requested GL_EXT_shader_integer_mix
|
||||||
using early_fragment_tests
|
using early_fragment_tests
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
0:53 Function Definition: main( ( global void)
|
0:53 Function Definition: main( ( global void)
|
||||||
@ -628,5 +762,12 @@ ERROR: node is still EOpNull!
|
|||||||
0:? 'colors' ( out 4-element array of lowp 4-component vector of float)
|
0:? 'colors' ( out 4-element array of lowp 4-component vector of float)
|
||||||
0:? 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s})
|
0:? 'st1' ( uniform structure{ global mediump int i, global lowp sampler2D s})
|
||||||
0:? 'st2' ( uniform structure{ global mediump int i, global lowp sampler2D s})
|
0:? 'st2' ( uniform structure{ global mediump int i, global lowp sampler2D s})
|
||||||
|
0:? 'b1' ( global bool)
|
||||||
|
0:? 'b2' ( global bool)
|
||||||
|
0:? 'b' ( global bool)
|
||||||
|
0:? 'x' ( global mediump int)
|
||||||
|
0:? 'y' ( global mediump int)
|
||||||
|
0:? 'z' ( global mediump uint)
|
||||||
|
0:? 'w' ( global mediump uint)
|
||||||
0:? 'fooinv' ( invariant smooth in lowp 4-component vector of float)
|
0:? 'fooinv' ( invariant smooth in lowp 4-component vector of float)
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ spv.specConstant.vert
|
|||||||
Source GLSL 400
|
Source GLSL 400
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 9 "arraySize"
|
Name 9 "arraySize"
|
||||||
Name 14 "foo(vf4[s4534];"
|
Name 14 "foo(vf4[s4546];"
|
||||||
Name 13 "p"
|
Name 13 "p"
|
||||||
Name 17 "builtin_spec_constant("
|
Name 17 "builtin_spec_constant("
|
||||||
Name 20 "color"
|
Name 20 "color"
|
||||||
@ -102,10 +102,10 @@ spv.specConstant.vert
|
|||||||
Store 20(color) 46
|
Store 20(color) 46
|
||||||
48: 10 Load 22(ucol)
|
48: 10 Load 22(ucol)
|
||||||
Store 47(param) 48
|
Store 47(param) 48
|
||||||
49: 2 FunctionCall 14(foo(vf4[s4534];) 47(param)
|
49: 2 FunctionCall 14(foo(vf4[s4546];) 47(param)
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
14(foo(vf4[s4534];): 2 Function None 12
|
14(foo(vf4[s4546];): 2 Function None 12
|
||||||
13(p): 11(ptr) FunctionParameter
|
13(p): 11(ptr) FunctionParameter
|
||||||
15: Label
|
15: Label
|
||||||
54: 24(ptr) AccessChain 53(dupUcol) 23
|
54: 24(ptr) AccessChain 53(dupUcol) 23
|
||||||
|
@ -3060,6 +3060,24 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||||||
"\n");
|
"\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((profile == EEsProfile && version >= 300 && version < 310) ||
|
||||||
|
(profile != EEsProfile && version >= 150 && version < 450)) { // GL_EXT_shader_integer_mix
|
||||||
|
commonBuiltins.append("int mix(int, int, bool);"
|
||||||
|
"ivec2 mix(ivec2, ivec2, bvec2);"
|
||||||
|
"ivec3 mix(ivec3, ivec3, bvec3);"
|
||||||
|
"ivec4 mix(ivec4, ivec4, bvec4);"
|
||||||
|
"uint mix(uint, uint, bool );"
|
||||||
|
"uvec2 mix(uvec2, uvec2, bvec2);"
|
||||||
|
"uvec3 mix(uvec3, uvec3, bvec3);"
|
||||||
|
"uvec4 mix(uvec4, uvec4, bvec4);"
|
||||||
|
"bool mix(bool, bool, bool );"
|
||||||
|
"bvec2 mix(bvec2, bvec2, bvec2);"
|
||||||
|
"bvec3 mix(bvec3, bvec3, bvec3);"
|
||||||
|
"bvec4 mix(bvec4, bvec4, bvec4);"
|
||||||
|
|
||||||
|
"\n");
|
||||||
|
}
|
||||||
|
|
||||||
// GL_AMD_gpu_shader_half_float/Explicit types
|
// GL_AMD_gpu_shader_half_float/Explicit types
|
||||||
if (profile != EEsProfile && version >= 450) {
|
if (profile != EEsProfile && version >= 450) {
|
||||||
commonBuiltins.append(
|
commonBuiltins.append(
|
||||||
|
@ -2198,6 +2198,28 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
|
|||||||
memorySemanticsCheck(loc, fnCandidate, callNode);
|
memorySemanticsCheck(loc, fnCandidate, callNode);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EOpMix:
|
||||||
|
if (profile == EEsProfile && version < 310) {
|
||||||
|
// Look for specific signatures
|
||||||
|
if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat &&
|
||||||
|
(*argp)[1]->getAsTyped()->getBasicType() != EbtFloat &&
|
||||||
|
(*argp)[2]->getAsTyped()->getBasicType() == EbtBool) {
|
||||||
|
requireExtensions(loc, 1, &E_GL_EXT_shader_integer_mix, "specific signature of builtin mix");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (profile != EEsProfile && version < 450) {
|
||||||
|
if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat &&
|
||||||
|
(*argp)[0]->getAsTyped()->getBasicType() != EbtDouble &&
|
||||||
|
(*argp)[1]->getAsTyped()->getBasicType() != EbtFloat &&
|
||||||
|
(*argp)[1]->getAsTyped()->getBasicType() != EbtDouble &&
|
||||||
|
(*argp)[2]->getAsTyped()->getBasicType() == EbtBool) {
|
||||||
|
requireExtensions(loc, 1, &E_GL_EXT_shader_integer_mix, fnCandidate.getName().c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -297,6 +297,7 @@ void TParseVersions::initializeExtensionBehavior()
|
|||||||
extensionBehavior[E_GL_OES_tessellation_point_size] = EBhDisable;
|
extensionBehavior[E_GL_OES_tessellation_point_size] = EBhDisable;
|
||||||
extensionBehavior[E_GL_OES_texture_buffer] = EBhDisable;
|
extensionBehavior[E_GL_OES_texture_buffer] = EBhDisable;
|
||||||
extensionBehavior[E_GL_OES_texture_cube_map_array] = EBhDisable;
|
extensionBehavior[E_GL_OES_texture_cube_map_array] = EBhDisable;
|
||||||
|
extensionBehavior[E_GL_EXT_shader_integer_mix] = EBhDisable;
|
||||||
|
|
||||||
// EXT extensions
|
// EXT extensions
|
||||||
extensionBehavior[E_GL_EXT_device_group] = EBhDisable;
|
extensionBehavior[E_GL_EXT_device_group] = EBhDisable;
|
||||||
@ -363,6 +364,7 @@ void TParseVersions::getPreamble(std::string& preamble)
|
|||||||
"#define GL_EXT_tessellation_point_size 1\n"
|
"#define GL_EXT_tessellation_point_size 1\n"
|
||||||
"#define GL_EXT_texture_buffer 1\n"
|
"#define GL_EXT_texture_buffer 1\n"
|
||||||
"#define GL_EXT_texture_cube_map_array 1\n"
|
"#define GL_EXT_texture_cube_map_array 1\n"
|
||||||
|
"#define GL_EXT_shader_integer_mix 1\n"
|
||||||
|
|
||||||
// OES matching AEP
|
// OES matching AEP
|
||||||
"#define GL_OES_geometry_shader 1\n"
|
"#define GL_OES_geometry_shader 1\n"
|
||||||
|
@ -267,6 +267,7 @@ const char* const E_GL_EXT_tessellation_shader = "GL_EXT_tessel
|
|||||||
const char* const E_GL_EXT_tessellation_point_size = "GL_EXT_tessellation_point_size";
|
const char* const E_GL_EXT_tessellation_point_size = "GL_EXT_tessellation_point_size";
|
||||||
const char* const E_GL_EXT_texture_buffer = "GL_EXT_texture_buffer";
|
const char* const E_GL_EXT_texture_buffer = "GL_EXT_texture_buffer";
|
||||||
const char* const E_GL_EXT_texture_cube_map_array = "GL_EXT_texture_cube_map_array";
|
const char* const E_GL_EXT_texture_cube_map_array = "GL_EXT_texture_cube_map_array";
|
||||||
|
const char* const E_GL_EXT_shader_integer_mix = "GL_EXT_shader_integer_mix";
|
||||||
|
|
||||||
// OES matching AEP
|
// OES matching AEP
|
||||||
const char* const E_GL_OES_geometry_shader = "GL_OES_geometry_shader";
|
const char* const E_GL_OES_geometry_shader = "GL_OES_geometry_shader";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user