Add support for GL_EXT_YUV_target

This commit is contained in:
nicebyte 2019-01-24 12:12:20 -08:00
parent 2cf6613a0d
commit c28369b75f
13 changed files with 3861 additions and 3573 deletions

View File

@ -0,0 +1,38 @@
#version 300 es
#extension GL_EXT_YUV_target : enable
uniform __samplerExternal2DY2YEXT sExt;
precision mediump __samplerExternal2DY2YEXT;
uniform __samplerExternal2DY2YEXT mediumExt;
uniform highp __samplerExternal2DY2YEXT highExt;
void main()
{
texture2D(sExt, vec2(0.2)); // ERROR
texture2D(mediumExt, vec2(0.2)); // ERROR
texture2D(highExt, vec2(0.2)); // ERROR
texture2DProj(sExt, vec3(0.3)); // ERROR
texture2DProj(sExt, vec4(0.3)); // ERROR
int lod = 0;
highp float bias = 0.01;
textureSize(sExt, lod);
texture(sExt, vec2(0.2));
texture(sExt, vec2(0.2), bias);
textureProj(sExt, vec3(0.2));
textureProj(sExt, vec3(0.2), bias);
textureProj(sExt, vec4(0.2));
textureProj(sExt, vec4(0.2), bias);
texelFetch(sExt, ivec2(4), lod);
texture3D(sExt, vec3(0.3)); // ERROR
texture2DProjLod(sExt, vec3(0.3), 0.3); // ERROR
texture(sExt, vec3(0.3)); // ERROR
textureProjLod(sExt, vec3(0.3), 0.3); // ERROR
}
#extension GL_EXT_YUV_target : disable
uniform __samplerExternal2DY2YEXT badExt; // ERROR

View File

