summaryrefslogtreecommitdiff
path: root/source/slang/slang-emit-c-like.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-02-27 16:57:52 -0800
committerGitHub <noreply@github.com>2025-02-27 16:57:52 -0800
commit6f2ce72b038b34e84819ddfc5d658166ed879eaa (patch)
tree486a85523114a428ccf4deee05bcbab0d4b9528b /source/slang/slang-emit-c-like.cpp
parent90b3817498d9cf664346f04dcea71f48ce81993e (diff)
Map `SV_InstanceID` to `gl_InstanceIndex-gl_BaseInstance` (#6468)
* Map `SV_InstanceID` to `gl_InstanceIndex-gl_BaseInstance` * Fix ci.
Diffstat (limited to 'source/slang/slang-emit-c-like.cpp')
-rw-r--r--source/slang/slang-emit-c-like.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/source/slang/slang-emit-c-like.cpp b/source/slang/slang-emit-c-like.cpp
index db2c0150f..946e9c429 100644
--- a/source/slang/slang-emit-c-like.cpp
+++ b/source/slang/slang-emit-c-like.cpp
@@ -345,6 +345,20 @@ IRNumThreadsDecoration* CLikeSourceEmitter::getComputeThreadGroupSize(
return decor;
}
+String CLikeSourceEmitter::getTargetBuiltinVarName(IRInst* inst, IRTargetBuiltinVarName builtinName)
+{
+ switch (builtinName)
+ {
+ case IRTargetBuiltinVarName::SpvInstanceIndex:
+ return "gl_InstanceIndex";
+ case IRTargetBuiltinVarName::SpvBaseInstance:
+ return "gl_BaseInstance";
+ }
+ if (auto linkage = inst->findDecoration<IRLinkageDecoration>())
+ return linkage->getMangledName();
+ return generateName(inst);
+}
+
List<IRWitnessTableEntry*> CLikeSourceEmitter::getSortedWitnessTableEntries(
IRWitnessTable* witnessTable)
{
@@ -1208,6 +1222,11 @@ String CLikeSourceEmitter::generateName(IRInst* inst)
return externCppDecoration->getName();
}
+ if (auto builtinTargetVarDecoration = inst->findDecoration<IRTargetBuiltinVarDecoration>())
+ {
+ return getTargetBuiltinVarName(inst, builtinTargetVarDecoration->getBuiltinVarName());
+ }
+
// If we have a name hint on the instruction, then we will try to use that
// to provide the basis for the actual name in the output code.
if (auto nameHintDecoration = inst->findDecoration<IRNameHintDecoration>())