summaryrefslogtreecommitdiffstats
path: root/tests/diagnostics/structuredbuffer-resource-struct.slang
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2025-09-04 04:05:26 +0800
committerGitHub <noreply@github.com>2025-09-03 20:05:26 +0000
commita766d27447aa0fcf69334c0467d9b1124892e180 (patch)
tree67ca5615e4a8c94d7454ee43375eeffc8c8a7d4c /tests/diagnostics/structuredbuffer-resource-struct.slang
parentbf607e2f3fa183e9a2b18c7a98438a05247d6ed3 (diff)
Diagnose on structured buffers containing resources (#8222)
closes https://github.com/shader-slang/slang/issues/3313
Diffstat (limited to 'tests/diagnostics/structuredbuffer-resource-struct.slang')
-rw-r--r--tests/diagnostics/structuredbuffer-resource-struct.slang46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/diagnostics/structuredbuffer-resource-struct.slang b/tests/diagnostics/structuredbuffer-resource-struct.slang
new file mode 100644
index 000000000..8654b0ad6
--- /dev/null
+++ b/tests/diagnostics/structuredbuffer-resource-struct.slang
@@ -0,0 +1,46 @@
+//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): -target spirv
+
+struct WithTexture
+{
+ float4 color;
+ Texture2D tex;
+ float scale;
+}
+
+struct WithSampler
+{
+ SamplerState sampler;
+ float2 uv;
+}
+
+struct Nested
+{
+ WithTexture data;
+ float value;
+}
+
+//CHECK-DAG: ([[# @LINE+1]]): error 38204
+StructuredBuffer<WithTexture> bufferWithTexture;
+
+//CHECK-DAG: ([[# @LINE+1]]): error 38204
+StructuredBuffer<WithSampler> bufferWithSampler;
+
+//CHECK-DAG: ([[# @LINE+1]]): error 38204
+StructuredBuffer<Nested> bufferNested;
+
+RWStructuredBuffer<float4> output;
+
+[numthreads(4, 1, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ uint i = dispatchThreadID.x;
+
+ // Use all struct members from all buffers
+ float4 result = bufferWithTexture[i].color * bufferWithTexture[i].scale
+ + bufferWithTexture[i].tex.Sample(bufferWithSampler[i].sampler, bufferWithSampler[i].uv)
+ + bufferNested[i].data.tex.Sample(bufferWithSampler[0].sampler, float2(0, 0)) * bufferNested[i].data.scale
+ + float4(bufferNested[i].value, 0, 0, 0);
+
+ output[i] = result;
+}
+