@ -0,0 +1,192 @@
300samplerExternalYUV.frag
ERROR: 0:12: 'texture2D' : no matching overloaded function found
ERROR: 0:13: 'texture2D' : no matching overloaded function found
ERROR: 0:14: 'texture2D' : no matching overloaded function found
ERROR: 0:15: 'texture2DProj' : no matching overloaded function found
ERROR: 0:16: 'texture2DProj' : no matching overloaded function found
ERROR: 0:29: 'texture3D' : no matching overloaded function found
ERROR: 0:30: 'texture2DProjLod' : no matching overloaded function found
ERROR: 0:31: 'texture' : no matching overloaded function found
ERROR: 0:32: 'textureProjLod' : no matching overloaded function found
ERROR: 0:37: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON
ERROR: 10 compilation errors. No code generated.
Shader version: 300
Requested GL_EXT_YUV_target
ERROR: node is still EOpNull!
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 Constant:
0:12 0.000000
0:13 Constant:
0:13 0.000000
0:14 Constant:
0:14 0.000000
0:15 Constant:
0:15 0.000000
0:16 Constant:
0:16 0.000000
0:18 Sequence
0:18 move second child to first child ( temp mediump int)
0:18 'lod' ( temp mediump int)
0:18 Constant:
0:18 0 (const int)
0:19 Sequence
0:19 move second child to first child ( temp highp float)
0:19 'bias' ( temp highp float)
0:19 Constant:
0:19 0.010000
0:20 textureSize ( global highp 2-component vector of int, operation at mediump)
0:20 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:20 'lod' ( temp mediump int)
0:21 texture ( global lowp 4-component vector of float)
0:21 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:21 Constant:
0:21 0.200000
0:21 0.200000
0:22 texture ( global lowp 4-component vector of float, operation at highp)
0:22 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:22 Constant:
0:22 0.200000
0:22 0.200000
0:22 'bias' ( temp highp float)
0:23 textureProj ( global lowp 4-component vector of float)
0:23 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:23 Constant:
0:23 0.200000
0:23 0.200000
0:23 0.200000
0:24 textureProj ( global lowp 4-component vector of float, operation at highp)
0:24 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:24 Constant:
0:24 0.200000
0:24 0.200000
0:24 0.200000
0:24 'bias' ( temp highp float)
0:25 textureProj ( global lowp 4-component vector of float)
0:25 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:25 Constant:
0:25 0.200000
0:25 0.200000
0:25 0.200000
0:25 0.200000
0:26 textureProj ( global lowp 4-component vector of float, operation at highp)
0:26 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:26 Constant:
0:26 0.200000
0:26 0.200000
0:26 0.200000
0:26 0.200000
0:26 'bias' ( temp highp float)
0:27 textureFetch ( global lowp 4-component vector of float, operation at mediump)
0:27 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:27 Constant:
0:27 4 (const int)
0:27 4 (const int)
0:27 'lod' ( temp mediump int)
0:29 Constant:
0:29 0.000000
0:30 Constant:
0:30 0.000000
0:31 Constant:
0:31 0.000000
0:32 Constant:
0:32 0.000000
0:? Linker Objects
0:? 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:? 'mediumExt' ( uniform mediump __samplerExternal2DY2YEXT)
0:? 'highExt' ( uniform highp __samplerExternal2DY2YEXT)
Linked fragment stage:
Shader version: 300
Requested GL_EXT_YUV_target
ERROR: node is still EOpNull!
0:10 Function Definition: main( ( global void)
0:10 Function Parameters:
0:12 Sequence
0:12 Constant:
0:12 0.000000
0:13 Constant:
0:13 0.000000
0:14 Constant:
0:14 0.000000
0:15 Constant:
0:15 0.000000
0:16 Constant:
0:16 0.000000
0:18 Sequence
0:18 move second child to first child ( temp mediump int)
0:18 'lod' ( temp mediump int)
0:18 Constant:
0:18 0 (const int)
0:19 Sequence
0:19 move second child to first child ( temp highp float)
0:19 'bias' ( temp highp float)
0:19 Constant:
0:19 0.010000
0:20 textureSize ( global highp 2-component vector of int, operation at mediump)
0:20 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:20 'lod' ( temp mediump int)
0:21 texture ( global lowp 4-component vector of float)
0:21 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:21 Constant:
0:21 0.200000
0:21 0.200000
0:22 texture ( global lowp 4-component vector of float, operation at highp)
0:22 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:22 Constant:
0:22 0.200000
0:22 0.200000
0:22 'bias' ( temp highp float)
0:23 textureProj ( global lowp 4-component vector of float)
0:23 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:23 Constant:
0:23 0.200000
0:23 0.200000
0:23 0.200000
0:24 textureProj ( global lowp 4-component vector of float, operation at highp)
0:24 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:24 Constant:
0:24 0.200000
0:24 0.200000
0:24 0.200000
0:24 'bias' ( temp highp float)
0:25 textureProj ( global lowp 4-component vector of float)
0:25 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:25 Constant:
0:25 0.200000
0:25 0.200000
0:25 0.200000
0:25 0.200000
0:26 textureProj ( global lowp 4-component vector of float, operation at highp)
0:26 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:26 Constant:
0:26 0.200000
0:26 0.200000
0:26 0.200000
0:26 0.200000
0:26 'bias' ( temp highp float)
0:27 textureFetch ( global lowp 4-component vector of float, operation at mediump)
0:27 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:27 Constant:
0:27 4 (const int)
0:27 4 (const int)
0:27 'lod' ( temp mediump int)
0:29 Constant:
0:29 0.000000
0:30 Constant:
0:30 0.000000
0:31 Constant:
0:31 0.000000
0:32 Constant:
0:32 0.000000
0:? Linker Objects
0:? 'sExt' ( uniform lowp __samplerExternal2DY2YEXT)
0:? 'mediumExt' ( uniform mediump __samplerExternal2DY2YEXT)
0:? 'highExt' ( uniform highp __samplerExternal2DY2YEXT)

View File

@ -81,6 +81,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler
bool sampler : 1; // true means a pure sampler, other fields should be clear() bool sampler : 1; // true means a pure sampler, other fields should be clear()
bool external : 1; // GL_OES_EGL_image_external bool external : 1; // GL_OES_EGL_image_external
bool yuv : 1; // GL_EXT_YUV_target
unsigned int vectorSize : 3; // vector return type size. unsigned int vectorSize : 3; // vector return type size.
// Some languages support structures as sample results. Storing the whole structure in the // Some languages support structures as sample results. Storing the whole structure in the
@ -116,6 +117,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
combined = false; combined = false;
sampler = false; sampler = false;
external = false; external = false;
yuv = false;
structReturnIndex = noReturnStruct; structReturnIndex = noReturnStruct;
// by default, returns a single vec4; // by default, returns a single vec4;
@ -186,6 +188,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
combined == right.combined && combined == right.combined &&
sampler == right.sampler && sampler == right.sampler &&
external == right.external && external == right.external &&
yuv == right.yuv &&
vectorSize == right.vectorSize && vectorSize == right.vectorSize &&
structReturnIndex == right.structReturnIndex; structReturnIndex == right.structReturnIndex;
} }
@ -233,6 +236,9 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
s.append("ExternalOES"); s.append("ExternalOES");
return s; return s;
} }
if (yuv) {
return "__" + s + "External2DY2YEXT";
}
switch (dim) { switch (dim) {
case Esd1D: s.append("1D"); break; case Esd1D: s.append("1D"); break;
case Esd2D: s.append("2D"); break; case Esd2D: s.append("2D"); break;

View File

@ -1603,6 +1603,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"vec4 texelFetch(samplerExternalOES, ivec2, int lod);" // GL_OES_EGL_image_external_essl3 "vec4 texelFetch(samplerExternalOES, ivec2, int lod);" // GL_OES_EGL_image_external_essl3
"\n"); "\n");
} }
commonBuiltins.append(
"highp ivec2 textureSize(__samplerExternal2DY2YEXT, int lod);" // GL_EXT_YUV_target
"vec4 texture(__samplerExternal2DY2YEXT, vec2);" // GL_EXT_YUV_target
"vec4 texture(__samplerExternal2DY2YEXT, vec2, float bias);" // GL_EXT_YUV_target
"vec4 textureProj(__samplerExternal2DY2YEXT, vec3);" // GL_EXT_YUV_target
"vec4 textureProj(__samplerExternal2DY2YEXT, vec3, float bias);" // GL_EXT_YUV_target
"vec4 textureProj(__samplerExternal2DY2YEXT, vec4);" // GL_EXT_YUV_target
"vec4 textureProj(__samplerExternal2DY2YEXT, vec4, float bias);" // GL_EXT_YUV_target
"vec4 texelFetch(__samplerExternal2DY2YEXT sampler, ivec2, int lod);" // GL_EXT_YUV_target
"\n");
commonBuiltins.append( commonBuiltins.append(
"vec4 texture2DGradEXT(sampler2D, vec2, vec2, vec2);" // GL_EXT_shader_texture_lod "vec4 texture2DGradEXT(sampler2D, vec2, vec2, vec2);" // GL_EXT_shader_texture_lod
"vec4 texture2DProjGradEXT(sampler2D, vec3, vec2, vec2);" // GL_EXT_shader_texture_lod "vec4 texture2DProjGradEXT(sampler2D, vec3, vec2, vec2);" // GL_EXT_shader_texture_lod

View File

@ -3006,6 +3006,9 @@ void TParseContext::samplerCheck(const TSourceLoc& loc, const TType& type, const
requireExtensions(loc, 1, &E_GL_OES_EGL_image_external_essl3, "samplerExternalOES"); requireExtensions(loc, 1, &E_GL_OES_EGL_image_external_essl3, "samplerExternalOES");
} }
} }
if (type.getSampler().yuv) {
requireExtensions(loc, 1, &E_GL_EXT_YUV_target, "__samplerExternal2DY2YEXT");
}
if (type.getQualifier().storage == EvqUniform) if (type.getQualifier().storage == EvqUniform)
return; return;

