Implement cull distances for GLSL 4.5 (but not as an extension yet, just a 4.5 feature).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27714 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index b16f139..9174b13 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -197,6 +197,8 @@
"MaxAtomicCounterBufferSize 16384\n"
"MaxTransformFeedbackBuffers 4\n"
"MaxTransformFeedbackInterleavedComponents 64\n"
+ "MaxCullDistances 8\n"
+ "MaxCombinedClipAndCullDistances 8\n"
"nonInductiveForLoops 1\n"
"whileLoops 1\n"
@@ -401,6 +403,10 @@
Resources.maxTransformFeedbackBuffers = value;
else if (strcmp(token, "MaxTransformFeedbackInterleavedComponents") == 0)
Resources.maxTransformFeedbackInterleavedComponents = value;
+ else if (strcmp(token, "MaxCullDistances") == 0)
+ Resources.maxCullDistances = value;
+ else if (strcmp(token, "MaxCombinedClipAndCullDistances") == 0)
+ Resources.maxCombinedClipAndCullDistances = value;
else if (strcmp(token, "nonInductiveForLoops") == 0)
Resources.limits.nonInductiveForLoops = (value != 0);
diff --git a/Test/450.comp b/Test/450.comp
new file mode 100644
index 0000000..7f723ec
--- /dev/null
+++ b/Test/450.comp
@@ -0,0 +1 @@
+#version 450 core
diff --git a/Test/450.frag b/Test/450.frag
index 5c50e54..73f497e 100644
--- a/Test/450.frag
+++ b/Test/450.frag
@@ -14,4 +14,7 @@
v3 = dFdyFine(in3);
float f = dFdx(in1) + dFdxFine(in1) + dFdxCoarse(in1);
v4 = fwidthCoarse(in4) + fwidthFine(in4);
+
+ float cull = gl_CullDistance[2];
+ float consts = gl_MaxCullDistances + gl_MaxCombinedClipAndCullDistances;
}
diff --git a/Test/450.geom b/Test/450.geom
new file mode 100644
index 0000000..af67681
--- /dev/null
+++ b/Test/450.geom
@@ -0,0 +1,14 @@
+#version 450 core
+
+in gl_PerVertex {
+ float gl_CullDistance[3];
+} gl_in[];
+
+out gl_PerVertex {
+ float gl_CullDistance[3];
+};
+
+void main()
+{
+ gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
+}
diff --git a/Test/450.tesc b/Test/450.tesc
new file mode 100644
index 0000000..9cbf71c
--- /dev/null
+++ b/Test/450.tesc
@@ -0,0 +1,14 @@
+#version 450 core
+
+in gl_PerVertex {
+ float gl_CullDistance[3];
+} gl_in[gl_MaxPatchVertices];
+
+out gl_PerVertex {
+ float gl_CullDistance[3];
+} gl_out[];
+
+void main()
+{
+ gl_out[0].gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
+}
diff --git a/Test/450.tese b/Test/450.tese
new file mode 100644
index 0000000..6144793
--- /dev/null
+++ b/Test/450.tese
@@ -0,0 +1,14 @@
+#version 450 core
+
+in gl_PerVertex {
+ float gl_CullDistance[3];
+} gl_in[gl_MaxPatchVertices];
+
+out gl_PerVertex {
+ float gl_CullDistance[3];
+};
+
+void main()
+{
+ gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
+}
diff --git a/Test/450.vert b/Test/450.vert
new file mode 100644
index 0000000..fb4c9c1
--- /dev/null
+++ b/Test/450.vert
@@ -0,0 +1,10 @@
+#version 450 core
+
+out gl_PerVertex {
+ float gl_CullDistance[3];
+};
+
+void main()
+{
+ gl_CullDistance[2] = 4.5;
+}
diff --git a/Test/baseResults/450.comp.out b/Test/baseResults/450.comp.out
new file mode 100644
index 0000000..67ec647
--- /dev/null
+++ b/Test/baseResults/450.comp.out
@@ -0,0 +1,18 @@
+450.comp
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+Shader version: 450
+local_size = (1, 1, 1)
+0:? Sequence
+0:? Linker Objects
+
+
+Linked compute stage:
+
+ERROR: Linking compute stage: Missing entry point: Each stage requires one "void main()" entry point
+
+Shader version: 450
+local_size = (1, 1, 1)
+0:? Sequence
+0:? Linker Objects
+
diff --git a/Test/baseResults/450.frag.out b/Test/baseResults/450.frag.out
index 02f2c33..a928c29 100644
--- a/Test/baseResults/450.frag.out
+++ b/Test/baseResults/450.frag.out
@@ -47,11 +47,24 @@
0:16 'in4' (smooth in 4-component vector of float)
0:16 fwidthFine (4-component vector of float)
0:16 'in4' (smooth in 4-component vector of float)
+0:18 Sequence
+0:18 move second child to first child (float)
+0:18 'cull' (float)
+0:18 direct index (smooth float)
+0:18 'gl_CullDistance' (smooth in implicitly-sized array of float)
+0:18 Constant:
+0:18 2 (const int)
+0:19 Sequence
+0:19 move second child to first child (float)
+0:19 'consts' (float)
+0:19 Constant:
+0:19 16.000000
0:? Linker Objects
0:? 'in1' (smooth in float)
0:? 'in2' (smooth in 2-component vector of float)
0:? 'in3' (smooth in 3-component vector of float)
0:? 'in4' (smooth in 4-component vector of float)
+0:? 'gl_CullDistance' (smooth in implicitly-sized array of float)
Linked fragment stage:
@@ -103,9 +116,22 @@
0:16 'in4' (smooth in 4-component vector of float)
0:16 fwidthFine (4-component vector of float)
0:16 'in4' (smooth in 4-component vector of float)
+0:18 Sequence
+0:18 move second child to first child (float)
+0:18 'cull' (float)
+0:18 direct index (smooth float)
+0:18 'gl_CullDistance' (smooth in 3-element array of float)
+0:18 Constant:
+0:18 2 (const int)
+0:19 Sequence
+0:19 move second child to first child (float)
+0:19 'consts' (float)
+0:19 Constant:
+0:19 16.000000
0:? Linker Objects
0:? 'in1' (smooth in float)
0:? 'in2' (smooth in 2-component vector of float)
0:? 'in3' (smooth in 3-component vector of float)
0:? 'in4' (smooth in 4-component vector of float)
+0:? 'gl_CullDistance' (smooth in 3-element array of float)
diff --git a/Test/baseResults/450.geom.out b/Test/baseResults/450.geom.out
new file mode 100644
index 0000000..b367afc
--- /dev/null
+++ b/Test/baseResults/450.geom.out
@@ -0,0 +1,72 @@
+450.geom
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+Shader version: 450
+invocations = 0
+max_vertices = 0
+input primitive = none
+output primitive = none
+0:? Sequence
+0:11 Function Definition: main( (void)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 move second child to first child (float)
+0:13 direct index (layout(stream=0 ) float)
+0:13 gl_CullDistance: direct index for structure (layout(stream=0 ) out implicitly-sized array of float)
+0:13 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out implicitly-sized array of float gl_CullDistance})
+0:13 Constant:
+0:13 3 (const uint)
+0:13 Constant:
+0:13 2 (const int)
+0:13 direct index (float)
+0:13 gl_CullDistance: direct index for structure (in implicitly-sized array of float)
+0:13 direct index (block{in implicitly-sized array of float gl_CullDistance})
+0:13 'gl_in' (in implicitly-sized array of block{in implicitly-sized array of float gl_CullDistance})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:? Linker Objects
+0:? 'gl_in' (in implicitly-sized array of block{in implicitly-sized array of float gl_CullDistance})
+0:? 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out implicitly-sized array of float gl_CullDistance})
+
+
+Linked geometry stage:
+
+ERROR: Linking geometry stage: At least one shader must specify an input layout primitive
+ERROR: Linking geometry stage: At least one shader must specify an output layout primitive
+ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
+
+Shader version: 450
+invocations = 0
+max_vertices = 0
+input primitive = none
+output primitive = none
+0:? Sequence
+0:11 Function Definition: main( (void)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 move second child to first child (float)
+0:13 direct index (layout(stream=0 ) float)
+0:13 gl_CullDistance: direct index for structure (layout(stream=0 ) out 3-element array of float)
+0:13 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-element array of float gl_CullDistance})
+0:13 Constant:
+0:13 3 (const uint)
+0:13 Constant:
+0:13 2 (const int)
+0:13 direct index (float)
+0:13 gl_CullDistance: direct index for structure (in 1-element array of float)
+0:13 direct index (block{in 1-element array of float gl_CullDistance})
+0:13 'gl_in' (in 2-element array of block{in 1-element array of float gl_CullDistance})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:? Linker Objects
+0:? 'gl_in' (in 2-element array of block{in 1-element array of float gl_CullDistance})
+0:? 'anon@0' (layout(stream=0 ) out block{layout(stream=0 ) out 3-element array of float gl_CullDistance})
+
diff --git a/Test/baseResults/450.tesc.out b/Test/baseResults/450.tesc.out
new file mode 100644
index 0000000..df54fa9
--- /dev/null
+++ b/Test/baseResults/450.tesc.out
@@ -0,0 +1,70 @@
+450.tesc
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+Shader version: 450
+vertices = 0
+0:? Sequence
+0:11 Function Definition: main( (void)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 move second child to first child (float)
+0:13 direct index (float)
+0:13 gl_CullDistance: direct index for structure (out implicitly-sized array of float)
+0:13 direct index (block{out implicitly-sized array of float gl_CullDistance})
+0:13 'gl_out' (out implicitly-sized array of block{out implicitly-sized array of float gl_CullDistance})
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:13 direct index (float)
+0:13 gl_CullDistance: direct index for structure (in implicitly-sized array of float)
+0:13 direct index (block{in implicitly-sized array of float gl_CullDistance})
+0:13 'gl_in' (in 32-element array of block{in implicitly-sized array of float gl_CullDistance})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:? Linker Objects
+0:? 'gl_in' (in 32-element array of block{in implicitly-sized array of float gl_CullDistance})
+0:? 'gl_out' (out implicitly-sized array of block{out implicitly-sized array of float gl_CullDistance})
+
+
+Linked tessellation control stage:
+
+ERROR: Linking tessellation control stage: At least one shader must specify an output layout(vertices=...)
+
+Shader version: 450
+vertices = 0
+0:? Sequence
+0:11 Function Definition: main( (void)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 move second child to first child (float)
+0:13 direct index (float)
+0:13 gl_CullDistance: direct index for structure (out 1-element array of float)
+0:13 direct index (block{out 1-element array of float gl_CullDistance})
+0:13 'gl_out' (out 1-element array of block{out 1-element array of float gl_CullDistance})
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:13 direct index (float)
+0:13 gl_CullDistance: direct index for structure (in 1-element array of float)
+0:13 direct index (block{in 1-element array of float gl_CullDistance})
+0:13 'gl_in' (in 32-element array of block{in 1-element array of float gl_CullDistance})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:? Linker Objects
+0:? 'gl_in' (in 32-element array of block{in 1-element array of float gl_CullDistance})
+0:? 'gl_out' (out 1-element array of block{out 1-element array of float gl_CullDistance})
+
diff --git a/Test/baseResults/450.tese.out b/Test/baseResults/450.tese.out
new file mode 100644
index 0000000..ef2e1c7
--- /dev/null
+++ b/Test/baseResults/450.tese.out
@@ -0,0 +1,68 @@
+450.tese
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+Shader version: 450
+input primitive = none
+vertex spacing = none
+triangle order = none
+0:? Sequence
+0:11 Function Definition: main( (void)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 move second child to first child (float)
+0:13 direct index (float)
+0:13 gl_CullDistance: direct index for structure (out implicitly-sized array of float)
+0:13 'anon@0' (out block{out implicitly-sized array of float gl_CullDistance})
+0:13 Constant:
+0:13 3 (const uint)
+0:13 Constant:
+0:13 2 (const int)
+0:13 direct index (float)
+0:13 gl_CullDistance: direct index for structure (in implicitly-sized array of float)
+0:13 direct index (block{in implicitly-sized array of float gl_CullDistance})
+0:13 'gl_in' (in 32-element array of block{in implicitly-sized array of float gl_CullDistance})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:? Linker Objects
+0:? 'gl_in' (in 32-element array of block{in implicitly-sized array of float gl_CullDistance})
+0:? 'anon@0' (out block{out implicitly-sized array of float gl_CullDistance})
+
+
+Linked tessellation evaluation stage:
+
+ERROR: Linking tessellation evaluation stage: At least one shader must specify an input layout primitive
+
+Shader version: 450
+input primitive = none
+vertex spacing = equal_spacing
+triangle order = ccw
+0:? Sequence
+0:11 Function Definition: main( (void)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 move second child to first child (float)
+0:13 direct index (float)
+0:13 gl_CullDistance: direct index for structure (out 3-element array of float)
+0:13 'anon@0' (out block{out 3-element array of float gl_CullDistance})
+0:13 Constant:
+0:13 3 (const uint)
+0:13 Constant:
+0:13 2 (const int)
+0:13 direct index (float)
+0:13 gl_CullDistance: direct index for structure (in 1-element array of float)
+0:13 direct index (block{in 1-element array of float gl_CullDistance})
+0:13 'gl_in' (in 32-element array of block{in 1-element array of float gl_CullDistance})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 0 (const int)
+0:13 Constant:
+0:13 2 (const int)
+0:? Linker Objects
+0:? 'gl_in' (in 32-element array of block{in 1-element array of float gl_CullDistance})
+0:? 'anon@0' (out block{out 3-element array of float gl_CullDistance})
+
diff --git a/Test/baseResults/450.vert.out b/Test/baseResults/450.vert.out
new file mode 100644
index 0000000..6b752d1
--- /dev/null
+++ b/Test/baseResults/450.vert.out
@@ -0,0 +1,47 @@
+450.vert
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+Shader version: 450
+0:? Sequence
+0:7 Function Definition: main( (void)
+0:7 Function Parameters:
+0:9 Sequence
+0:9 move second child to first child (float)
+0:9 direct index (float)
+0:9 gl_CullDistance: direct index for structure (out implicitly-sized array of float)
+0:9 'anon@0' (out block{out implicitly-sized array of float gl_CullDistance})
+0:9 Constant:
+0:9 10 (const uint)
+0:9 Constant:
+0:9 2 (const int)
+0:9 Constant:
+0:9 4.500000
+0:? Linker Objects
+0:? 'anon@0' (out block{out implicitly-sized array of float gl_CullDistance})
+0:? 'gl_VertexID' (gl_VertexId int)
+0:? 'gl_InstanceID' (gl_InstanceId int)
+
+
+Linked vertex stage:
+
+
+Shader version: 450
+0:? Sequence
+0:7 Function Definition: main( (void)
+0:7 Function Parameters:
+0:9 Sequence
+0:9 move second child to first child (float)
+0:9 direct index (float)
+0:9 gl_CullDistance: direct index for structure (out 3-element array of float)
+0:9 'anon@0' (out block{out 3-element array of float gl_CullDistance})
+0:9 Constant:
+0:9 10 (const uint)
+0:9 Constant:
+0:9 2 (const int)
+0:9 Constant:
+0:9 4.500000
+0:? Linker Objects
+0:? 'anon@0' (out block{out 3-element array of float gl_CullDistance})
+0:? 'gl_VertexID' (gl_VertexId int)
+0:? 'gl_InstanceID' (gl_InstanceId int)
+
diff --git a/Test/baseResults/test.conf b/Test/baseResults/test.conf
index bcdeed0..a150a7e 100644
--- a/Test/baseResults/test.conf
+++ b/Test/baseResults/test.conf
@@ -78,6 +78,8 @@
MaxAtomicCounterBufferSize 16384
MaxTransformFeedbackBuffers 4
MaxTransformFeedbackInterleavedComponents 64
+MaxCullDistances 8
+MaxCombinedClipAndCullDistances 8
nonInductiveForLoops 1
whileLoops 1
doWhileLoops 1
diff --git a/Test/testlist b/Test/testlist
index 5d4b52b..b19db13 100644
--- a/Test/testlist
+++ b/Test/testlist
@@ -71,7 +71,12 @@
430.comp
440.vert
440.frag
+450.vert
+450.geom
+450.tesc
+450.tese
450.frag
+450.comp
dce.frag
atomic_uint.frag
../../LunarGLASS/test/aggOps.frag
diff --git a/glslang/Include/ResourceLimits.h b/glslang/Include/ResourceLimits.h
index bdf879c..07feb7d 100644
--- a/glslang/Include/ResourceLimits.h
+++ b/glslang/Include/ResourceLimits.h
@@ -130,6 +130,8 @@
int maxAtomicCounterBufferSize;
int maxTransformFeedbackBuffers;
int maxTransformFeedbackInterleavedComponents;
+ int maxCullDistances;
+ int maxCombinedClipAndCullDistances;
TLimits limits;
};
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 89116bc..7780576 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -1221,7 +1221,7 @@
"vec4 gl_Position;" // needs qualifier fixed later
"float gl_PointSize;" // needs qualifier fixed later
"float gl_ClipDistance[];"
- );
+ );
if (IncludeLegacy(version, profile))
stageBuiltins[EShLangVertex].append(
"vec4 gl_ClipVertex;" // needs qualifier fixed later
@@ -1232,6 +1232,10 @@
"vec4 gl_TexCoord[];"
"float gl_FogFragCoord;"
);
+ if (version >= 450)
+ stageBuiltins[EShLangVertex].append(
+ "float gl_CullDistance[];"
+ );
stageBuiltins[EShLangVertex].append(
"};"
"\n");
@@ -1285,6 +1289,10 @@
"vec4 gl_TexCoord[];"
"float gl_FogFragCoord;"
);
+ if (version >= 450)
+ stageBuiltins[EShLangGeometry].append(
+ "float gl_CullDistance[];"
+ );
stageBuiltins[EShLangGeometry].append(
"} gl_in[];"
@@ -1304,6 +1312,10 @@
"vec4 gl_TexCoord[];"
"float gl_FogFragCoord;"
);
+ if (version >= 450)
+ stageBuiltins[EShLangGeometry].append(
+ "float gl_CullDistance[];"
+ );
stageBuiltins[EShLangGeometry].append(
"};"
@@ -1356,6 +1368,10 @@
"vec4 gl_TexCoord[];"
"float gl_FogFragCoord;"
);
+ if (version >= 450)
+ stageBuiltins[EShLangTessControl].append(
+ "float gl_CullDistance[];"
+ );
stageBuiltins[EShLangTessControl].append(
"} gl_out[];"
@@ -1397,6 +1413,10 @@
"vec4 gl_TexCoord[];"
"float gl_FogFragCoord;"
);
+ if (version >= 450)
+ stageBuiltins[EShLangTessEvaluation].append(
+ "float gl_CullDistance[];"
+ );
stageBuiltins[EShLangTessEvaluation].append(
"};"
"\n");
@@ -1477,6 +1497,7 @@
if (version >= 450)
stageBuiltins[EShLangFragment].append(
+ "in float gl_CullDistance[];"
"bool gl_HelperInvocation;" // needs qualifier fixed later
);
} else {
@@ -2200,6 +2221,10 @@
"vec4 gl_TexCoord[];"
"float gl_FogFragCoord;"
);
+ if (profile != EEsProfile && version >= 450)
+ s.append(
+ "float gl_CullDistance[];"
+ );
s.append(
"} gl_in[gl_MaxPatchVertices];"
"\n");
@@ -2301,6 +2326,14 @@
s.append(builtInConstant);
}
+ // GL_ARB_cull_distance
+ if (profile != EEsProfile && version >= 450) {
+ snprintf(builtInConstant, maxSize, "const int gl_MaxCullDistances = %d;", resources.maxCullDistances);
+ s.append(builtInConstant);
+ snprintf(builtInConstant, maxSize, "const int gl_MaxCombinedClipAndCullDistances = %d;", resources.maxCombinedClipAndCullDistances);
+ s.append(builtInConstant);
+ }
+
s.append("\n");
}
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 06dd278..bdbe775 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -2559,6 +2559,7 @@
//
// Either redeclare the requested block, or give an error message why it can't be done.
//
+// TODO: functionality: explicitly sizing members of redeclared blocks is not giving them an explicit size
void TParseContext::redeclareBuiltinBlock(TSourceLoc loc, TTypeList& newTypeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes)
{
const char* feature = "built-in block redeclaration";
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index 2f700f2..5ebb89b 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -169,6 +169,7 @@
extensionBehavior[GL_ARB_shader_image_load_store] = EBhDisable;
extensionBehavior[GL_ARB_shader_atomic_counters] = EBhDisable;
extensionBehavior[GL_ARB_derivative_control] = EBhDisable;
+// extensionBehavior[GL_ARB_cull_distance] = EBhDisable; // present for 4.5, but need extension control over block members
}
// Get code that is not part of a shared symbol table, is specific to this shader,
@@ -184,7 +185,8 @@
"#define GL_OES_standard_derivatives 1\n"
"#define GL_EXT_frag_depth 1\n"
"#define GL_OES_EGL_image_external 1\n"
- "#define GL_EXT_shader_texture_lod 1\n";
+ "#define GL_EXT_shader_texture_lod 1\n"
+ ;
} else {
return
"#define GL_ES 1\n"
@@ -192,7 +194,8 @@
"#define GL_OES_standard_derivatives 1\n"
"#define GL_EXT_frag_depth 1\n"
"#define GL_OES_EGL_image_external 1\n"
- "#define GL_EXT_shader_texture_lod 1\n";
+ "#define GL_EXT_shader_texture_lod 1\n"
+ ;
}
} else {
return
@@ -210,6 +213,7 @@
"#define GL_ARB_shader_image_load_store 1\n"
"#define GL_ARB_shader_atomic_counters 1\n"
"#define GL_ARB_derivative_control 1\n"
+// "#define GL_ARB_cull_distance 1\n" // present for 4.5, but need extension control over block members
;
}
}
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index 48ebbed..b97df31 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -93,6 +93,7 @@
const char* const GL_ARB_shader_image_load_store = "GL_ARB_shader_image_load_store";
const char* const GL_ARB_shader_atomic_counters = "GL_ARB_shader_atomic_counters";
const char* const GL_ARB_derivative_control = "GL_ARB_derivative_control";
+//const char* const GL_ARB_cull_distance = "GL_ARB_cull_distance"; // present for 4.5, but need extension control over block members
} // end namespace glslang