Based on !2524.
This adds the remaining stubs needed for Crazy Machines 3 to work and decode preview images correctly in online mode.
--
v2: msvcr110: Add _Context::_IsSynchronouslyBlocked stub.
msvcr110: Add _Cancellation_beacon::_Cancellation_beacon_dtor stub.
msvcr110: Add _Cancellation_beacon::_Cancellation_beacon_ctor stub.
msvcr100: Implement _StructuredTaskCollection::_IsCanceling.
msvcr100: Implement _StructuredTaskCollection canceling.
msvcr100: Use enum for _StructuredTaskCollection status bits.
msvcr100: Use enum for _StructuredTaskCollection return value.
msvcr100: Only wake task collection waiters when finished >= count.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1979
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.
--
v6: 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
I initially wanted to do the refactoring in a separate merge request, but since my merge request yesterday broke the tests, I decided to add the implementation into this commit as well.
--
v5: kernelbase: Recursively obtain the Wow6432Node parent.
kernelbase: Add support for shared registry keys.
kernelbase: Call create_key() from create_subkey().
kernelbase: Factor creating a subkey out of create_key().
kernelbase: Don't open Wow6432nodes from create_key().
https://gitlab.winehq.org/wine/wine/-/merge_requests/2483
Word 2016 queries a lot of font glyph bounding boxes and bitmaps with translation matrices. The
result of these queries is not cached because the transform matrix is not the identity matrix.
However, the translation offsets don't affect FreeType font operations at all, which can be
verified in ft_matrix_from_dwrite_matrix() called by get_glyph_transform(). So these results with
translation matrices can be cached as well. With this patch, Word 2016 stuttering is reduced
significantly.
--
v3: dwrite: Use cache when font transform matrix contains only translation offsets.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2482