View File

@ -592,6 +592,8 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["samplerExternalOES"] = SAMPLEREXTERNALOES; // GL_OES_EGL_image_external (*KeywordMap)["samplerExternalOES"] = SAMPLEREXTERNALOES; // GL_OES_EGL_image_external
(*KeywordMap)["__samplerExternal2DY2YEXT"] = SAMPLEREXTERNAL2DY2YEXT; // GL_EXT_YUV_target
(*KeywordMap)["sampler"] = SAMPLER; (*KeywordMap)["sampler"] = SAMPLER;
(*KeywordMap)["samplerShadow"] = SAMPLERSHADOW; (*KeywordMap)["samplerShadow"] = SAMPLERSHADOW;
@ -1410,6 +1412,13 @@ int TScanContext::tokenizeIdentifier()
return keyword; return keyword;
return identifierOrType(); return identifierOrType();
case SAMPLEREXTERNAL2DY2YEXT:
afterType = true;
if (parseContext.symbolTable.atBuiltInLevel() ||
parseContext.extensionTurnedOn(E_GL_EXT_YUV_target))
return keyword;
return identifierOrType();
case TEXTURE2D: case TEXTURE2D:
case TEXTURECUBE: case TEXTURECUBE:
case TEXTURECUBEARRAY: case TEXTURECUBEARRAY:

