From 7ee6101291683444a156885c8897c3fb339476aa Mon Sep 17 00:00:00 2001 From: Conor McCarthy Date: Tue, 4 Feb 2025 13:15:01 +1000 Subject: [PATCH] tests/hlsl: Add GetDimensions() 16-bit tests. --- tests/hlsl/getdimensions.shader_test | 113 +++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/tests/hlsl/getdimensions.shader_test b/tests/hlsl/getdimensions.shader_test index f4861934..a8754032 100644 --- a/tests/hlsl/getdimensions.shader_test +++ b/tests/hlsl/getdimensions.shader_test @@ -55,3 +55,116 @@ float4 main() : sv_target [test] todo(glsl | msl) draw quad probe (0, 0) rgba (2.0, 2.0, 1.0, 2.0) + +[require] +shader model >= 6.2 +native-16-bit + +[uav 0] +format r32-uint +size (buffer, 4) +0 0 0 0 + +[compute shader] +RWBuffer u : register(u0); + + [numthreads(1, 1, 1)] +void main() +{ + uint width; + u.GetDimensions(width); + u[0] = (uint16_t)width; +} + +[test] +dispatch 1 1 1 +probe uav 0 (0) rui(4) + +[uav 0] +stride 6 +size (buffer, 2) + +0 0 0 + +[compute shader] +struct foo +{ + uint16_t count; + half h; + uint16_t stride; +}; + +RWStructuredBuffer u : register(u0); + + [numthreads(1, 1, 1)] +void main() +{ + uint count, stride; + u.GetDimensions(count, stride); + struct foo f0 = {(uint16_t)count, 0.5, (uint16_t)stride}; + u[0] = f0; +} + +[test] +dispatch 1 1 1 +probe uav 0 (0) rui(0x38000002) +probe uav 0 (1) rui(6) + +[uav 0] +stride 8 +size (buffer, 2) + +0 0 0 0 + +[compute shader] +struct foo +{ + uint16_t count; + half h; + uint32_t stride; +}; + +RWStructuredBuffer u : register(u0); + + [numthreads(1, 1, 1)] +void main() +{ + uint count, stride; + u.GetDimensions(count, stride); + struct foo f0 = {(uint16_t)count, 0.5, stride}; + u[0] = f0; +} + +[test] +dispatch 1 1 1 +probe uav 0 (0) rui(0x38000002) +probe uav 0 (1) rui(8) + +[uav 0] +stride 8 +size (buffer, 2) + +0 0 0 0 + +[compute shader] +struct foo +{ + uint16_t count; + uint32_t stride; +}; + +RWStructuredBuffer u : register(u0); + + [numthreads(1, 1, 1)] +void main() +{ + uint count, stride; + u.GetDimensions(count, stride); + struct foo f0 = {(uint16_t)count, stride}; + u[0] = f0; +} + +[test] +dispatch 1 1 1 +probe uav 0 (0) rui(2) +probe uav 0 (1) rui(8)