From 634e3960c2bc322bbd51fccc7ff395d9f24e35dc Mon Sep 17 00:00:00 2001 From: Darren Wihandi <65404740+fairywreath@users.noreply.github.com> Date: Mon, 19 May 2025 14:21:25 -0400 Subject: Map `SV_VertexID` to `gl_VertexIndex-gl_BaseVertex`, add `SV_Vulkan*ID` semantics (#7150) * Map SV_VertexID to `gl_VertexIndex - gl_BaseVertex`, provide SV_Vulkan* SV semantics * Fix docs * Regenerate toc * Fix affected pointer-2 test * Add tests --------- Co-authored-by: Yong He --- source/slang/slang-emit-spirv.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'source/slang/slang-emit-spirv.cpp') diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp index 5c1ccaf36..5dfa1c76c 100644 --- a/source/slang/slang-emit-spirv.cpp +++ b/source/slang/slang-emit-spirv.cpp @@ -5856,6 +5856,11 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex case IRTargetBuiltinVarName::SpvBaseInstance: requireSPIRVCapability(SpvCapabilityDrawParameters); return getBuiltinGlobalVar(inst->getFullType(), SpvBuiltInBaseInstance, inst); + case IRTargetBuiltinVarName::SpvVertexIndex: + return getBuiltinGlobalVar(inst->getFullType(), SpvBuiltInVertexIndex, inst); + case IRTargetBuiltinVarName::SpvBaseVertex: + requireSPIRVCapability(SpvCapabilityDrawParameters); + return getBuiltinGlobalVar(inst->getFullType(), SpvBuiltInBaseVertex, inst); } } if (auto layout = getVarLayout(inst)) @@ -5948,7 +5953,7 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex { return getBuiltinGlobalVar(inst->getFullType(), SpvBuiltInInvocationId, inst); } - else if (semanticName == "sv_instanceid") + else if (semanticName == "sv_vulkaninstanceid") { return getBuiltinGlobalVar(inst->getFullType(), SpvBuiltInInstanceIndex, inst); } @@ -6046,7 +6051,7 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex requireSPIRVCapability(SpvCapabilityTessellation); return getBuiltinGlobalVar(inst->getFullType(), SpvBuiltInTessLevelInner, inst); } - else if (semanticName == "sv_vertexid") + else if (semanticName == "sv_vulkanvertexid") { return getBuiltinGlobalVar(inst->getFullType(), SpvBuiltInVertexIndex, inst); } -- cgit v1.2.3