View File

@ -99,6 +99,8 @@ void TType::buildMangledName(TString& mangledName) const
mangledName += "S"; mangledName += "S";
if (sampler.external) if (sampler.external)
mangledName += "E"; mangledName += "E";
if (sampler.yuv)
mangledName += "Y";
switch (sampler.dim) { switch (sampler.dim) {
case Esd1D: mangledName += "1"; break; case Esd1D: mangledName += "1"; break;
case Esd2D: mangledName += "2"; break; case Esd2D: mangledName += "2"; break;

View File

@ -157,6 +157,7 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior[E_GL_EXT_frag_depth] = EBhDisable; extensionBehavior[E_GL_EXT_frag_depth] = EBhDisable;
extensionBehavior[E_GL_OES_EGL_image_external] = EBhDisable; extensionBehavior[E_GL_OES_EGL_image_external] = EBhDisable;
extensionBehavior[E_GL_OES_EGL_image_external_essl3] = EBhDisable; extensionBehavior[E_GL_OES_EGL_image_external_essl3] = EBhDisable;
extensionBehavior[E_GL_EXT_YUV_target] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_texture_lod] = EBhDisable; extensionBehavior[E_GL_EXT_shader_texture_lod] = EBhDisable;
extensionBehavior[E_GL_EXT_shadow_samplers] = EBhDisable; extensionBehavior[E_GL_EXT_shadow_samplers] = EBhDisable;
extensionBehavior[E_GL_ARB_texture_rectangle] = EBhDisable; extensionBehavior[E_GL_ARB_texture_rectangle] = EBhDisable;
@ -307,6 +308,7 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_EXT_frag_depth 1\n" "#define GL_EXT_frag_depth 1\n"
"#define GL_OES_EGL_image_external 1\n" "#define GL_OES_EGL_image_external 1\n"
"#define GL_OES_EGL_image_external_essl3 1\n" "#define GL_OES_EGL_image_external_essl3 1\n"
"#define GL_EXT_YUV_target 1\n"
"#define GL_EXT_shader_texture_lod 1\n" "#define GL_EXT_shader_texture_lod 1\n"
"#define GL_EXT_shadow_samplers 1\n" "#define GL_EXT_shadow_samplers 1\n"

View File

@ -110,6 +110,7 @@ const char* const E_GL_OES_standard_derivatives = "GL_OES_standard_deriv
const char* const E_GL_EXT_frag_depth = "GL_EXT_frag_depth"; const char* const E_GL_EXT_frag_depth = "GL_EXT_frag_depth";
const char* const E_GL_OES_EGL_image_external = "GL_OES_EGL_image_external"; const char* const E_GL_OES_EGL_image_external = "GL_OES_EGL_image_external";
const char* const E_GL_OES_EGL_image_external_essl3 = "GL_OES_EGL_image_external_essl3"; const char* const E_GL_OES_EGL_image_external_essl3 = "GL_OES_EGL_image_external_essl3";
const char* const E_GL_EXT_YUV_target = "GL_EXT_YUV_target";
const char* const E_GL_EXT_shader_texture_lod = "GL_EXT_shader_texture_lod"; const char* const E_GL_EXT_shader_texture_lod = "GL_EXT_shader_texture_lod";
const char* const E_GL_EXT_shadow_samplers = "GL_EXT_shadow_samplers"; const char* const E_GL_EXT_shadow_samplers = "GL_EXT_shadow_samplers";

View File

@ -180,6 +180,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
%token <lex> SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS %token <lex> SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS
%token <lex> SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY %token <lex> SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY
%token <lex> SAMPLEREXTERNALOES %token <lex> SAMPLEREXTERNALOES
%token <lex> SAMPLEREXTERNAL2DY2YEXT
%token <lex> F16SAMPLER1D F16SAMPLER2D F16SAMPLER3D F16SAMPLER2DRECT F16SAMPLERCUBE %token <lex> F16SAMPLER1D F16SAMPLER2D F16SAMPLER3D F16SAMPLER2DRECT F16SAMPLERCUBE
%token <lex> F16SAMPLER1DARRAY F16SAMPLER2DARRAY F16SAMPLERCUBEARRAY %token <lex> F16SAMPLER1DARRAY F16SAMPLER2DARRAY F16SAMPLERCUBEARRAY
@ -3111,6 +3112,12 @@ type_specifier_nonarray
$$.sampler.set(EbtFloat, Esd2D); $$.sampler.set(EbtFloat, Esd2D);
$$.sampler.external = true; $$.sampler.external = true;
} }
| SAMPLEREXTERNAL2DY2YEXT { // GL_EXT_YUV_target
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
$$.sampler.set(EbtFloat, Esd2D);
$$.sampler.yuv = true;
}
| SUBPASSINPUT { | SUBPASSINPUT {
parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); parseContext.requireStage($1.loc, EShLangFragment, "subpass input");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());

