diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index d1055a05..c1400ba6 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -2257,39 +2257,39 @@ enum vkd3d_result vkd3d_shader_normalise(struct vkd3d_shader_parser *parser, struct vkd3d_shader_instruction_array *instructions = &parser->program.instructions; enum vkd3d_result result = VKD3D_OK; - if (parser->shader_desc.is_dxil) - return result; - - if (parser->program.shader_version.type != VKD3D_SHADER_TYPE_PIXEL) + if (!parser->shader_desc.is_dxil) { - if ((result = remap_output_signature(parser, compile_info)) < 0) + if (parser->program.shader_version.type != VKD3D_SHADER_TYPE_PIXEL) + { + if ((result = remap_output_signature(parser, compile_info)) < 0) + return result; + } + + if (parser->program.shader_version.type == VKD3D_SHADER_TYPE_HULL) + { + if ((result = instruction_array_flatten_hull_shader_phases(instructions)) < 0) + return result; + + if ((result = instruction_array_normalise_hull_shader_control_point_io(instructions, + &parser->shader_desc.input_signature)) < 0) + return result; + } + + if ((result = shader_normalise_io_registers(parser)) < 0) + return result; + + if ((result = instruction_array_normalise_flat_constants(&parser->program)) < 0) + return result; + + remove_dead_code(&parser->program); + + if ((result = flatten_control_flow_constructs(parser)) < 0) + return result; + + if ((result = normalise_combined_samplers(parser)) < 0) return result; } - if (parser->program.shader_version.type == VKD3D_SHADER_TYPE_HULL) - { - if ((result = instruction_array_flatten_hull_shader_phases(instructions)) < 0) - return result; - - if ((result = instruction_array_normalise_hull_shader_control_point_io(instructions, - &parser->shader_desc.input_signature)) < 0) - return result; - } - - if ((result = shader_normalise_io_registers(parser)) < 0) - return result; - - if ((result = instruction_array_normalise_flat_constants(&parser->program)) < 0) - return result; - - remove_dead_code(&parser->program); - - if ((result = flatten_control_flow_constructs(parser)) < 0) - return result; - - if ((result = normalise_combined_samplers(parser)) < 0) - return result; - if (TRACE_ON()) vkd3d_shader_trace(&parser->program);