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 /tests/diagnostics | |
| 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 'tests/diagnostics')
| -rw-r--r-- | tests/diagnostics/raypayload-missing-access-qualifiers.slang | 37 | ||||
| -rw-r--r-- | tests/diagnostics/raypayload-missing-access-qualifiers.slang.expected | 8 |
2 files changed, 45 insertions, 0 deletions
diff --git a/tests/diagnostics/raypayload-missing-access-qualifiers.slang b/tests/diagnostics/raypayload-missing-access-qualifiers.slang new file mode 100644 index 000000000..d22a6300b --- /dev/null +++ b/tests/diagnostics/raypayload-missing-access-qualifiers.slang @@ -0,0 +1,37 @@ +// raypayload-missing-access-qualifiers.slang + +//DIAGNOSTIC_TEST:SIMPLE: + +// Test error for field in ray payload struct missing read/write access qualifiers + +struct [raypayload] RayPayload +{ + float4 color : read(caller, anyhit) : write(caller); + float4 colorMissingQualifiers; // Error expected here + +}; + +uniform RWTexture2D<float4> resultTexture; +uniform RaytracingAccelerationStructure sceneBVH; + +[shader("raygeneration")] +void rayGenShaderA() +{ + int2 threadIdx = DispatchRaysIndex().xy; + + float3 rayDir = float3(0, 0, 1); + float3 rayOrigin = 0; + rayOrigin.x = (threadIdx.x * 2) - 1; + rayOrigin.y = (threadIdx.y * 2) - 1; + + // Trace the ray. + RayDesc ray; + ray.Origin = rayOrigin; + ray.Direction = rayDir; + ray.TMin = 0.001; + ray.TMax = 10000.0; + RayPayload payload = { float4(0, 0, 0, 0) , float4(0, 0, 0, 0)}; + TraceRay(sceneBVH, RAY_FLAG_NONE, ~0, 0, 0, 0, ray, payload); + + resultTexture[threadIdx.xy] = payload.color; +} diff --git a/tests/diagnostics/raypayload-missing-access-qualifiers.slang.expected b/tests/diagnostics/raypayload-missing-access-qualifiers.slang.expected new file mode 100644 index 000000000..525e8529c --- /dev/null +++ b/tests/diagnostics/raypayload-missing-access-qualifiers.slang.expected @@ -0,0 +1,8 @@ +result code = -1 +standard error = { +tests/diagnostics/raypayload-missing-access-qualifiers.slang(10): error 40000: field 'colorMissingQualifiers' in ray payload struct must have either 'read' OR 'write' access qualifiers + float4 colorMissingQualifiers; // Error expected here + ^~~~~~~~~~~~~~~~~~~~~~ +} +standard output = { +} |
