wine-gecko started calling dwmapi since dwmapi stubs were improved between Wine 7 and 8. It loops in gfxWindowsPlatform.cpp:VBlankLoop() in a tight loop now because DwmFlush() is a no-op. Besides unneeded CPU load that also causes hangs on exit in Final Fantasy XIV launcher. The launcher can't get WM_QUIT message in its message loop because it constantly gets the messages queued from VBlankLoop() while processing previous "nsAppShell:EventID" message.
DwmFlush() is supposed to wait until next VBlank. My supplied test only tests that the wait is not alertable, but I also ad-hoc tested that the delay time introduced by DmwFlush() is between 0 and display refresh frequency.
--
v2: dwmapi: Sleep in DwmFlush().
https://gitlab.winehq.org/wine/wine/-/merge_requests/2463
wine-gecko started calling dwmapi since dwmapi stubs were improved between Wine 7 and 8. It loops in gfxWindowsPlatform.cpp:VBlankLoop() in a tight loop now because DwmFlush() is a no-op. Besides unneeded CPU load that also causes hangs on exit in Final Fantasy XIV launcher. The launcher can't get WM_QUIT message in its message loop because it constantly gets the messages queued from VBlankLoop() while processing previous "nsAppShell:EventID" message.
DwmFlush() is supposed to wait until next VBlank. My supplied test only tests that the wait is not alertable, but I also ad-hoc tested that the delay time introduced by DmwFlush() is between 0 and display refresh frequency.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2463
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.
--
v4: win32u: Set DEVPKEY_Device_RemovalPolicy for GPUs.
win32u: Set DEVPKEY_Device_BusNumber for GPUs.
win32u: Set DEVPKEY_Device_MatchingDeviceId for GPUs.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2449
This corrects what interface should be returned, there isn't a hierarchy with
these IUISettings at all. It should return IUISettings and then QI for
any others that it requires.
--
v2: windows.ui: Use DEFINE_IINSPECTABLE for IUISettings3
windows.ui: Add IUISettings2 stub interface
windows.ui: Add Stubbed interface IUISettings
include: Add Missing IUISettings interfaces.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2465