diff options
| author | Harsh Aggarwal (NVIDIA) <haaggarwal@nvidia.com> | 2025-04-07 13:26:11 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-07 07:56:11 +0000 |
| commit | ce87ab925d06a784eec194081e00a1b4c9b94d0c (patch) | |
| tree | 086e60c0205e00e0f0e1c31761434f5e9bf5fbcb /source/compiler-core | |
| parent | 1b82501dd0c74347cda4a2c7fe5a84fd610bb485 (diff) | |
Support for Payload Access Qualifiers (#3448) (#6595)
* Add support for Ray Payload Access Qualifiers (PAQs) (#3448)
- Added [raypayload] attribute for struct declarations
- Implemented field validation requiring read/write access qualifiers
- Added diagnostic error for missing qualifiers
- Enabled PAQs in DXC compiler and HLSL emission
- Added new test demonstrating PAQ syntax
- Implemented proper handling of ray payload attributes in IR generation
* format code
* Cleanup: Remove unused vars
* Add check to enablePAQ only for profile >= lib_6_7
* Review Fix - Add PAQ support for DX Raytracing
add enablePAQ flag to DownstreamCompileOpitons, improve PAQ handling
update raypayload-attribute-paq.slang to ensure hlsl and dxil is
validated
* Add diagnostic test for missing paq for lib_6_7
Compile using `-disable-payload-qualifiers` aka lib_6_6 profile
raypayload-attribute-no-struct.slang and
raypayload-attribute.slang
---------
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
Diffstat (limited to 'source/compiler-core')
| -rw-r--r-- | source/compiler-core/slang-downstream-compiler.h | 3 | ||||
| -rw-r--r-- | source/compiler-core/slang-dxc-compiler.cpp | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/source/compiler-core/slang-downstream-compiler.h b/source/compiler-core/slang-downstream-compiler.h index 5365b9839..c23a6eff0 100644 --- a/source/compiler-core/slang-downstream-compiler.h +++ b/source/compiler-core/slang-downstream-compiler.h @@ -260,6 +260,9 @@ struct DownstreamCompileOptions /// Profile name to use, only required for compiles that need to compile against a a specific /// profiles. Profile names are tied to compilers and targets. TerminatedCharSlice profileName; + // According to DirectX Raytracing Specification, PAQs are supported in Shader Model 6.7 and + // above + bool enablePAQ = false; /// The stage being compiled for SlangStage stage = SLANG_STAGE_NONE; diff --git a/source/compiler-core/slang-dxc-compiler.cpp b/source/compiler-core/slang-dxc-compiler.cpp index 065ee4145..0d4bc0a59 100644 --- a/source/compiler-core/slang-dxc-compiler.cpp +++ b/source/compiler-core/slang-dxc-compiler.cpp @@ -479,8 +479,7 @@ SlangResult DXCDownstreamCompiler::compile(const CompileOptions& inOptions, IArt args.add(compilerSpecific[i]); } - // This can be re-enabled when we add PAQs: https://github.com/shader-slang/slang/issues/3448 - const bool enablePAQs = false; + bool enablePAQs = options.enablePAQ; if (!enablePAQs) args.add(L"-disable-payload-qualifiers"); else |