File diff suppressed because it is too large Load Diff

View File

@ -261,193 +261,194 @@ extern int yydebug;
ISAMPLER2DMSARRAY = 471, ISAMPLER2DMSARRAY = 471,
USAMPLER2DMSARRAY = 472, USAMPLER2DMSARRAY = 472,
SAMPLEREXTERNALOES = 473, SAMPLEREXTERNALOES = 473,
F16SAMPLER1D = 474, SAMPLEREXTERNAL2DY2YEXT = 474,
F16SAMPLER2D = 475, F16SAMPLER1D = 475,
F16SAMPLER3D = 476, F16SAMPLER2D = 476,
F16SAMPLER2DRECT = 477, F16SAMPLER3D = 477,
F16SAMPLERCUBE = 478, F16SAMPLER2DRECT = 478,
F16SAMPLER1DARRAY = 479, F16SAMPLERCUBE = 479,
F16SAMPLER2DARRAY = 480, F16SAMPLER1DARRAY = 480,
F16SAMPLERCUBEARRAY = 481, F16SAMPLER2DARRAY = 481,
F16SAMPLERBUFFER = 482, F16SAMPLERCUBEARRAY = 482,
F16SAMPLER2DMS = 483, F16SAMPLERBUFFER = 483,
F16SAMPLER2DMSARRAY = 484, F16SAMPLER2DMS = 484,
F16SAMPLER1DSHADOW = 485, F16SAMPLER2DMSARRAY = 485,
F16SAMPLER2DSHADOW = 486, F16SAMPLER1DSHADOW = 486,
F16SAMPLER1DARRAYSHADOW = 487, F16SAMPLER2DSHADOW = 487,
F16SAMPLER2DARRAYSHADOW = 488, F16SAMPLER1DARRAYSHADOW = 488,
F16SAMPLER2DRECTSHADOW = 489, F16SAMPLER2DARRAYSHADOW = 489,
F16SAMPLERCUBESHADOW = 490, F16SAMPLER2DRECTSHADOW = 490,
F16SAMPLERCUBEARRAYSHADOW = 491, F16SAMPLERCUBESHADOW = 491,
SAMPLER = 492, F16SAMPLERCUBEARRAYSHADOW = 492,
SAMPLERSHADOW = 493, SAMPLER = 493,
TEXTURE1D = 494, SAMPLERSHADOW = 494,
TEXTURE2D = 495, TEXTURE1D = 495,
TEXTURE3D = 496, TEXTURE2D = 496,
TEXTURECUBE = 497, TEXTURE3D = 497,
TEXTURE1DARRAY = 498, TEXTURECUBE = 498,
TEXTURE2DARRAY = 499, TEXTURE1DARRAY = 499,
ITEXTURE1D = 500, TEXTURE2DARRAY = 500,
ITEXTURE2D = 501, ITEXTURE1D = 501,
ITEXTURE3D = 502, ITEXTURE2D = 502,
ITEXTURECUBE = 503, ITEXTURE3D = 503,
ITEXTURE1DARRAY = 504, ITEXTURECUBE = 504,
ITEXTURE2DARRAY = 505, ITEXTURE1DARRAY = 505,
UTEXTURE1D = 506, ITEXTURE2DARRAY = 506,
UTEXTURE2D = 507, UTEXTURE1D = 507,
UTEXTURE3D = 508, UTEXTURE2D = 508,
UTEXTURECUBE = 509, UTEXTURE3D = 509,
UTEXTURE1DARRAY = 510, UTEXTURECUBE = 510,
UTEXTURE2DARRAY = 511, UTEXTURE1DARRAY = 511,
TEXTURE2DRECT = 512, UTEXTURE2DARRAY = 512,
ITEXTURE2DRECT = 513, TEXTURE2DRECT = 513,
UTEXTURE2DRECT = 514, ITEXTURE2DRECT = 514,
TEXTUREBUFFER = 515, UTEXTURE2DRECT = 515,
ITEXTUREBUFFER = 516, TEXTUREBUFFER = 516,
UTEXTUREBUFFER = 517, ITEXTUREBUFFER = 517,
TEXTURECUBEARRAY = 518, UTEXTUREBUFFER = 518,
ITEXTURECUBEARRAY = 519, TEXTURECUBEARRAY = 519,
UTEXTURECUBEARRAY = 520, ITEXTURECUBEARRAY = 520,
TEXTURE2DMS = 521, UTEXTURECUBEARRAY = 521,
ITEXTURE2DMS = 522, TEXTURE2DMS = 522,
UTEXTURE2DMS = 523, ITEXTURE2DMS = 523,
TEXTURE2DMSARRAY = 524, UTEXTURE2DMS = 524,
ITEXTURE2DMSARRAY = 525, TEXTURE2DMSARRAY = 525,
UTEXTURE2DMSARRAY = 526, ITEXTURE2DMSARRAY = 526,
F16TEXTURE1D = 527, UTEXTURE2DMSARRAY = 527,
F16TEXTURE2D = 528, F16TEXTURE1D = 528,
F16TEXTURE3D = 529, F16TEXTURE2D = 529,
F16TEXTURE2DRECT = 530, F16TEXTURE3D = 530,
F16TEXTURECUBE = 531, F16TEXTURE2DRECT = 531,
F16TEXTURE1DARRAY = 532, F16TEXTURECUBE = 532,
F16TEXTURE2DARRAY = 533, F16TEXTURE1DARRAY = 533,
F16TEXTURECUBEARRAY = 534, F16TEXTURE2DARRAY = 534,
F16TEXTUREBUFFER = 535, F16TEXTURECUBEARRAY = 535,
F16TEXTURE2DMS = 536, F16TEXTUREBUFFER = 536,
F16TEXTURE2DMSARRAY = 537, F16TEXTURE2DMS = 537,
SUBPASSINPUT = 538, F16TEXTURE2DMSARRAY = 538,
SUBPASSINPUTMS = 539, SUBPASSINPUT = 539,
ISUBPASSINPUT = 540, SUBPASSINPUTMS = 540,
ISUBPASSINPUTMS = 541, ISUBPASSINPUT = 541,
USUBPASSINPUT = 542, ISUBPASSINPUTMS = 542,
USUBPASSINPUTMS = 543, USUBPASSINPUT = 543,
F16SUBPASSINPUT = 544, USUBPASSINPUTMS = 544,
F16SUBPASSINPUTMS = 545, F16SUBPASSINPUT = 545,
IMAGE1D = 546, F16SUBPASSINPUTMS = 546,
IIMAGE1D = 547, IMAGE1D = 547,
UIMAGE1D = 548, IIMAGE1D = 548,
IMAGE2D = 549, UIMAGE1D = 549,
IIMAGE2D = 550, IMAGE2D = 550,
UIMAGE2D = 551, IIMAGE2D = 551,
IMAGE3D = 552, UIMAGE2D = 552,
IIMAGE3D = 553, IMAGE3D = 553,
UIMAGE3D = 554, IIMAGE3D = 554,
IMAGE2DRECT = 555, UIMAGE3D = 555,
IIMAGE2DRECT = 556, IMAGE2DRECT = 556,
UIMAGE2DRECT = 557, IIMAGE2DRECT = 557,
IMAGECUBE = 558, UIMAGE2DRECT = 558,
IIMAGECUBE = 559, IMAGECUBE = 559,
UIMAGECUBE = 560, IIMAGECUBE = 560,
IMAGEBUFFER = 561, UIMAGECUBE = 561,
IIMAGEBUFFER = 562, IMAGEBUFFER = 562,
UIMAGEBUFFER = 563, IIMAGEBUFFER = 563,
IMAGE1DARRAY = 564, UIMAGEBUFFER = 564,
IIMAGE1DARRAY = 565, IMAGE1DARRAY = 565,
UIMAGE1DARRAY = 566, IIMAGE1DARRAY = 566,
IMAGE2DARRAY = 567, UIMAGE1DARRAY = 567,
IIMAGE2DARRAY = 568, IMAGE2DARRAY = 568,
UIMAGE2DARRAY = 569, IIMAGE2DARRAY = 569,
IMAGECUBEARRAY = 570, UIMAGE2DARRAY = 570,
IIMAGECUBEARRAY = 571, IMAGECUBEARRAY = 571,
UIMAGECUBEARRAY = 572, IIMAGECUBEARRAY = 572,
IMAGE2DMS = 573, UIMAGECUBEARRAY = 573,
IIMAGE2DMS = 574, IMAGE2DMS = 574,
UIMAGE2DMS = 575, IIMAGE2DMS = 575,
IMAGE2DMSARRAY = 576, UIMAGE2DMS = 576,
IIMAGE2DMSARRAY = 577, IMAGE2DMSARRAY = 577,
UIMAGE2DMSARRAY = 578, IIMAGE2DMSARRAY = 578,
F16IMAGE1D = 579, UIMAGE2DMSARRAY = 579,
F16IMAGE2D = 580, F16IMAGE1D = 580,
F16IMAGE3D = 581, F16IMAGE2D = 581,
F16IMAGE2DRECT = 582, F16IMAGE3D = 582,
F16IMAGECUBE = 583, F16IMAGE2DRECT = 583,
F16IMAGE1DARRAY = 584, F16IMAGECUBE = 584,
F16IMAGE2DARRAY = 585, F16IMAGE1DARRAY = 585,
F16IMAGECUBEARRAY = 586, F16IMAGE2DARRAY = 586,
F16IMAGEBUFFER = 587, F16IMAGECUBEARRAY = 587,
F16IMAGE2DMS = 588, F16IMAGEBUFFER = 588,
F16IMAGE2DMSARRAY = 589, F16IMAGE2DMS = 589,
STRUCT = 590, F16IMAGE2DMSARRAY = 590,
VOID = 591, STRUCT = 591,
WHILE = 592, VOID = 592,
IDENTIFIER = 593, WHILE = 593,
TYPE_NAME = 594, IDENTIFIER = 594,
FLOATCONSTANT = 595, TYPE_NAME = 595,
DOUBLECONSTANT = 596, FLOATCONSTANT = 596,
INT16CONSTANT = 597, DOUBLECONSTANT = 597,
UINT16CONSTANT = 598, INT16CONSTANT = 598,
INT32CONSTANT = 599, UINT16CONSTANT = 599,
UINT32CONSTANT = 600, INT32CONSTANT = 600,
INTCONSTANT = 601, UINT32CONSTANT = 601,
UINTCONSTANT = 602, INTCONSTANT = 602,
INT64CONSTANT = 603, UINTCONSTANT = 603,
UINT64CONSTANT = 604, INT64CONSTANT = 604,
BOOLCONSTANT = 605, UINT64CONSTANT = 605,
FLOAT16CONSTANT = 606, BOOLCONSTANT = 606,
LEFT_OP = 607, FLOAT16CONSTANT = 607,
RIGHT_OP = 608, LEFT_OP = 608,
INC_OP = 609, RIGHT_OP = 609,
DEC_OP = 610, INC_OP = 610,
LE_OP = 611, DEC_OP = 611,
GE_OP = 612, LE_OP = 612,
EQ_OP = 613, GE_OP = 613,
NE_OP = 614, EQ_OP = 614,
AND_OP = 615, NE_OP = 615,
OR_OP = 616, AND_OP = 616,
XOR_OP = 617, OR_OP = 617,
MUL_ASSIGN = 618, XOR_OP = 618,
DIV_ASSIGN = 619, MUL_ASSIGN = 619,
ADD_ASSIGN = 620, DIV_ASSIGN = 620,
MOD_ASSIGN = 621, ADD_ASSIGN = 621,
LEFT_ASSIGN = 622, MOD_ASSIGN = 622,
RIGHT_ASSIGN = 623, LEFT_ASSIGN = 623,
AND_ASSIGN = 624, RIGHT_ASSIGN = 624,
XOR_ASSIGN = 625, AND_ASSIGN = 625,
OR_ASSIGN = 626, XOR_ASSIGN = 626,
SUB_ASSIGN = 627, OR_ASSIGN = 627,
LEFT_PAREN = 628, SUB_ASSIGN = 628,
RIGHT_PAREN = 629, LEFT_PAREN = 629,
LEFT_BRACKET = 630, RIGHT_PAREN = 630,
RIGHT_BRACKET = 631, LEFT_BRACKET = 631,
LEFT_BRACE = 632, RIGHT_BRACKET = 632,
RIGHT_BRACE = 633, LEFT_BRACE = 633,
DOT = 634, RIGHT_BRACE = 634,
COMMA = 635, DOT = 635,
COLON = 636, COMMA = 636,
EQUAL = 637, COLON = 637,
SEMICOLON = 638, EQUAL = 638,
BANG = 639, SEMICOLON = 639,
DASH = 640, BANG = 640,
TILDE = 641, DASH = 641,
PLUS = 642, TILDE = 642,
STAR = 643, PLUS = 643,
SLASH = 644, STAR = 644,
PERCENT = 645, SLASH = 645,
LEFT_ANGLE = 646, PERCENT = 646,
RIGHT_ANGLE = 647, LEFT_ANGLE = 647,
VERTICAL_BAR = 648, RIGHT_ANGLE = 648,
CARET = 649, VERTICAL_BAR = 649,
AMPERSAND = 650, CARET = 650,
QUESTION = 651, AMPERSAND = 651,
INVARIANT = 652, QUESTION = 652,
PRECISE = 653, INVARIANT = 653,
HIGH_PRECISION = 654, PRECISE = 654,
MEDIUM_PRECISION = 655, HIGH_PRECISION = 655,
LOW_PRECISION = 656, MEDIUM_PRECISION = 656,
PRECISION = 657, LOW_PRECISION = 657,
PACKED = 658, PRECISION = 658,
RESOURCE = 659, PACKED = 659,
SUPERP = 660 RESOURCE = 660,
SUPERP = 661
}; };
#endif #endif
@ -456,7 +457,7 @@ extern int yydebug;
union YYSTYPE union YYSTYPE
{ {
#line 70 "MachineIndependent/glslang.y" /* yacc.c:1909 */ #line 71 "MachineIndependent/glslang.y" /* yacc.c:1909 */
struct { struct {
glslang::TSourceLoc loc; glslang::TSourceLoc loc;
@ -491,7 +492,7 @@ union YYSTYPE
}; };
} interm; } interm;
#line 495 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ #line 496 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */
}; };
typedef union YYSTYPE YYSTYPE; typedef union YYSTYPE YYSTYPE;

View File

@ -113,6 +113,7 @@ INSTANTIATE_TEST_CASE_P(
"300operations.frag", "300operations.frag",
"300block.frag", "300block.frag",
"300samplerExternal.frag", "300samplerExternal.frag",
"300samplerExternalYUV.frag",
"310.comp", "310.comp",
"310.vert", "310.vert",
"310.geom", "310.geom",