diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/bindings/multiple-parameter-blocks.slang | 48 | ||||
| -rw-r--r-- | tests/bindings/parameter-blocks.slang | 39 | ||||
| -rw-r--r-- | tests/bugs/gh-171.slang | 6 | ||||
| -rw-r--r-- | tests/bugs/gh-172.slang | 10 | ||||
| -rw-r--r-- | tests/rewriter/resources-in-structs.glsl | 8 | ||||
| -rw-r--r-- | tests/rewriter/type-splitting.hlsl | 6 |
6 files changed, 102 insertions, 15 deletions
diff --git a/tests/bindings/multiple-parameter-blocks.slang b/tests/bindings/multiple-parameter-blocks.slang new file mode 100644 index 000000000..0fdf7d429 --- /dev/null +++ b/tests/bindings/multiple-parameter-blocks.slang @@ -0,0 +1,48 @@ +//TEST:COMPARE_HLSL:-no-mangle -use-ir -target dxbc-assembly -profile ps_5_1 -entry main + +// Confirm that Slang `ParameterBlock<T>` generates +// parameter bindings like we expect. + + +float4 use(float4 val) { return val; }; +float4 use(Texture2D t, SamplerState s) { return t.Sample(s, 0.0); } + +#ifdef __SLANG__ + +struct S +{ + Texture2D t; + Texture2D ta[4]; + SamplerState s; +}; + +ParameterBlock<S> p; +ParameterBlock<S> p1; + +float4 main(float v : V) : SV_Target +{ + return use(p.t, p.s) + + use(p.ta[int(v)], p.s) + + use(p1.t, p1.s) + + use(p1.ta[int(v)], p1.s); +} + +#else + +Texture2D _S1 : register(t0, space0); +Texture2D _S2[4] : register(t1, space0); +SamplerState _S3 : register(s0, space0); + +Texture2D _S12 : register(t0, space1); +Texture2D _S13[4] : register(t1, space1); +SamplerState _S14 : register(s0, space1); + +float4 main(float v : V) : SV_Target +{ + return use(_S1, _S3) + + use(_S2[int(v)], _S3) + + use(_S12, _S14) + + use(_S13[int(v)], _S14); +} + +#endif diff --git a/tests/bindings/parameter-blocks.slang b/tests/bindings/parameter-blocks.slang new file mode 100644 index 000000000..cd916f144 --- /dev/null +++ b/tests/bindings/parameter-blocks.slang @@ -0,0 +1,39 @@ +//TEST:COMPARE_HLSL:-no-mangle -use-ir -target dxbc-assembly -profile ps_5_1 -entry main + +// Confirm that Slang `ParameterBlock<T>` generates +// parameter bindings like we expect. + + +float4 use(float4 val) { return val; }; +float4 use(Texture2D t, SamplerState s) { return t.Sample(s, 0.0); } + +#ifdef __SLANG__ + +struct S +{ + Texture2D t; + Texture2D ta[4]; + SamplerState s; +}; + +ParameterBlock<S> p; + +float4 main(float v : V) : SV_Target +{ + return use(p.ta[int(v)], p.s) + + use(p.t, p.s); +} + +#else + +Texture2D _S1 : register(t0, space0); +Texture2D _S2[4] : register(t1, space0); +SamplerState _S3 : register(s0, space0); + +float4 main(float v : V) : SV_Target +{ + return use(_S2[int(v)], _S3) + + use(_S1, _S3); +} + +#endif diff --git a/tests/bugs/gh-171.slang b/tests/bugs/gh-171.slang index b37f77ce2..1df82501e 100644 --- a/tests/bugs/gh-171.slang +++ b/tests/bugs/gh-171.slang @@ -17,12 +17,12 @@ float4 main(float2 uv: UV) : SV_Target #else -Texture2D SLANG_parameterBlock_C_t : register(t0); -SamplerState SLANG_parameterBlock_C_s : register(s0); +Texture2D SLANG_parameterGroup_C_t : register(t0); +SamplerState SLANG_parameterGroup_C_s : register(s0); float4 main(float2 uv: UV) : SV_Target { - return SLANG_parameterBlock_C_t.Sample(SLANG_parameterBlock_C_s, uv); + return SLANG_parameterGroup_C_t.Sample(SLANG_parameterGroup_C_s, uv); } #endif diff --git a/tests/bugs/gh-172.slang b/tests/bugs/gh-172.slang index f898b5f4b..f959c7ac6 100644 --- a/tests/bugs/gh-172.slang +++ b/tests/bugs/gh-172.slang @@ -26,14 +26,14 @@ cbuffer C : register(b0) float2 uv; }; -Texture2D SLANG_parameterBlock_C_t0 : register(t0); -Texture2D SLANG_parameterBlock_C_t1 : register(t1); -SamplerState SLANG_parameterBlock_C_s : register(s0); +Texture2D SLANG_parameterGroup_C_t0 : register(t0); +Texture2D SLANG_parameterGroup_C_t1 : register(t1); +SamplerState SLANG_parameterGroup_C_s : register(s0); float4 main() : SV_Target { - return SLANG_parameterBlock_C_t0.Sample(SLANG_parameterBlock_C_s, uv) - + SLANG_parameterBlock_C_t1.Sample(SLANG_parameterBlock_C_s, uv); + return SLANG_parameterGroup_C_t0.Sample(SLANG_parameterGroup_C_s, uv) + + SLANG_parameterGroup_C_t1.Sample(SLANG_parameterGroup_C_s, uv); } #endif diff --git a/tests/rewriter/resources-in-structs.glsl b/tests/rewriter/resources-in-structs.glsl index 206e4a8d8..8df64f244 100644 --- a/tests/rewriter/resources-in-structs.glsl +++ b/tests/rewriter/resources-in-structs.glsl @@ -42,10 +42,10 @@ uniform U }; layout(binding = 1) -uniform texture2D SLANG_parameterBlock_U_m_t; +uniform texture2D SLANG_parameterGroup_U_m_t; layout(binding = 2) -uniform sampler SLANG_parameterBlock_U_m_s; +uniform sampler SLANG_parameterGroup_U_m_s; layout(location = 0) in vec2 uv; @@ -58,8 +58,8 @@ void main() Material SLANG_tmp_0 = m; color = evaluateMaterial( SLANG_tmp_0, - SLANG_parameterBlock_U_m_t, - SLANG_parameterBlock_U_m_s, uv); + SLANG_parameterGroup_U_m_t, + SLANG_parameterGroup_U_m_s, uv); } #endif diff --git a/tests/rewriter/type-splitting.hlsl b/tests/rewriter/type-splitting.hlsl index c8d69f5fd..b3cad1ce0 100644 --- a/tests/rewriter/type-splitting.hlsl +++ b/tests/rewriter/type-splitting.hlsl @@ -47,12 +47,12 @@ cbuffer C Foo foo; } -Texture2D SLANG_parameterBlock_C_foo_t; -SamplerState SLANG_parameterBlock_C_foo_s; +Texture2D SLANG_parameterGroup_C_foo_t; +SamplerState SLANG_parameterGroup_C_foo_s; float4 main() : SV_Target { - return SLANG_parameterBlock_C_foo_t.Sample(SLANG_parameterBlock_C_foo_s, foo.u); + return SLANG_parameterGroup_C_foo_t.Sample(SLANG_parameterGroup_C_foo_s, foo.u); } #endif |
