Add support for GL_EXT_YUV_target
This commit is contained in:
parent
2cf6613a0d
commit
c28369b75f
38
Test/300samplerExternalYUV.frag
Normal file
38
Test/300samplerExternalYUV.frag
Normal 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
|
||||||
|
|
192
Test/baseResults/300samplerExternalYUV.frag.out
Normal file
192
Test/baseResults/300samplerExternalYUV.frag.out
Normal 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)
|
||||||
|
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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:
|
||||||
|
@ -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;
|
||||||
|
@ -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"
|
||||||
|
|
||||||
|
@ -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";
|
||||||
|
|
||||||
|
@ -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
@ -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;
|
||||||
|
@ -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",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user