Skip to content

[SPIR-V] Add descriptor heap RaytracingAccelerationStructure support#8518

Open
jzakharovnv wants to merge 6 commits into
microsoft:mainfrom
jzakharovnv:pr2-raytracing-accel-struct
Open

[SPIR-V] Add descriptor heap RaytracingAccelerationStructure support#8518
jzakharovnv wants to merge 6 commits into
microsoft:mainfrom
jzakharovnv:pr2-raytracing-accel-struct

Conversation

@jzakharovnv

Copy link
Copy Markdown
Collaborator

Building off of #8517, this PR extends the SPV_EXT_descriptor_heap native heap lowering to cover RaytracingAccelerationStructure resources loaded from ResourceDescriptorHeap. It is part 2/4 in a series.

Acceleration structure descriptors are accessed via OpUntypedAccessChainKHR into a runtime array of OpTypeAccelerationStructureKHR, consistent with the image and sampler paths added in the previous commit.

Assisted by an AI agent

@dnovillo

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

✅ With the latest revision this PR passed the C/C++ code formatter.

@jzakharovnv
jzakharovnv force-pushed the pr2-raytracing-accel-struct branch from b7b19c0 to d77c9f7 Compare June 4, 2026 21:58
Building off of microsoft#8281, this commit adds a native lowering via SPV_EXT_descriptor_heap and SPV_KHR_untyped_pointers.

ResourceDescriptorHeap and SamplerDescriptorHeap are lowered to untyped variables decorated with ResourceHeapEXT and SamplerHeapEXT. Each heap access emits OpUntypedAccessChainKHR into a runtime array of the appropriate descriptor type. Buffer-like resources (StructuredBuffer, ByteAddressBuffer, ConstantBuffer, TextureBuffer) use OpTypeBufferEXT and OpBufferPointerEXT; image and sampler resources use OpLoad. Interlocked operations on RWTexture use OpUntypedImageTexelPointerEXT.

Requires -fspv-target-env=vulkan1.3.

Assisted-by: Claude.
@jzakharovnv
jzakharovnv force-pushed the pr2-raytracing-accel-struct branch 2 times, most recently from d899b05 to b12b9ea Compare June 4, 2026 22:59
@jzakharovnv

Copy link
Copy Markdown
Collaborator Author

@microsoft-github-policy-service agree company="NVIDIA"

@damyanp
damyanp requested a review from llvm-beanz July 14, 2026 17:48
@jzakharovnv
jzakharovnv force-pushed the pr2-raytracing-accel-struct branch from b12b9ea to 23eca97 Compare July 14, 2026 19:46
return true;
}

if (isRaytracingAccelerationStructure(decl->getType())) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since acceleration structures are distinct from image and buffers, do they still fit in max(sizeof(image), sizeof(buffer))? If not, the stride will be too small and heap indexing will land in the wrong spot.

Maybe we need to incorporate acceleration structures when computing the default stride if RT is used?

@@ -0,0 +1,42 @@
// RUN: %dxc -T lib_6_6 -fspv-use-descriptor-heap -fspv-target-env=vulkan1.3 -fvk-resource-heap-stride 64 -fvk-sampler-heap-stride 32 -fspv-extension=SPV_KHR_ray_tracing -fspv-extension=SPV_EXT_descriptor_heap -fspv-extension=SPV_KHR_untyped_pointers -spirv %s | FileCheck %s

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is using flags introduced in #8519. It will break if the PRs get merged in order. Perhaps move this test to #8519 and add only default stride tests here?

@github-project-automation github-project-automation Bot moved this from New to In progress in HLSL Roadmap Jul 17, 2026
@dnovillo dnovillo added the spirv Work related to SPIR-V label Jul 17, 2026
Extends the SPV_EXT_descriptor_heap native heap lowering to cover RaytracingAccelerationStructure resources loaded from ResourceDescriptorHeap.

Acceleration structure descriptors are accessed via OpUntypedAccessChainKHR into a runtime array of OpTypeAccelerationStructureKHR, consistent with the image and sampler paths added in the previous commit.
@jzakharovnv
jzakharovnv force-pushed the pr2-raytracing-accel-struct branch from 23eca97 to 7455a45 Compare July 17, 2026 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

spirv Work related to SPIR-V

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

2 participants