mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 12:00:05 +00:00
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(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
|
||||
|
||||
// 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
|
||||
#error missing GL_FRAGMENT_PRECISION_HIGH
|
||||
#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:155: 'textureQueryLod' : no matching overloaded function found
|
||||
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
|
||||
@ -25,6 +26,7 @@ Requested GL_ARB_gpu_shader_fp64
|
||||
Requested GL_ARB_shader_bit_encoding
|
||||
Requested GL_ARB_shading_language_packing
|
||||
Requested GL_ARB_texture_query_lod
|
||||
Requested GL_EXT_shader_integer_mix
|
||||
gl_FragCoord pixel center is integer
|
||||
gl_FragCoord origin is upper left
|
||||
ERROR: node is still EOpNull!
|
||||
@ -290,6 +292,130 @@ ERROR: node is still EOpNull!
|
||||
0:152 'pf2' ( 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: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:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
|
||||
0:? 'foo' ( smooth in 4-component vector of float)
|
||||
@ -330,6 +456,13 @@ ERROR: node is still EOpNull!
|
||||
0:? 'samp2DAs' ( uniform sampler2DArrayShadow)
|
||||
0:? 'sampBuf' ( uniform samplerBuffer)
|
||||
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:
|
||||
@ -340,6 +473,7 @@ Requested GL_ARB_gpu_shader_fp64
|
||||
Requested GL_ARB_shader_bit_encoding
|
||||
Requested GL_ARB_shading_language_packing
|
||||
Requested GL_ARB_texture_query_lod
|
||||
Requested GL_EXT_shader_integer_mix
|
||||
gl_FragCoord pixel center is integer
|
||||
gl_FragCoord origin is upper left
|
||||
ERROR: node is still EOpNull!
|
||||
@ -415,4 +549,11 @@ ERROR: node is still EOpNull!
|
||||
0:? 'samp2DAs' ( uniform sampler2DArrayShadow)
|
||||
0:? 'sampBuf' ( uniform samplerBuffer)
|
||||
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: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:156: 'invariant' : can only apply to an output
|
||||
ERROR: 0:157: 'invariant' : can only apply to an output
|
||||
ERROR: 0:158: 'invariant' : can only apply to an output
|
||||
ERROR: 0:160: 'imageBuffer' : Reserved word.
|
||||
ERROR: 0:160: '' : syntax error, unexpected IMAGEBUFFER, expecting COMMA or SEMICOLON
|
||||
ERROR: 46 compilation errors. No code generated.
|
||||
ERROR: 0:177: 'specific signature of builtin mix' : required extension not requested: GL_EXT_shader_integer_mix
|
||||
ERROR: 0:184: 'invariant' : can only apply to an output
|
||||
ERROR: 0:185: 'invariant' : can only apply to an output
|
||||
ERROR: 0:186: 'invariant' : can only apply to an output
|
||||
ERROR: 0:188: 'imageBuffer' : Reserved word.
|
||||
ERROR: 0:188: '' : syntax error, unexpected IMAGEBUFFER, expecting COMMA or SEMICOLON
|
||||
ERROR: 47 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 300
|
||||
Requested GL_EXT_shader_integer_mix
|
||||
using early_fragment_tests
|
||||
ERROR: node is still EOpNull!
|
||||
0:53 Function Definition: main( ( global void)
|
||||
@ -362,6 +364,130 @@ ERROR: node is still EOpNull!
|
||||
0:145 21.000000
|
||||
0:145 22.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:? 's2D' ( uniform lowp sampler2D)
|
||||
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:? 'st1' ( 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)
|
||||
|
||||
|
||||
@ -405,6 +538,7 @@ Linked fragment stage:
|
||||
ERROR: Linking fragment stage: when more than one fragment shader output, all must have location qualifiers
|
||||
|
||||
Shader version: 300
|
||||
Requested GL_EXT_shader_integer_mix
|
||||
using early_fragment_tests
|
||||
ERROR: node is still EOpNull!
|
||||
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:? 'st1' ( 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)
|
||||
|
||||
|
@ -11,7 +11,7 @@ spv.specConstant.vert
|
||||
Source GLSL 400
|
||||
Name 4 "main"
|
||||
Name 9 "arraySize"
|
||||
Name 14 "foo(vf4[s4534];"
|
||||
Name 14 "foo(vf4[s4546];"
|
||||
Name 13 "p"
|
||||
Name 17 "builtin_spec_constant("
|
||||
Name 20 "color"
|
||||
@ -102,10 +102,10 @@ spv.specConstant.vert
|
||||
Store 20(color) 46
|
||||
48: 10 Load 22(ucol)
|
||||
Store 47(param) 48
|
||||
49: 2 FunctionCall 14(foo(vf4[s4534];) 47(param)
|
||||
49: 2 FunctionCall 14(foo(vf4[s4546];) 47(param)
|
||||
Return
|
||||
FunctionEnd
|
||||
14(foo(vf4[s4534];): 2 Function None 12
|
||||
14(foo(vf4[s4546];): 2 Function None 12
|
||||
13(p): 11(ptr) FunctionParameter
|
||||
15: Label
|
||||
54: 24(ptr) AccessChain 53(dupUcol) 23
|
||||
|
@ -3060,6 +3060,24 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
||||
"\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
|
||||
if (profile != EEsProfile && version >= 450) {
|
||||
commonBuiltins.append(
|
||||
|
@ -2198,6 +2198,28 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
|
||||
memorySemanticsCheck(loc, fnCandidate, callNode);
|
||||
}
|
||||
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
|
||||
|
||||
default:
|
||||
|
@ -297,6 +297,7 @@ void TParseVersions::initializeExtensionBehavior()
|
||||
extensionBehavior[E_GL_OES_tessellation_point_size] = EBhDisable;
|
||||
extensionBehavior[E_GL_OES_texture_buffer] = EBhDisable;
|
||||
extensionBehavior[E_GL_OES_texture_cube_map_array] = EBhDisable;
|
||||
extensionBehavior[E_GL_EXT_shader_integer_mix] = EBhDisable;
|
||||
|
||||
// EXT extensions
|
||||
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_texture_buffer 1\n"
|
||||
"#define GL_EXT_texture_cube_map_array 1\n"
|
||||
"#define GL_EXT_shader_integer_mix 1\n"
|
||||
|
||||
// OES matching AEP
|
||||
"#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_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_shader_integer_mix = "GL_EXT_shader_integer_mix";
|
||||
|
||||
// OES matching AEP
|
||||
const char* const E_GL_OES_geometry_shader = "GL_OES_geometry_shader";
|
||||
|
Loading…
Reference in New Issue
Block a user