summaryrefslogtreecommitdiff
path: root/tests/diagnostics
diff options
context:
space:
mode:
Diffstat (limited to 'tests/diagnostics')
-rw-r--r--tests/diagnostics/raypayload-missing-access-qualifiers.slang37
-rw-r--r--tests/diagnostics/raypayload-missing-access-qualifiers.slang.expected8
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 = {
+}