Zebediah Figura (@zfigura) commented about libs/vkd3d-shader/hlsl_codegen.c:
- for (i = 0; i < hlsl_type_element_count(type); ++i)
- {
if (!(c = hlsl_new_uint_constant(ctx, i, &var->loc)))return;list_add_after(&lhs->node.entry, &c->node.entry);if (!(load = hlsl_new_load_index(ctx, &lhs->src, &c->node, &var->loc)))return;list_add_after(&c->node.entry, &load->node.entry);if (element_type->class == HLSL_CLASS_STRUCT)prepend_input_struct_copy(ctx, instrs, load);else if (element_type->class == HLSL_CLASS_ARRAY)prepend_input_array_copy(ctx, instrs, load, modifiers, semantic);elseprepend_input_copy(ctx, instrs, load, modifiers, semantic);
This pattern appears I think three times now, we should be able to use a helper. Or just fold this into the prologue of prepend_input_copy(), maybe?