Add support for extension GL_EXT_shader_integer_mix (#2203)

This commit is contained in:
pmistryNV 2020-04-30 21:41:33 -07:00 committed by GitHub
parent 97ee5c88de
commit 2c53baedbb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 391 additions and 10 deletions

View File

@ -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
}

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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(

View File

@ -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:

View File

@ -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"

View File

@ -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";