--
v2: vkd3d-shader/ir: Check that SSA registers are used validly.
vkd3d-shader/ir: Check that SSA registers have consistent dimensions.
vkd3d-shader/ir: Check that TEMP registers have consistent dimensions.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/550
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 check whether there is a non-constant index on a vector on the
lhs of a load.
Ideally we would want to emit an hlsl_error on this pass, but we before
implementing loop unrolling, we could reach this point on valid HLSL.
Also, as pointed out by @nsivov 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.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/558
Apparently, this wasn't enough to fix it in all WMs. It's simpler to just use the same sequence as normal fullscreen windows and avoid headaches with virtual desktops, and Béla reported it working as well (I couldn't reproduce it, but nothing broke for me, at least).
I know the whole NtUserGetPrimaryMonitorRect thing is wrong and only works for one monitor, but that was already the case before, so I kept it the same since it won't fix a regression and we're in code freeze.
--
v4: winex11: Move the update_desktop_fullscreen callsite to update_net_wm_states.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4823