[PATCH vkd3d v2] vkd3d-shader/hlsl: Remove trivial swizzles after each copy prop pass.

Matteo Bruni mbruni at codeweavers.com
Wed Mar 2 06:21:21 CST 2022


Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
v2: Also update progress flag.

 Makefile.am                      | 1 -
 libs/vkd3d-shader/hlsl_codegen.c | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index e4f92bb5..f3db6d06 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -315,7 +315,6 @@ XFAIL_TESTS = \
 	tests/hlsl-initializer-numeric.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 \
 	tests/hlsl-function.shader_test \
diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c
index e416647f..76b8399f 100644
--- a/libs/vkd3d-shader/hlsl_codegen.c
+++ b/libs/vkd3d-shader/hlsl_codegen.c
@@ -1665,9 +1665,9 @@ int hlsl_emit_dxbc(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *entry_fun
     {
         progress = transform_ir(ctx, hlsl_fold_constants, body, NULL);
         progress |= copy_propagation_execute(ctx, body);
+        progress |= transform_ir(ctx, remove_trivial_swizzles, body, NULL);
     }
     while (progress);
-    transform_ir(ctx, remove_trivial_swizzles, body, NULL);
 
     if (ctx->profile->major_version < 4)
         transform_ir(ctx, lower_division, body, NULL);
-- 
2.34.1




More information about the wine-devel mailing list