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
This commit is contained in:
parent
0016eaf1b9
commit
9a3399450a
@ -287,35 +287,14 @@ spv::Decoration TranslateInvariantDecoration(const glslang::TType& type)
|
||||
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 @@ spv::BuiltIn TranslateBuiltIn(const glslang::TIntermSymbol* node)
|
||||
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 @@ spv::BuiltIn TranslateBuiltIn(const glslang::TIntermSymbol* node)
|
||||
return spv::BuiltInGlobalInvocationId;
|
||||
else if (name == "gl_LocalInvocationIndexID")
|
||||
return spv::BuiltInLocalInvocationIndex;
|
||||
break;
|
||||
}
|
||||
|
||||
return (spv::BuiltIn)spv::BadValue;
|
||||
}
|
||||
|
||||
//
|
||||
@ -2439,7 +2421,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
|
||||
|
||||
// built-in variable decorations
|
||||
int num = TranslateBuiltInDecoration(*symbol);
|
||||
if (num >= 0)
|
||||
if (num != spv::BadValue)
|
||||
builder.addDecoration(id, spv::DecorationBuiltIn, num);
|
||||
|
||||
if (linkageOnly)
|
||||
|
Loading…
x
Reference in New Issue
Block a user