In preparation to keep action map app data in there, for `SetActionMap`.
--
v2: dinput: Always set the DIPROP_BUFFERSIZE property in SetActionMap.
dinput: Initialize SetActionMap variables in their declarations.
dinput: Always allocate and initialize the object_properties.
dinput: Move mouse_create_device function around.
dinput: Initialize device object format when creating devices.
dinput: Count the actual number of object formats in SetActionMap.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2453
Today, NtCurrentTeb() has a single asm statement when compiling for the
i386, x86-64, or ARM architecture with GCC. This single asm statement
has neither the "volatile" qualifier nor the "memory" clobber.
This can provoke undefined behavior if the current TEB changes between
NtCurrentTeb() calls. This is because GCC assumes that the asm
statement does not depend on memory or the thread-local register. In
fact, given the same address of the "teb" variable, GCC assumes that the
asm statement produces exactly the same value on every invocaton.
This primarily causes issues when switching to another fiber from a
thread that is different from the thread on which the fiber was last
executed. Theoretically, however, this may also cause issues when the
optimizer aliases the "teb" variable to another variable that is shared
between threads, and perform global optimization that can work across
multiple threads in runtime (if any).
Fix this by adding the "memory" clobber to the asm statements that
computes the current TEB address.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2434
Diablo IV (closed beta) depends on DEVPKEY_Device_MatchingDeviceId being present for GPUs (once it is able to match GPU luid to the one obtained from dxgi). It also depends on the MatchingDeviceId conating "ven_" and "dev_" substrings. Without those it doesn't consider the gpu as valid, which currently results in the game complaining about no GPUs found. I guess that maybe it is trying to filter out software GPUs and such this way.
As far as my testing goes, DEVPKEY_Device_MatchingDeviceId has this form with hardware GPUs only and maybe with the recent enough Win10 or Win11.
The other two device properties being added are also queried by the game although they are not strictly needed for it.
--
v2: win32u: Set DEVPKEY_Device_RemovalPolicy for GPUs.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2449
Diablo IV (closed beta) depends on DEVPKEY_Device_MatchingDeviceId being present for GPUs (once it is able to match GPU luid to the one obtained from dxgi). It also depends on the MatchingDeviceId conating "ven_" and "dev_" substrings. Without those it doesn't consider the gpu as valid, which currently results in the game complaining about no GPUs found. I guess that maybe it is trying to filter out software GPUs and such this way.
As far as my testing goes, DEVPKEY_Device_MatchingDeviceId has this form with hardware GPUs only and maybe with the recent enough Win10 or Win11.
The other two device properties being added are also queried by the game although they are not strictly needed for it.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2449