docs: where the NVIDIA descriptor-heap faults stand on 615.78.08
The heap acceleration-structure read still needs the rewrite on 615.78.08; the READMEs say so and point at HeapASRead --no-workaround for checking a newer driver. Dynamic descriptor indexing in hit shaders is fixed there, which the README and the Sponza and SponzaBench notes now say, and the VulkanTriangle investigation no longer contradicts itself about llvmpipe, which advertises VK_EXT_descriptor_heap now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
f7cfd53562
commit
449d5da553
4 changed files with 36 additions and 13 deletions
20
README.md
20
README.md
|
|
@ -41,15 +41,23 @@ shaded through an intersection shader with an any-hit cut-out.
|
|||
> reads no descriptor), and `RTPass` supplies the address as push data.
|
||||
> Shaders and example code are unchanged, and it's a single fenced block
|
||||
> gated on `Device::workaroundDescriptorHeapAS`, removable once a fixed
|
||||
> driver ships. See
|
||||
> driver ships. **Still present on `615.78.08`**: with the rewrite off,
|
||||
> `traceRayEXT` still loses the device and an inline ray query renders
|
||||
> nothing. `tests/HeapASRead` covers the engine path; run
|
||||
> `HeapASRead --no-workaround` to check a newer driver (it tries both paths
|
||||
> with the rewrite off). Any app runs with the rewrite off while
|
||||
> `CRAFTER_GRAPHICS_NO_AS_WORKAROUND` is set, to any value. See
|
||||
> [examples/VulkanTriangle/README.md](examples/VulkanTriangle/README.md)
|
||||
> for the full investigation. WebGPU RT is unaffected.
|
||||
|
||||
> **Native RT limitation — dynamic `descriptor_heap` indexing in hit
|
||||
> shaders:** on the same NVIDIA driver, indexing a `descriptor_heap`
|
||||
> array with a **runtime (non-constant)** index inside a ray-tracing
|
||||
> **hit** shader also device-losts (`VK_ERROR_DEVICE_LOST`), for plain
|
||||
> SSBO **and** sampled-image descriptors. A **constant / spec-constant**
|
||||
> **Native RT limitation (fixed in NVIDIA `615.78.08`) — dynamic
|
||||
> `descriptor_heap` indexing in hit shaders:** on NVIDIA `610.43.02`, indexing
|
||||
> a `descriptor_heap` array with a **runtime (non-constant)** index inside a
|
||||
> ray-tracing **hit** shader also device-losts (`VK_ERROR_DEVICE_LOST`), for
|
||||
> plain SSBO **and** sampled-image descriptors. On `615.78.08` it works:
|
||||
> `tests/HeapDynamicIndexHit` picks a buffer and a texture by a runtime index
|
||||
> in a closest-hit, including different descriptors in neighbouring lanes of
|
||||
> a wave. The rest of this note applies to the older drivers. A **constant / spec-constant**
|
||||
> index is fine (that's why [Sponza](examples/Sponza/README.md)'s
|
||||
> closest-hit reads `albedo[albedoSlot]` through a spec constant), and
|
||||
> the identical dynamic pattern works in fragment shaders (the UI
|
||||
|
|
|
|||
Loading…
Reference in a new issue