diff options
| author | Darren Wihandi <65404740+fairywreath@users.noreply.github.com> | 2025-05-19 14:21:25 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-19 11:21:25 -0700 |
| commit | 634e3960c2bc322bbd51fccc7ff395d9f24e35dc (patch) | |
| tree | d7cc501d74a1e4e5fb7fa7d5dcf6c6d515603678 /source/slang/slang-emit-spirv.cpp | |
| parent | 31d80c767865d360afba39e5248ab709c587792f (diff) | |
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 <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-emit-spirv.cpp')
| -rw-r--r-- | source/slang/slang-emit-spirv.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
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); } |
