glslang -> SPIR-V: some built-in decoration code was turned off; turn it on.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@30466 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 8cba921..65922b4 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -287,35 +287,14 @@
return (spv::Decoration)spv::BadValue;
}
-// Identify what SPIR-V built-in variable a symbol is.
-// Return -1 if a symbol is not a built-in to decorate.
-int TranslateBuiltInDecoration(const glslang::TIntermSymbol& symbol)
+// Translate glslang built-in variable to SPIR-V built in decoration.
+spv::BuiltIn TranslateBuiltInDecoration(const glslang::TIntermSymbol& node)
{
- switch (symbol.getQualifier().storage) {
- case glslang::EvqVertexId: return spv::BuiltInVertexId;
- case glslang::EvqInstanceId: return spv::BuiltInInstanceId;
- case glslang::EvqPosition: return spv::BuiltInPosition;
- case glslang::EvqPointSize: return spv::BuiltInPointSize;
- case glslang::EvqClipVertex: return spv::BuiltInClipVertex;
- case glslang::EvqFace: return spv::BuiltInFrontFacing;
- case glslang::EvqFragCoord: return spv::BuiltInFragCoord;
- case glslang::EvqPointCoord: return spv::BuiltInPointCoord;
- case glslang::EvqFragColor: return spv::BuiltInFragColor;
- case glslang::EvqFragDepth: return spv::BuiltInFragDepth;
- default:
- // TODO: built-ins not identified by storage qualifier
- return -1;
- }
-}
-
-// Translate glslang built-in variable to SPIR-V built in.
-spv::BuiltIn TranslateBuiltIn(const glslang::TIntermSymbol* node)
-{
- const glslang::TString& name = node->getName();
+ const glslang::TString& name = node.getName();
if (name.compare(0, 3, "gl_") != 0)
return (spv::BuiltIn)spv::BadValue;
- switch (node->getQualifier().storage) {
+ switch (node.getQualifier().storage) {
case glslang::EvqPosition: return spv::BuiltInPosition;
case glslang::EvqPointSize: return spv::BuiltInPointSize;
case glslang::EvqClipVertex: return spv::BuiltInClipVertex;
@@ -326,7 +305,7 @@
case glslang::EvqFace: return spv::BuiltInFrontFacing;
case glslang::EvqFragColor: return spv::BuiltInFragColor;
case glslang::EvqFragDepth: return spv::BuiltInFragDepth;
- default: return (spv::BuiltIn)spv::BadValue;
+ default:
if (name == "gl_ClipDistance")
return spv::BuiltInClipDistance;
else if (name == "gl_PrimitiveID" || name == "gl_PrimitiveIDIn")
@@ -365,7 +344,10 @@
return spv::BuiltInGlobalInvocationId;
else if (name == "gl_LocalInvocationIndexID")
return spv::BuiltInLocalInvocationIndex;
+ break;
}
+
+ return (spv::BuiltIn)spv::BadValue;
}
//
@@ -2439,7 +2421,7 @@
// built-in variable decorations
int num = TranslateBuiltInDecoration(*symbol);
- if (num >= 0)
+ if (num != spv::BadValue)
builder.addDecoration(id, spv::DecorationBuiltIn, num);
if (linkageOnly)