summaryrefslogtreecommitdiff
path: root/tests/bugs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bugs')
-rw-r--r--tests/bugs/gh-103.slang25
-rw-r--r--tests/bugs/gh-172.slang19
-rw-r--r--tests/bugs/gh-333.slang17
-rw-r--r--tests/bugs/split-nested-types.hlsl15
-rw-r--r--tests/bugs/vec-init-list.hlsl22
-rw-r--r--tests/bugs/vk-structured-buffer-binding.hlsl3
-rw-r--r--tests/bugs/vk-structured-buffer-binding.hlsl.expected31
-rw-r--r--tests/bugs/vk-structured-buffer-binding.hlsl.glsl26
8 files changed, 100 insertions, 58 deletions
diff --git a/tests/bugs/gh-103.slang b/tests/bugs/gh-103.slang
index 65e71837b..4bad20b20 100644
--- a/tests/bugs/gh-103.slang
+++ b/tests/bugs/gh-103.slang
@@ -2,7 +2,15 @@
// Ensure that matrix-times-scalar works
-#ifndef __SLANG__
+#ifdef __SLANG__
+#define BEGIN_CBUFFER(NAME) cbuffer NAME
+#define END_CBUFFER(NAME, REG) /**/
+#define CBUFFER_REF(NAME, FIELD) FIELD
+#else
+#define BEGIN_CBUFFER(NAME) struct SLANG_ParameterGroup_##NAME
+#define END_CBUFFER(NAME, REG) ; cbuffer NAME : REG { SLANG_ParameterGroup_##NAME NAME; }
+#define CBUFFER_REF(NAME, FIELD) NAME.FIELD
+
#define C C_0
#define a a_0
#define b b_0
@@ -10,16 +18,19 @@
float4x4 doIt(float4x4 a, float b)
{
- return a * b;
+ return a * b;
}
-cbuffer C
+BEGIN_CBUFFER(C)
{
- float4x4 a;
- float b;
-};
+ float4x4 a;
+ float b;
+}
+END_CBUFFER(C,register(b0))
float4 main() : SV_TARGET
{
- return doIt(a, b)[0];
+ return doIt(
+ CBUFFER_REF(C,a),
+ CBUFFER_REF(C,b))[0];
}
diff --git a/tests/bugs/gh-172.slang b/tests/bugs/gh-172.slang
index dd5f4d47a..6d9e69503 100644
--- a/tests/bugs/gh-172.slang
+++ b/tests/bugs/gh-172.slang
@@ -8,22 +8,27 @@
cbuffer C
{
- Texture2D t0, t1;
- SamplerState s;
- float2 uv;
+ Texture2D t0, t1;
+ SamplerState s;
+ float2 uv;
};
float4 main() : SV_Target
{
- return t0.Sample(s, uv)
+ return t0.Sample(s, uv)
+ t1.Sample(s, uv);
}
#else
+struct SLANG_ParameterGroup_C_0
+{
+ float2 uv_0;
+};
+
cbuffer C_0 : register(b0)
{
- float2 uv_0;
+ SLANG_ParameterGroup_C_0 C_0;
};
Texture2D C_t0_0 : register(t0);
@@ -32,8 +37,8 @@ SamplerState C_s_0 : register(s0);
float4 main() : SV_TARGET
{
- return C_t0_0.Sample(C_s_0, uv_0)
- + C_t1_0.Sample(C_s_0, uv_0);
+ return C_t0_0.Sample(C_s_0, C_0.uv_0)
+ + C_t1_0.Sample(C_s_0, C_0.uv_0);
}
#endif
diff --git a/tests/bugs/gh-333.slang b/tests/bugs/gh-333.slang
index 2a23f7751..a1e3ea20d 100644
--- a/tests/bugs/gh-333.slang
+++ b/tests/bugs/gh-333.slang
@@ -2,7 +2,15 @@
// Ensure declaration order in output is correct
-#ifndef __SLANG__
+#ifdef __SLANG__
+#define BEGIN_CBUFFER(NAME) cbuffer NAME
+#define END_CBUFFER(NAME, REG) /**/
+#define CBUFFER_REF(NAME, FIELD) FIELD
+#else
+#define BEGIN_CBUFFER(NAME) struct SLANG_ParameterGroup_##NAME
+#define END_CBUFFER(NAME, REG) ; cbuffer NAME : REG { SLANG_ParameterGroup_##NAME NAME; }
+#define CBUFFER_REF(NAME, FIELD) NAME.FIELD
+
#define A A_0
#define x x_0
#define B B_0
@@ -23,13 +31,14 @@ struct B
Texture2D t;
};
-cbuffer C
+BEGIN_CBUFFER(C)
{
A a;
B b;
-};
+}
+END_CBUFFER(C,register(b0))
float4 main() : SV_TARGET
{
- return a.x;
+ return CBUFFER_REF(C,a).x;
}
diff --git a/tests/bugs/split-nested-types.hlsl b/tests/bugs/split-nested-types.hlsl
index 577f64a75..2bfea49c2 100644
--- a/tests/bugs/split-nested-types.hlsl
+++ b/tests/bugs/split-nested-types.hlsl
@@ -1,9 +1,19 @@
//TEST:COMPARE_HLSL:-no-mangle -profile ps_5_0
#ifdef __SLANG__
+
+#define BEGIN_CBUFFER(NAME) cbuffer NAME
+#define END_CBUFFER(NAME, REG) /**/
+#define CBUFFER_REF(NAME, FIELD) FIELD
+
import split_nested_types;
+
#else
+#define BEGIN_CBUFFER(NAME) struct SLANG_ParameterGroup_##NAME
+#define END_CBUFFER(NAME, REG) ; cbuffer NAME : REG { SLANG_ParameterGroup_##NAME NAME; }
+#define CBUFFER_REF(NAME, FIELD) NAME.FIELD
+
#define A A_0
#define x x_0
@@ -31,12 +41,13 @@ struct M
#endif
-cbuffer C
+BEGIN_CBUFFER(C)
{
M m;
}
+END_CBUFFER(C,register(b0))
float4 main() : SV_TARGET
{
- return m.b.y;
+ return CBUFFER_REF(C,m).b.y;
}
diff --git a/tests/bugs/vec-init-list.hlsl b/tests/bugs/vec-init-list.hlsl
index 2f82a96b0..fe8cba09f 100644
--- a/tests/bugs/vec-init-list.hlsl
+++ b/tests/bugs/vec-init-list.hlsl
@@ -2,7 +2,14 @@
// Check handling of initializer list for vector
-#ifndef __SLANG__
+#ifdef __SLANG__
+#define BEGIN_CBUFFER(NAME) cbuffer NAME
+#define END_CBUFFER(NAME, REG) /**/
+#define CBUFFER_REF(NAME, FIELD) FIELD
+#else
+#define BEGIN_CBUFFER(NAME) struct SLANG_ParameterGroup_##NAME
+#define END_CBUFFER(NAME, REG) ; cbuffer NAME : REG { SLANG_ParameterGroup_##NAME NAME; }
+#define CBUFFER_REF(NAME, FIELD) NAME.FIELD
#define C C_0
#define a a_0
@@ -10,10 +17,11 @@
#endif
-cbuffer C : register(b0)
+BEGIN_CBUFFER(C)
{
- float4 a;
-};
+ float4 a;
+}
+END_CBUFFER(C, register(b0))
float w0(float x) { return x; }
float w1(float x) { return x; }
@@ -22,6 +30,10 @@ float w3(float x) { return x; }
float4 main() : SV_Position
{
- float4 wx = { w0(a.x), w1(a.x), w2(a.x), w3(a.x), };
+ float4 wx = {
+ w0(CBUFFER_REF(C,a).x),
+ w1(CBUFFER_REF(C,a).x),
+ w2(CBUFFER_REF(C,a).x),
+ w3(CBUFFER_REF(C,a).x), };
return wx;
}
diff --git a/tests/bugs/vk-structured-buffer-binding.hlsl b/tests/bugs/vk-structured-buffer-binding.hlsl
index cdfeb19ab..3ef1bcc8c 100644
--- a/tests/bugs/vk-structured-buffer-binding.hlsl
+++ b/tests/bugs/vk-structured-buffer-binding.hlsl
@@ -1,5 +1,4 @@
-//TEST:SIMPLE: -profile ps_4_0 -entry main -target glsl
-///////TEST:REFLECTION:-profile ps_4_0 -target spirv
+//TEST:CROSS_COMPILE:-profile ps_4_0 -entry main -target spirv-assembly
[[vk::binding(3, 4)]]
RWStructuredBuffer<uint> gDoneGroups : register(u3);
diff --git a/tests/bugs/vk-structured-buffer-binding.hlsl.expected b/tests/bugs/vk-structured-buffer-binding.hlsl.expected
deleted file mode 100644
index fc1cb93ea..000000000
--- a/tests/bugs/vk-structured-buffer-binding.hlsl.expected
+++ /dev/null
@@ -1,31 +0,0 @@
-result code = 0
-standard error = {
-}
-standard output = {
-#version 450
-layout(row_major) uniform;
-layout(row_major) buffer;
-
-#line 5 0
-layout(std430, binding = 3, set = 4) buffer _S1 {
- uint gDoneGroups_0[];
-};
-
-#line 7
-layout(location = 0)
-out vec4 _S2;
-
-
-#line 7
-layout(location = 0)
-in vec3 _S3;
-
-
-#line 7
-void main()
-{
- _S2 = vec4(gDoneGroups_0[uint(int(_S3.z))]);
- return;
-}
-
-}
diff --git a/tests/bugs/vk-structured-buffer-binding.hlsl.glsl b/tests/bugs/vk-structured-buffer-binding.hlsl.glsl
new file mode 100644
index 000000000..7298ea594
--- /dev/null
+++ b/tests/bugs/vk-structured-buffer-binding.hlsl.glsl
@@ -0,0 +1,26 @@
+// vk-structured-buffer-binding.hlsl.glsl
+//TEST_IGNORE_FILE:
+
+#version 450
+
+#define gDoneGroups gDoneGroups_0
+#define uv _S3
+#define SV_Target _S2
+
+layout(std430, binding = 3, set = 4)
+buffer _S1
+{
+ uint _data[];
+} gDoneGroups;
+
+layout(location = 0)
+out vec4 SV_Target;
+
+layout(location = 0)
+in vec3 uv;
+
+void main()
+{
+ SV_Target = vec4(gDoneGroups._data[uint(int(uv.z))]);
+ return;
+}