Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/hlsl.y:
return NULL; }
- if (arg1->data_type->type == HLSL_CLASS_SCALAR)
dim = arg2->data_type->dimx;
- else if (arg1->data_type->type == HLSL_CLASS_SCALAR)
dim = arg1->data_type->dimx;
- else
- if (arg1->data_type->type == HLSL_CLASS_SCALAR && arg2->data_type->type == HLSL_CLASS_SCALAR)
dim = 1;
- else if (arg1->data_type->type == HLSL_CLASS_VECTOR && arg2->data_type->type == HLSL_CLASS_VECTOR) dim = min(arg1->data_type->dimx, arg2->data_type->dimx);
- else
dim = max(arg1->data_type->dimx, arg2->data_type->dimx);
The change itself looks fine, if a tad complicated (it would have been enough to change one character: from `else if (arg1->data_type->type == HLSL_CLASS_SCALAR)` to `else if (arg2->data_type->type == HLSL_CLASS_SCALAR)`).
Though it's easy to write a test that shows that this fixes a bug, so I think there should be one.