Signed-off-by: Francisco Casas fcasas@codeweavers.com --- Makefile.am | 2 + tests/hlsl-initializer-struct.shader_test | 78 +++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 tests/hlsl-initializer-struct.shader_test
diff --git a/Makefile.am b/Makefile.am index efe99124..4a079c11 100644 --- a/Makefile.am +++ b/Makefile.am @@ -70,6 +70,7 @@ vkd3d_shader_tests = \ tests/hlsl-function-overload.shader_test \ tests/hlsl-initializer-local-array.shader_test \ tests/hlsl-initializer-static-array.shader_test \ + tests/hlsl-initializer-struct.shader_test \ tests/hlsl-invalid.shader_test \ tests/hlsl-majority-pragma.shader_test \ tests/hlsl-majority-typedef.shader_test \ @@ -293,6 +294,7 @@ XFAIL_TESTS = \ tests/hlsl-array-dimension.shader_test \ tests/hlsl-initializer-local-array.shader_test \ tests/hlsl-initializer-static-array.shader_test \ + tests/hlsl-initializer-struct.shader_test \ tests/hlsl-bool-cast.shader_test \ tests/hlsl-duplicate-modifiers.shader_test \ tests/hlsl-for.shader_test \ diff --git a/tests/hlsl-initializer-struct.shader_test b/tests/hlsl-initializer-struct.shader_test new file mode 100644 index 00000000..d5181f0e --- /dev/null +++ b/tests/hlsl-initializer-struct.shader_test @@ -0,0 +1,78 @@ +[pixel shader] +struct stu { + int3 aaa; + float3 bbb; + double2 ccc; + float4 ddd; + int eee; +}; + +float4 main() : sv_target +{ + struct stu val = { + 11, 12, 13, + 21, 22, 23, + 31, 32, + 41, 42, 43, 44, + 51 + }; + return val.ddd; +} + +[test] +draw quad +probe all rgba (41, 42, 43, 44) + + +[pixel shader] +struct stu { + int3 aaa; + float3 bbb[2]; + double2 ccc; + float4 ddd[3][2]; + int eee; +}; + +float4 main() : sv_target +{ + struct stu val = { + 11, 12, 13, + 211, 212, 213, 221, 222, 223, + 31, 32, + 4111, 4112, 4113, 4114, 4121, 4122, 4123, 4124, + 4211, 4212, 4213, 4214, 4221, 4222, 4223, 4224, + 4311, 4312, 4313, 4314, 4321, 4322, 4323, 4324, + 51 + }; + return val.ddd[2][0]; +} + +[test] +draw quad +probe all rgba (4311, 4312, 4313, 4314) + + +[pixel shader] +struct stu { + int3 aaa; + struct { + float4 foo; + int2 bar; + } bbb[3]; +}; + +float4 main() : sv_target +{ + struct stu val = { + 1, 2, 3, + 11, 12, 13, 14, 15, 16, + 21, 22, 23, 24, 25, 26, + 31, 32, 33, 34, 35, 36 + }; + return val.bbb[1].foo; +} + +[test] +draw quad +probe all rgba (21, 22, 23, 24) +