From: Francisco Casas fcasas@codeweavers.com
--- Makefile.am | 1 + tests/hlsl/default-values.shader_test | 82 +++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 tests/hlsl/default-values.shader_test
diff --git a/Makefile.am b/Makefile.am index f823cbc85..15cbfd7f6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -87,6 +87,7 @@ vkd3d_shader_tests = \ tests/hlsl/cross.shader_test \ tests/hlsl/d3dcolor-to-ubyte4.shader_test \ tests/hlsl/ddxddy.shader_test \ + tests/hlsl/default-values.shader_test \ tests/hlsl/determinant.shader_test \ tests/hlsl/discard.shader_test \ tests/hlsl/distance.shader_test \ diff --git a/tests/hlsl/default-values.shader_test b/tests/hlsl/default-values.shader_test new file mode 100644 index 000000000..af724689f --- /dev/null +++ b/tests/hlsl/default-values.shader_test @@ -0,0 +1,82 @@ +[pixel shader todo] +float2 a = {1, 2}; +float4x2 b = {1, 2, 3, 4, 5, 6, 7, 8}; + +float4 main() : sv_target +{ + return float4(a, b[2]); +} + + +[pixel shader fail(sm<6) todo] +float a = 7; +float4 b = a; // initial value must be a literal expression. + +float4 main() : sv_target { return 0; } + + +[pixel shader fail(sm<6) todo] +float a = 7; +float4 b = {1, 2, a, 4}; // initial value must be a literal expression. + +float4 main() : sv_target { return 0; } + + +[pixel shader fail] +Texture2D tex; +struct +{ + Texture2D t; + float a; +} apple = {tex, 4}; // initial value must be a literal expression. + +float4 main() : sv_target +{ + return 0; +} + + +[pixel shader todo] +static const float a = 7; +float4 b = {1, 2, a, 4}; // static constant values are allowed on the initializer. + +float4 main() : sv_target { return 0; } + + +[pixel shader todo] +float2 a = {1, 2}; +float4 b = {3, 5, float2(4, 4)}; // numeric type initializers are allowed. + +float4 main() : sv_target +{ + return 2 * b; +} + + +[pixel shader todo] +struct apple +{ + float3 a[2]; + int2x2 b; +} ap = {1, 2, 3, 4, 5, 6, 7.5, 8, 9, 10}; + +float4 main() : sv_target +{ + return float4(ap.b); +} + + +[require] +shader model >= 5.0 + + +% Default values for doubles don't seem to be saved properly. +[pixel shader todo] +double2 m = {1, 2}; +// double2 m; // Offset: 0 Size: 16 +// = 0x00000000 0x00000000 0x40000000 0x00000000 + +float4 main() : sv_target +{ + return m.y; +}