diff options
Diffstat (limited to 'tests/bugs')
| -rw-r--r-- | tests/bugs/gh-103.slang | 25 | ||||
| -rw-r--r-- | tests/bugs/gh-172.slang | 19 | ||||
| -rw-r--r-- | tests/bugs/gh-333.slang | 17 | ||||
| -rw-r--r-- | tests/bugs/split-nested-types.hlsl | 15 | ||||
| -rw-r--r-- | tests/bugs/vec-init-list.hlsl | 22 | ||||
| -rw-r--r-- | tests/bugs/vk-structured-buffer-binding.hlsl | 3 | ||||
| -rw-r--r-- | tests/bugs/vk-structured-buffer-binding.hlsl.expected | 31 | ||||
| -rw-r--r-- | tests/bugs/vk-structured-buffer-binding.hlsl.glsl | 26 |
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; +} |
