Alexandre Julliard (@julliard) commented about dlls/winex11.drv/wintab.c:
>
> typedef struct tagWTPACKET {
> HCTX pkContext;
> +#ifndef _WIN64
> + DWORD pkPadding;
> +#endif
If you are not going to convert pkContext, then it seems it shouldn't be a pointer in the first place.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6584#note_87245
Test Driver Unlimited Solar Crown depends on that (both calling ProcessTlsInformation and hotpatches the same to fixup the thread local storage allocation from ntdll).
--
v3: ntdll: Match memory allocation layout for ThreadLocalStoragePointer.
ntdll: Use NtSetInformationProcess( ProcessTlsInformation ) in alloc_tls_slot().
ntdll: Implement NtSetInformationProcess( ProcessTlsInformation ).
ntdll/tests: Add tests for NtSetInformationProcess( ProcessTlsInformation ).
https://gitlab.winehq.org/wine/wine/-/merge_requests/6549
This completes the implementation of display setting virtualization using DPI scaling, ie: Proton fshack done right.
There's various things to tweak still, and this will stay as an experimental feature with X11 (Wayland actually needs it to implement display mode change so it's as experimental as the driver):
- Fullscreen windows aren't padded when the display mode aspect ratio doesn't match the physical one.
- Dragging a window over another monitor with a different raw DPI is broken, and window dimensions may flicker/break, this will need the winex11 window configure refactoring (ie: https://gitlab.winehq.org/wine/wine/-/merge_requests/6731 and the other changes in https://gitlab.winehq.org/wine/wine/-/merge_requests/6569) to be fixed.
- DPI scaling is implemented with NtGdiStretchBlt, which is suboptimal, may not be performing well, and present sync is reportedly broken with GL/VK.
- A couple of other more minor tweaks.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6804