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?