This seems largely fine like this, although I do wish it used vkd3d_shader_parser_error()/vkd3d_shader_parser_warning() instead of FIXME in more places.
```diff @@ -1986,10 +1986,17 @@ static bool shader_sm4_read_src_param(struct vkd3d_shader_sm4_parser *priv, cons switch (swizzle_type) { case VKD3D_SM4_SWIZZLE_NONE: - if (shader_sm4_is_scalar_register(&src_param->reg)) - src_param->swizzle = VKD3D_SHADER_SWIZZLE(X, X, X, X); - else - src_param->swizzle = VKD3D_SHADER_NO_SWIZZLE; + assert(!shader_sm4_is_scalar_register(&src_param->reg)); ```
What allows us to make that assertion? -- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/225#note_41677