Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/ir.c:
+ keep = shader_dst_param_io_normalise(&ins->declaration.register_semantic.reg, true, + normaliser); + break; + case VKD3DSIH_HS_CONTROL_POINT_PHASE: + case VKD3DSIH_HS_FORK_PHASE: + case VKD3DSIH_HS_JOIN_PHASE: + normaliser->phase = ins->handler_idx; + memset(normaliser->input_dcl_params, 0, sizeof(normaliser->input_dcl_params)); + memset(normaliser->output_dcl_params, 0, sizeof(normaliser->output_dcl_params)); + memset(normaliser->pc_dcl_params, 0, sizeof(normaliser->pc_dcl_params)); + break; + default: + if (shader_instruction_is_dcl(ins)) + break; + for (i = 0; i < ins->dst_count; ++i) + shader_dst_param_io_normalise((struct vkd3d_shader_dst_param *)&ins->dst[i], false, normaliser); I don't like casting away `const` too much. What is the reason why `dst` is a pointer to `const` in the first pace? Given that it seems that we want to modify instructions, maybe it makes sense to remove `const` from the `struct vkd3d_shader_instruction`?
The same happens a couple of lines below. -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/181#note_33401