From 4717775abbf4384480fb2069c585c46225f35d5c Mon Sep 17 00:00:00 2001
From: Giovanni Mascellani <gmascellani@codeweavers.com>
Date: Fri, 22 Nov 2024 21:35:07 +0100
Subject: [PATCH] vkd3d-shader/ir: Remove I/O declarations before flattening
 hull shader phases.

---
 libs/vkd3d-shader/ir.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c
index 28bbdf76..59eec85e 100644
--- a/libs/vkd3d-shader/ir.c
+++ b/libs/vkd3d-shader/ir.c
@@ -1271,12 +1271,6 @@ static void flattener_eliminate_phase_related_dcls(struct hull_flattener *normal
         vkd3d_shader_instruction_make_nop(ins);
         return;
     }
-    else if (ins->opcode == VKD3DSIH_DCL_INPUT && shader_register_is_phase_instance_id(
-            &ins->declaration.dst.reg))
-    {
-        vkd3d_shader_instruction_make_nop(ins);
-        return;
-    }
 
     if (normaliser->phase == VKD3DSIH_INVALID || vsir_instruction_is_dcl(ins))
         return;
@@ -9257,6 +9251,7 @@ enum vkd3d_result vsir_program_transform(struct vsir_program *program, uint64_t
     };
 
     vsir_transform(&ctx, vsir_program_lower_instructions);
+    vsir_transform(&ctx, vsir_program_remove_io_decls);
 
     if (program->shader_version.major >= 6)
     {
@@ -9265,7 +9260,6 @@ enum vkd3d_result vsir_program_transform(struct vsir_program *program, uint64_t
         vsir_transform(&ctx, vsir_program_structurize);
         vsir_transform(&ctx, vsir_program_flatten_control_flow_constructs);
         vsir_transform(&ctx, vsir_program_materialize_undominated_ssas_to_temps);
-        vsir_transform(&ctx, vsir_program_remove_io_decls);
     }
     else
     {
@@ -9280,7 +9274,6 @@ enum vkd3d_result vsir_program_transform(struct vsir_program *program, uint64_t
         if (program->shader_version.type == VKD3D_SHADER_TYPE_HULL)
             vsir_transform(&ctx, vsir_program_flatten_hull_shader_phases);
 
-        vsir_transform(&ctx, vsir_program_remove_io_decls);
         vsir_transform(&ctx, instruction_array_normalise_hull_shader_control_point_io);
         vsir_transform(&ctx, vsir_program_normalise_io_registers);
         vsir_transform(&ctx, vsir_program_normalise_flat_constants);