Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/hlsl.c:
type->dimx = 0; - type->reg_size = 0; - for (i = 0; i < type->e.record.field_count; ++i) { struct hlsl_struct_field *field = &type->e.record.fields[i]; - unsigned int field_size = field->type->reg_size;
- type->reg_size = hlsl_type_get_sm4_offset(field->type, type->reg_size); - field->reg_offset = type->reg_size; - type->reg_size += field_size; + for (k = 0; k <= HLSL_REGSET_LAST; ++k) + { + if (k == HLSL_REGSET_NUMERIC) + type->reg_size[k] = hlsl_type_get_sm4_offset(field->type, type->reg_size[k]);
I am a bit puzzled by this function having `sm4` in its name, because it doesn't seem to be SM4-specific. It is called independently of the backend, isn't it? -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/66#note_24801