summaryrefslogtreecommitdiffstats
path: root/tests/bugs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bugs')
-rw-r--r--tests/bugs/gh-4305.slang40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/bugs/gh-4305.slang b/tests/bugs/gh-4305.slang
new file mode 100644
index 000000000..dd09bda1e
--- /dev/null
+++ b/tests/bugs/gh-4305.slang
@@ -0,0 +1,40 @@
+//TEST:SIMPLE(filecheck=CHECK): -stage compute -entry computeMain -target glsl -allow-glsl -DQUAD -DMODIFIER
+//TEST:SIMPLE(filecheck=CHECK): -stage compute -entry computeMain -target glsl -allow-glsl -DMODIFIER
+//TEST:SIMPLE(filecheck=CHECK): -stage compute -entry computeMain -target glsl -allow-glsl -DQUAD
+//TEST:SIMPLE(filecheck=CHECK): -stage compute -entry computeMain -target glsl -allow-glsl
+//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -compute -entry computeMain -output-using-type -emit-spirv-via-glsl -allow-glsl -xslang -DQUAD
+//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -compute -entry computeMain -output-using-type -emit-spirv-via-glsl -allow-glsl
+
+//TEST_INPUT: ubuffer(data=[0], stride=4):out,name outputBuffer
+RWStructuredBuffer<float> outputBuffer;
+//TEST_INPUT: Texture2D(size=4, content = one):name t2D
+Texture2D<float> t2D;
+//TEST_INPUT: Sampler:name samplerState
+SamplerState samplerState;
+
+// "local_size_x" must appear before "derivative_group_"
+//CHECK:local_size_x
+//CHECK:derivative_group_{{.*}}NV
+
+#ifndef MODIFIER
+#ifdef QUAD
+layout(derivative_group_quadsNV) in;
+#else
+layout(derivative_group_linearNV) in;
+#endif // #ifdef QUAD
+layout(local_size_x = 2, local_size_y = 2, local_size_z = 1) in;
+
+#else
+
+#ifdef QUAD
+[DerivativeGroupQuad]
+#else
+[DerivativeGroupLinear]
+#endif // #ifdef QUAD
+[numthreads(2, 2, 1)]
+#endif //#ifndef MODIFIER
+void computeMain()
+{
+ //BUF:1
+ outputBuffer[0] = t2D.Sample(samplerState, float2(0.5, 0.5));
+} \ No newline at end of file