From e6b7b38a29184ef1d36aad6b9fef3de4c3c86df2 Mon Sep 17 00:00:00 2001 From: Francisco Casas Date: Thu, 23 Nov 2023 12:59:31 -0300 Subject: [PATCH] tests: Test current failure when propagating swizzles. The included test fails because copy_propagation_transform_swizzle() is using the value recorded for the variable when the swizzle is being read, and not the swizzle's load. --- Makefile.am | 1 + tests/hlsl/hard-copy-prop.shader_test | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 tests/hlsl/hard-copy-prop.shader_test diff --git a/Makefile.am b/Makefile.am index c92d7b83..2616a857 100644 --- a/Makefile.am +++ b/Makefile.am @@ -103,6 +103,7 @@ vkd3d_shader_tests = \ tests/hlsl/gather.shader_test \ tests/hlsl/getdimensions.shader_test \ tests/hlsl/half.shader_test \ + tests/hlsl/hard-copy-prop.shader_test \ tests/hlsl/initializer-flatten.shader_test \ tests/hlsl/initializer-implicit-array.shader_test \ tests/hlsl/initializer-invalid-arg-count.shader_test \ diff --git a/tests/hlsl/hard-copy-prop.shader_test b/tests/hlsl/hard-copy-prop.shader_test new file mode 100644 index 00000000..52746b4f --- /dev/null +++ b/tests/hlsl/hard-copy-prop.shader_test @@ -0,0 +1,24 @@ +[pixel shader] +float cond; + +float4 main() : sv_target +{ + float4 a = {1, 2, 3, 4}; + float4 b; + + // invalidate a + if (cond) + a = float4(-1, -2, -3, -4); + + b = a; + a.y = 357; + return b.y; +} + +[test] +uniform 0 float 0.0 +draw quad +todo(sm<6) probe all rgba (2.0, 2.0, 2.0, 2.0) +uniform 0 float 1.0 +draw quad +todo(sm<6) probe all rgba (-2.0, -2.0, -2.0, -2.0)