vkd3d-shader/hlsl: Emit fixmes on non-constant vector addressing.
vkd3d-shader/hlsl: Emit fixmes on non-constant vector addressing.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56162
Storing to a vector component using a non-constant index is not allowed on profiles lower than 6.0. Unless this happens inside a loop that can be unrolled, which we are not doing yet.
For this reason, a validate_nonconstant_vector_store_derefs pass is added to detect these cases.
Ideally we would want to emit an hlsl_error on this pass, but before implementing loop unrolling, we could reach this point on valid HLSL.
Also, as pointed out by Nikolay in the mentioned bug, currently new_offset_from_path_index() fails an assertion when this happens, because it expects an hlsl_ir_constant, so a check is added. It also felt correct to emit an hlsl_fixme there, despite the redundancy.