diff options
| author | Harsh Aggarwal (NVIDIA) <haaggarwal@nvidia.com> | 2025-05-12 13:05:34 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-12 07:35:34 +0000 |
| commit | 64a43b17a76d7a8269f55cbe67ef708cd464774c (patch) | |
| tree | 089fc256a8c10eba17873c5458804ad1714dd5e9 /source/slang/slang-emit-spirv.cpp | |
| parent | 03f9242489d5598c9c7594ac12e269f57a018cda (diff) | |
cluster acceleration structure optix 6431 (#7028)
* Add cluster geometry intrinsics for ray tracing
- Added GetClusterID() method to HitObject class
- Added CandidateClusterID() and CommittedClusterID() methods to
RayQuery class
- Added SPV_NV_cluster_acceleration_structure extension support
- Added GL_NV_cluster_acceleration_structure extension support
- Added test files for RayQuery and HitObject cluster methods
Fixes #6431
* OpRayQueryGetIntersectionClusterIdNV - unrecognized spirv
Disabling spirv backend for SPV_NV_cluster_acceleration_structure
hlsl.meta.slang(18674): error 29100: unrecognized spirv opcode:
OpRayQueryGetIntersectionClusterIdNV
result:$$int = OpRayQueryGetIntersectionClusterIdNV
&this $iCandidateOrCommitted;
^~~~~~
hlsl.meta.slang(18670): error 30019: expected an expression of type
'int', got 'void'
return spirv_asm
^~~~~~~~~
ninja: build stopped: subcommand failed.
* 6431 - Fix spirv opcode
* Remove tests
* Add relevant tests
* Review - Simplify tests
Diffstat (limited to 'source/slang/slang-emit-spirv.cpp')
| -rw-r--r-- | source/slang/slang-emit-spirv.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp index bd9b23b2d..096e7d8bc 100644 --- a/source/slang/slang-emit-spirv.cpp +++ b/source/slang/slang-emit-spirv.cpp @@ -1433,6 +1433,13 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex return ensureExtensionDeclaration(name); } + // Ensure cluster acceleration structure extensions and capabilities are declared + void requireRayTracingClusterAccelerationStructure() + { + requireSPIRVCapability(SpvCapabilityRayTracingClusterAccelerationStructureNV); + ensureExtensionDeclaration(UnownedStringSlice("SPV_NV_cluster_acceleration_structure")); + } + bool hasExtensionDeclaration(const UnownedStringSlice& name) { return m_extensionInsts.containsKey(name); |
