This is required by https://bugs.winehq.org/show_bug.cgi?id=54660 .
--
v6: vkd3d-shader/hlsl: Consider duplicated input semantic types equivalent in SM1.
vkd3d-shader/hlsl: Handle possibly different types in input semantic var load.
vkd3d-shader/hlsl: Error out when a semantic is used with incompatible types.
vkd3d-shader/hlsl: Error out when an output semantic is used more than once.
vkd3d-shader/hlsl: Support semantics for array types.
vkd3d-shader/hlsl: Don't create semantic vars more than once.
vkd3d-shader/hlsl: Move get_array_size() and get_array_type() to hlsl.c.
tests: Test duplicated semantics.
tests: Test array types with semantics.
vkd3d-shader/hlsl: Avoid invalid input/output copies for non-numeric types.
tests: Allow invalid vertex shader tests.
tests: Expect S_OK result on [vertex shader].
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/148
The `nb_threads` counter in ntdll is decremented by `abort_thread` but not `exit_thread`, which is used when `NtTerminateThread` is called on the current thread. That results in `nb_threads` being off by one, so neither `abort_thread` nor `exit_thread` will notice when the final thread is killed or call `abort_process`/`exit_process` of its own volition.
In some instances that results in the final thread of a process hanging around and continuing to do work until it's killed by the server's SIGKILL timer. Since most of the process' internal state has been torn down by that point, that usually results in syscall faults or server `write` failures.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2701
--
v2: vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_resource_store().
vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_resource_load().
vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_loop().
vkd3d-shader/hlsl: Pass an hlsl_block pointer to hlsl_new_loop().
vkd3d-shader/hlsl: Reuse the "init" instruction list if possible in create_loop().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/176