--
v11: tests/d3d12: Test multiple clip distance inputs in test_clip_distance().
tests/d3d12: Use 5 clip distances for the multiple test in test_clip_distance().
vkd3d-shader/ir: Transform clip/cull outputs and patch constants into arrays.
vkd3d-shader/ir: Transform clip/cull inputs into an array.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/564
--
v10: tests/d3d12: Test multiple clip distance inputs in test_clip_distance().
tests/d3d12: Use 5 clip distances for the multiple test in test_clip_distance().
vkd3d-shader/ir: Transform clip/cull outputs and patch constants into arrays.
vkd3d-shader/ir: Transform clip/cull inputs into an array.
vkd3d-shader/ir: Refactor return code checking in vkd3d_shader_normalise().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/564
Goes atop !533. The last commit belongs to this MR.
--
v2: vkd3d-shader/dxil: Implement DX intrinsic Binary.
vkd3d-shader/dxil: Implement DX intrinsic BufferLoad for typed buffers.
vkd3d-shader/dxil: Load typed UAV descriptors.
vkd3d-shader/dxil: Load typed SRV descriptors.
vkd3d-shader/spirv: Do not assert VKD3D_DATA_UINT in spirv_compiler_emit_ld_raw_structured_srv_uav().
vkd3d-shader/dxil: Pass the code block and instruction in a struct to intrinsic handlers.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/572
Farlight 84 calls this API using the ordinal number 108
For after the code freeze
--
v5: xinput: Reimplement XInputGetCapabilities.
xinput: Implement XInputGetCapabilitiesEx.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4693
~~Other validation stuff I plan to send as soon as !450 and !550 are in.~~
~~I guess the CI is going to timeout because of too many commits, so I'll preemptively stop it.~~
--
v6: vkd3d-shader/ir: Validate swizzles for 64 bit types.
vkd3d-shader/dxil: Generate valid swizzles for 64 bit types.
vkd3d-shader/ir: Validate PHI instructions.
vkd3d-shader/ir: Do not allow IMMCONST and IMMCONST64 as destination registers.
vkd3d-shader/ir: Refactor register-type-specific code in parameter validation.
vkd3d-shader/ir: Check that all instructions appear in a block.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/559
--
v2: winex11: Create registry keys for known Xkb layouts.
winex11: Keep a list of every known Xkb layout.
winex11: Read the _XKB_RULES_NAMES root window property.
win32u: Init vsc2vk in NtUserGetKeyNameText only if necessary.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2408
Currently only used to keep rawinput devices updated without iterating the entire list on every change.
This thread will then let us solve several problems:
* Solve issues with input not being polled if/when applications aren't checking their messages. This removes the need for polling messages in DInput, which is known to confuse and break DOSBOX.
* Solve some issues with ll-hook deadlocks between hooking threads and the thread that is currently polling for inputs.
* Useful to process internal messages and implement some user driver mechanisms. It can for instance already process WM_WINE_CLIPCURSOR messages, instead of relying on the foreground thread.
* Similarly, for cursor icon changes, wineserver can notify it on cursor window changes and request the cursor icon to be updated from the user driver, instead of having to check the window the cursor is located in to change its icon on every mouse move.
* Ultimately make it possible to drop the __wine_send_input PE export, the thread can read HID reports from devices that a process has registered for, and send WM_INPUT messages accordingly. This has some drawbacks though, as reading NT devices currently involves much more wineserver roundtrips than `__wine_send_input`.
There's evidence that Windows uses a similar thread to process hardware events (as described in https://devblogs.microsoft.com/oldnewthing/20140213-00/?p=1773), although it's probably a system-wide kernel thread. I considered reading X11 input from a per-prefix dedicated thread (for instance in explorer.exe) or dedicated process, but having one thread per-process has several advantages.
The rawinput device registration state is done per-process and according to https://gitlab.winehq.org/wine/wine/-/merge_requests/2120 it also needs to post notifications that are process specific.
It also keeps the guarantee that each process will read the inputs from the window it has created, and not from some other windows, although the message dispatch may decide to send the message to another process later, it avoids having to listen to input on other processes windows.
It can then be seen as an intermediate step towards having a per-prefix thread, if that's something we end up needing. Moving from a per-process thread to a per-prefix thread should be easier.
--
v2: win32u: Keep rawinput device list updated using WM_DEVICECHANGE.
win32u: Register for device notifications in the rawinput thread.
win32u: Introduce a dedicated thread for rawinput processing.
ntdll/tests: Use combase instead of comctl32 as a test module.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3024