Add partial support for GL_ARB_shader_texture_lod.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@26945 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
9dedb13447
commit
3591930f23
@ -171,3 +171,31 @@ void matConst()
|
|||||||
mat3 m3a1[2] = mat3[2](m3s, m3s);
|
mat3 m3a1[2] = mat3[2](m3s, m3s);
|
||||||
mat3 m3a2[2] = mat3[2](m3s, m3s, m3s); // ERROR, too many args
|
mat3 m3a2[2] = mat3[2](m3s, m3s, m3s); // ERROR, too many args
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uniform sampler3D s3D;
|
||||||
|
uniform sampler1D s1D;
|
||||||
|
uniform sampler2DShadow s2DS;
|
||||||
|
|
||||||
|
void foo2323()
|
||||||
|
{
|
||||||
|
vec4 v;
|
||||||
|
vec2 v2;
|
||||||
|
float f;
|
||||||
|
v = texture2DLod(s2D, v2, f); // ERROR
|
||||||
|
v = texture3DProjLod(s3D, v, f); // ERROR
|
||||||
|
v = texture1DProjLod(s1D, v, f); // ERROR
|
||||||
|
v = shadow2DProjLod(s2DS, v, f); // ERROR
|
||||||
|
}
|
||||||
|
|
||||||
|
#extension GL_ARB_shader_texture_lod : require
|
||||||
|
|
||||||
|
void foo2324()
|
||||||
|
{
|
||||||
|
vec4 v;
|
||||||
|
vec2 v2;
|
||||||
|
float f;
|
||||||
|
v = texture2DLod(s2D, v2, f);
|
||||||
|
v = texture3DProjLod(s3D, v, f);
|
||||||
|
v = texture1DProjLod(s1D, v, f);
|
||||||
|
v = shadow2DProjLod(s2DS, v, f);
|
||||||
|
}
|
||||||
|
|||||||
@ -42,10 +42,16 @@ ERROR: 0:165: 'constructor' : matrix constructed from matrix can only have one a
|
|||||||
ERROR: 0:166: 'constructor' : matrix constructed from matrix can only have one argument
|
ERROR: 0:166: 'constructor' : matrix constructed from matrix can only have one argument
|
||||||
ERROR: 0:172: 'constructor' : array constructor needs one argument per array element
|
ERROR: 0:172: 'constructor' : array constructor needs one argument per array element
|
||||||
ERROR: 0:172: '=' : cannot convert from 'const float' to '2-element array of 3X3 matrix of float'
|
ERROR: 0:172: '=' : cannot convert from 'const float' to '2-element array of 3X3 matrix of float'
|
||||||
ERROR: 43 compilation errors. No code generated.
|
ERROR: 0:184: 'texture2DLod' : required extension not requested: GL_ARB_shader_texture_lod
|
||||||
|
ERROR: 0:185: 'texture3DProjLod' : required extension not requested: GL_ARB_shader_texture_lod
|
||||||
|
ERROR: 0:186: 'texture1DProjLod' : required extension not requested: GL_ARB_shader_texture_lod
|
||||||
|
ERROR: 0:187: 'shadow2DProjLod' : required extension not requested: GL_ARB_shader_texture_lod
|
||||||
|
WARNING: 0:190: '#extension' : extension is only partially supported: GL_ARB_shader_texture_lod
|
||||||
|
ERROR: 47 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 120
|
Shader version: 120
|
||||||
|
Requested GL_ARB_shader_texture_lod
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
0:21 Function Definition: main( (void)
|
0:21 Function Definition: main( (void)
|
||||||
0:21 Function Parameters:
|
0:21 Function Parameters:
|
||||||
@ -437,6 +443,60 @@ ERROR: node is still EOpNull!
|
|||||||
0:171 Construct mat3 (2-element array of 3X3 matrix of float)
|
0:171 Construct mat3 (2-element array of 3X3 matrix of float)
|
||||||
0:171 'm3s' (3X3 matrix of float)
|
0:171 'm3s' (3X3 matrix of float)
|
||||||
0:171 'm3s' (3X3 matrix of float)
|
0:171 'm3s' (3X3 matrix of float)
|
||||||
|
0:179 Function Definition: foo2323( (void)
|
||||||
|
0:179 Function Parameters:
|
||||||
|
0:? Sequence
|
||||||
|
0:184 move second child to first child (4-component vector of float)
|
||||||
|
0:184 'v' (4-component vector of float)
|
||||||
|
0:184 Function Call: texture2DLod(s21;vf2;f1; (4-component vector of float)
|
||||||
|
0:184 's2D' (uniform sampler2D)
|
||||||
|
0:184 'v2' (2-component vector of float)
|
||||||
|
0:184 'f' (float)
|
||||||
|
0:185 move second child to first child (4-component vector of float)
|
||||||
|
0:185 'v' (4-component vector of float)
|
||||||
|
0:185 Function Call: texture3DProjLod(s31;vf4;f1; (4-component vector of float)
|
||||||
|
0:185 's3D' (uniform sampler3D)
|
||||||
|
0:185 'v' (4-component vector of float)
|
||||||
|
0:185 'f' (float)
|
||||||
|
0:186 move second child to first child (4-component vector of float)
|
||||||
|
0:186 'v' (4-component vector of float)
|
||||||
|
0:186 Function Call: texture1DProjLod(s11;vf4;f1; (4-component vector of float)
|
||||||
|
0:186 's1D' (uniform sampler1D)
|
||||||
|
0:186 'v' (4-component vector of float)
|
||||||
|
0:186 'f' (float)
|
||||||
|
0:187 move second child to first child (4-component vector of float)
|
||||||
|
0:187 'v' (4-component vector of float)
|
||||||
|
0:187 Function Call: shadow2DProjLod(sS21;vf4;f1; (4-component vector of float)
|
||||||
|
0:187 's2DS' (uniform sampler2DShadow)
|
||||||
|
0:187 'v' (4-component vector of float)
|
||||||
|
0:187 'f' (float)
|
||||||
|
0:192 Function Definition: foo2324( (void)
|
||||||
|
0:192 Function Parameters:
|
||||||
|
0:? Sequence
|
||||||
|
0:197 move second child to first child (4-component vector of float)
|
||||||
|
0:197 'v' (4-component vector of float)
|
||||||
|
0:197 Function Call: texture2DLod(s21;vf2;f1; (4-component vector of float)
|
||||||
|
0:197 's2D' (uniform sampler2D)
|
||||||
|
0:197 'v2' (2-component vector of float)
|
||||||
|
0:197 'f' (float)
|
||||||
|
0:198 move second child to first child (4-component vector of float)
|
||||||
|
0:198 'v' (4-component vector of float)
|
||||||
|
0:198 Function Call: texture3DProjLod(s31;vf4;f1; (4-component vector of float)
|
||||||
|
0:198 's3D' (uniform sampler3D)
|
||||||
|
0:198 'v' (4-component vector of float)
|
||||||
|
0:198 'f' (float)
|
||||||
|
0:199 move second child to first child (4-component vector of float)
|
||||||
|
0:199 'v' (4-component vector of float)
|
||||||
|
0:199 Function Call: texture1DProjLod(s11;vf4;f1; (4-component vector of float)
|
||||||
|
0:199 's1D' (uniform sampler1D)
|
||||||
|
0:199 'v' (4-component vector of float)
|
||||||
|
0:199 'f' (float)
|
||||||
|
0:200 move second child to first child (4-component vector of float)
|
||||||
|
0:200 'v' (4-component vector of float)
|
||||||
|
0:200 Function Call: shadow2DProjLod(sS21;vf4;f1; (4-component vector of float)
|
||||||
|
0:200 's2DS' (uniform sampler2DShadow)
|
||||||
|
0:200 'v' (4-component vector of float)
|
||||||
|
0:200 'f' (float)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? 'lowp' (float)
|
0:? 'lowp' (float)
|
||||||
0:? 'mediump' (float)
|
0:? 'mediump' (float)
|
||||||
@ -460,6 +520,9 @@ ERROR: node is still EOpNull!
|
|||||||
0:? 'm42' (4X2 matrix of float)
|
0:? 'm42' (4X2 matrix of float)
|
||||||
0:? 'm43' (4X3 matrix of float)
|
0:? 'm43' (4X3 matrix of float)
|
||||||
0:? 'm44' (4X4 matrix of float)
|
0:? 'm44' (4X4 matrix of float)
|
||||||
|
0:? 's3D' (uniform sampler3D)
|
||||||
|
0:? 's1D' (uniform sampler1D)
|
||||||
|
0:? 's2DS' (uniform sampler2DShadow)
|
||||||
|
|
||||||
|
|
||||||
Linked fragment stage:
|
Linked fragment stage:
|
||||||
@ -468,6 +531,7 @@ ERROR: Linking fragment stage: Recursion detected:
|
|||||||
foo(f1; calling foo(f1;
|
foo(f1; calling foo(f1;
|
||||||
|
|
||||||
Shader version: 120
|
Shader version: 120
|
||||||
|
Requested GL_ARB_shader_texture_lod
|
||||||
ERROR: node is still EOpNull!
|
ERROR: node is still EOpNull!
|
||||||
0:21 Function Definition: main( (void)
|
0:21 Function Definition: main( (void)
|
||||||
0:21 Function Parameters:
|
0:21 Function Parameters:
|
||||||
@ -859,6 +923,60 @@ ERROR: node is still EOpNull!
|
|||||||
0:171 Construct mat3 (2-element array of 3X3 matrix of float)
|
0:171 Construct mat3 (2-element array of 3X3 matrix of float)
|
||||||
0:171 'm3s' (3X3 matrix of float)
|
0:171 'm3s' (3X3 matrix of float)
|
||||||
0:171 'm3s' (3X3 matrix of float)
|
0:171 'm3s' (3X3 matrix of float)
|
||||||
|
0:179 Function Definition: foo2323( (void)
|
||||||
|
0:179 Function Parameters:
|
||||||
|
0:? Sequence
|
||||||
|
0:184 move second child to first child (4-component vector of float)
|
||||||
|
0:184 'v' (4-component vector of float)
|
||||||
|
0:184 Function Call: texture2DLod(s21;vf2;f1; (4-component vector of float)
|
||||||
|
0:184 's2D' (uniform sampler2D)
|
||||||
|
0:184 'v2' (2-component vector of float)
|
||||||
|
0:184 'f' (float)
|
||||||
|
0:185 move second child to first child (4-component vector of float)
|
||||||
|
0:185 'v' (4-component vector of float)
|
||||||
|
0:185 Function Call: texture3DProjLod(s31;vf4;f1; (4-component vector of float)
|
||||||
|
0:185 's3D' (uniform sampler3D)
|
||||||
|
0:185 'v' (4-component vector of float)
|
||||||
|
0:185 'f' (float)
|
||||||
|
0:186 move second child to first child (4-component vector of float)
|
||||||
|
0:186 'v' (4-component vector of float)
|
||||||
|
0:186 Function Call: texture1DProjLod(s11;vf4;f1; (4-component vector of float)
|
||||||
|
0:186 's1D' (uniform sampler1D)
|
||||||
|
0:186 'v' (4-component vector of float)
|
||||||
|
0:186 'f' (float)
|
||||||
|
0:187 move second child to first child (4-component vector of float)
|
||||||
|
0:187 'v' (4-component vector of float)
|
||||||
|
0:187 Function Call: shadow2DProjLod(sS21;vf4;f1; (4-component vector of float)
|
||||||
|
0:187 's2DS' (uniform sampler2DShadow)
|
||||||
|
0:187 'v' (4-component vector of float)
|
||||||
|
0:187 'f' (float)
|
||||||
|
0:192 Function Definition: foo2324( (void)
|
||||||
|
0:192 Function Parameters:
|
||||||
|
0:? Sequence
|
||||||
|
0:197 move second child to first child (4-component vector of float)
|
||||||
|
0:197 'v' (4-component vector of float)
|
||||||
|
0:197 Function Call: texture2DLod(s21;vf2;f1; (4-component vector of float)
|
||||||
|
0:197 's2D' (uniform sampler2D)
|
||||||
|
0:197 'v2' (2-component vector of float)
|
||||||
|
0:197 'f' (float)
|
||||||
|
0:198 move second child to first child (4-component vector of float)
|
||||||
|
0:198 'v' (4-component vector of float)
|
||||||
|
0:198 Function Call: texture3DProjLod(s31;vf4;f1; (4-component vector of float)
|
||||||
|
0:198 's3D' (uniform sampler3D)
|
||||||
|
0:198 'v' (4-component vector of float)
|
||||||
|
0:198 'f' (float)
|
||||||
|
0:199 move second child to first child (4-component vector of float)
|
||||||
|
0:199 'v' (4-component vector of float)
|
||||||
|
0:199 Function Call: texture1DProjLod(s11;vf4;f1; (4-component vector of float)
|
||||||
|
0:199 's1D' (uniform sampler1D)
|
||||||
|
0:199 'v' (4-component vector of float)
|
||||||
|
0:199 'f' (float)
|
||||||
|
0:200 move second child to first child (4-component vector of float)
|
||||||
|
0:200 'v' (4-component vector of float)
|
||||||
|
0:200 Function Call: shadow2DProjLod(sS21;vf4;f1; (4-component vector of float)
|
||||||
|
0:200 's2DS' (uniform sampler2DShadow)
|
||||||
|
0:200 'v' (4-component vector of float)
|
||||||
|
0:200 'f' (float)
|
||||||
0:? Linker Objects
|
0:? Linker Objects
|
||||||
0:? 'lowp' (float)
|
0:? 'lowp' (float)
|
||||||
0:? 'mediump' (float)
|
0:? 'mediump' (float)
|
||||||
@ -882,4 +1000,7 @@ ERROR: node is still EOpNull!
|
|||||||
0:? 'm42' (4X2 matrix of float)
|
0:? 'm42' (4X2 matrix of float)
|
||||||
0:? 'm43' (4X3 matrix of float)
|
0:? 'm43' (4X3 matrix of float)
|
||||||
0:? 'm44' (4X4 matrix of float)
|
0:? 'm44' (4X4 matrix of float)
|
||||||
|
0:? 's3D' (uniform sampler3D)
|
||||||
|
0:? 's1D' (uniform sampler1D)
|
||||||
|
0:? 's2DS' (uniform sampler2DShadow)
|
||||||
|
|
||||||
|
|||||||
@ -752,7 +752,7 @@ void TBuiltIns::initialize(int version, EProfile profile)
|
|||||||
// Original-style texture Functions with lod.
|
// Original-style texture Functions with lod.
|
||||||
//
|
//
|
||||||
TString* s;
|
TString* s;
|
||||||
if (version < 130)
|
if (version == 100)
|
||||||
s = &stageBuiltins[EShLangVertex];
|
s = &stageBuiltins[EShLangVertex];
|
||||||
else
|
else
|
||||||
s = &commonBuiltins;
|
s = &commonBuiltins;
|
||||||
@ -761,12 +761,12 @@ void TBuiltIns::initialize(int version, EProfile profile)
|
|||||||
(profile == ECoreProfile && version < 420) ||
|
(profile == ECoreProfile && version < 420) ||
|
||||||
profile == ENoProfile) {
|
profile == ENoProfile) {
|
||||||
s->append(
|
s->append(
|
||||||
"vec4 texture2DLod(sampler2D, vec2, float);"
|
"vec4 texture2DLod(sampler2D, vec2, float);" // ARB_shader_texture_lod
|
||||||
"vec4 texture2DProjLod(sampler2D, vec3, float);"
|
"vec4 texture2DProjLod(sampler2D, vec3, float);" // ARB_shader_texture_lod
|
||||||
"vec4 texture2DProjLod(sampler2D, vec4, float);"
|
"vec4 texture2DProjLod(sampler2D, vec4, float);" // ARB_shader_texture_lod
|
||||||
"vec4 texture3DLod(sampler3D, vec3, float);" // OES_texture_3D, but caught by keyword check
|
"vec4 texture3DLod(sampler3D, vec3, float);" // ARB_shader_texture_lod // OES_texture_3D, but caught by keyword check
|
||||||
"vec4 texture3DProjLod(sampler3D, vec4, float);" // OES_texture_3D, but caught by keyword check
|
"vec4 texture3DProjLod(sampler3D, vec4, float);" // ARB_shader_texture_lod // OES_texture_3D, but caught by keyword check
|
||||||
"vec4 textureCubeLod(samplerCube, vec3, float);"
|
"vec4 textureCubeLod(samplerCube, vec3, float);" // ARB_shader_texture_lod
|
||||||
|
|
||||||
"\n");
|
"\n");
|
||||||
}
|
}
|
||||||
@ -774,13 +774,13 @@ void TBuiltIns::initialize(int version, EProfile profile)
|
|||||||
(profile == ECoreProfile && version < 420) ||
|
(profile == ECoreProfile && version < 420) ||
|
||||||
profile == ENoProfile) {
|
profile == ENoProfile) {
|
||||||
s->append(
|
s->append(
|
||||||
"vec4 texture1DLod(sampler1D, float, float);"
|
"vec4 texture1DLod(sampler1D, float, float);" // ARB_shader_texture_lod
|
||||||
"vec4 texture1DProjLod(sampler1D, vec2, float);"
|
"vec4 texture1DProjLod(sampler1D, vec2, float);" // ARB_shader_texture_lod
|
||||||
"vec4 texture1DProjLod(sampler1D, vec4, float);"
|
"vec4 texture1DProjLod(sampler1D, vec4, float);" // ARB_shader_texture_lod
|
||||||
"vec4 shadow1DLod(sampler1DShadow, vec3, float);"
|
"vec4 shadow1DLod(sampler1DShadow, vec3, float);" // ARB_shader_texture_lod
|
||||||
"vec4 shadow2DLod(sampler2DShadow, vec3, float);"
|
"vec4 shadow2DLod(sampler2DShadow, vec3, float);" // ARB_shader_texture_lod
|
||||||
"vec4 shadow1DProjLod(sampler1DShadow, vec4, float);"
|
"vec4 shadow1DProjLod(sampler1DShadow, vec4, float);" // ARB_shader_texture_lod
|
||||||
"vec4 shadow2DProjLod(sampler2DShadow, vec4, float);"
|
"vec4 shadow2DProjLod(sampler2DShadow, vec4, float);" // ARB_shader_texture_lod
|
||||||
|
|
||||||
"\n");
|
"\n");
|
||||||
}
|
}
|
||||||
@ -2195,6 +2195,18 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
|
|||||||
symbolTable.setFunctionExtensions("texture2DLodEXT", 1, &GL_EXT_shader_texture_lod);
|
symbolTable.setFunctionExtensions("texture2DLodEXT", 1, &GL_EXT_shader_texture_lod);
|
||||||
symbolTable.setFunctionExtensions("texture2DProjLodEXT", 1, &GL_EXT_shader_texture_lod);
|
symbolTable.setFunctionExtensions("texture2DProjLodEXT", 1, &GL_EXT_shader_texture_lod);
|
||||||
symbolTable.setFunctionExtensions("textureCubeLodEXT", 1, &GL_EXT_shader_texture_lod);
|
symbolTable.setFunctionExtensions("textureCubeLodEXT", 1, &GL_EXT_shader_texture_lod);
|
||||||
|
} else if (version < 130) {
|
||||||
|
symbolTable.setFunctionExtensions("texture1DLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
|
symbolTable.setFunctionExtensions("texture2DLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
|
symbolTable.setFunctionExtensions("texture3DLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
|
symbolTable.setFunctionExtensions("textureCubeLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
|
symbolTable.setFunctionExtensions("texture1DProjLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
|
symbolTable.setFunctionExtensions("texture2DProjLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
|
symbolTable.setFunctionExtensions("texture3DProjLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
|
symbolTable.setFunctionExtensions("shadow1DLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
|
symbolTable.setFunctionExtensions("shadow2DLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
|
symbolTable.setFunctionExtensions("shadow1DProjLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
|
symbolTable.setFunctionExtensions("shadow2DProjLod", 1, &GL_ARB_shader_texture_lod);
|
||||||
}
|
}
|
||||||
symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &GL_EXT_frag_depth);
|
symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &GL_EXT_frag_depth);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -154,6 +154,7 @@ void TParseContext::initializeExtensionBehavior()
|
|||||||
extensionBehavior[GL_EXT_frag_depth] = EBhDisable;
|
extensionBehavior[GL_EXT_frag_depth] = EBhDisable;
|
||||||
extensionBehavior[GL_OES_EGL_image_external] = EBhDisable;
|
extensionBehavior[GL_OES_EGL_image_external] = EBhDisable;
|
||||||
extensionBehavior[GL_EXT_shader_texture_lod] = EBhDisable;
|
extensionBehavior[GL_EXT_shader_texture_lod] = EBhDisable;
|
||||||
|
extensionBehavior[GL_ARB_shader_texture_lod] = EBhDisablePartial;
|
||||||
|
|
||||||
extensionBehavior[GL_ARB_texture_rectangle] = EBhDisable;
|
extensionBehavior[GL_ARB_texture_rectangle] = EBhDisable;
|
||||||
extensionBehavior[GL_3DL_array_objects] = EBhDisable;
|
extensionBehavior[GL_3DL_array_objects] = EBhDisable;
|
||||||
@ -199,7 +200,8 @@ const char* TParseContext::getPreamble()
|
|||||||
"#define GL_ARB_separate_shader_objects 1\n"
|
"#define GL_ARB_separate_shader_objects 1\n"
|
||||||
"#define GL_ARB_tessellation_shader 1\n"
|
"#define GL_ARB_tessellation_shader 1\n"
|
||||||
"#define GL_ARB_enhanced_layouts 1\n"
|
"#define GL_ARB_enhanced_layouts 1\n"
|
||||||
"#define GL_ARB_texture_cube_map_array 1\n";
|
"#define GL_ARB_texture_cube_map_array 1\n"
|
||||||
|
"#define GL_ARB_shader_texture_lod 1\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -88,6 +88,7 @@ const char* const GL_ARB_separate_shader_objects = "GL_ARB_separate_shader_obje
|
|||||||
const char* const GL_ARB_tessellation_shader = "GL_ARB_tessellation_shader";
|
const char* const GL_ARB_tessellation_shader = "GL_ARB_tessellation_shader";
|
||||||
const char* const GL_ARB_enhanced_layouts = "GL_ARB_enhanced_layouts";
|
const char* const GL_ARB_enhanced_layouts = "GL_ARB_enhanced_layouts";
|
||||||
const char* const GL_ARB_texture_cube_map_array = "GL_ARB_texture_cube_map_array";
|
const char* const GL_ARB_texture_cube_map_array = "GL_ARB_texture_cube_map_array";
|
||||||
|
const char* const GL_ARB_shader_texture_lod = "GL_ARB_shader_texture_lod";
|
||||||
|
|
||||||
} // end namespace glslang
|
} // end namespace glslang
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user