The PE build uses FlsAlloc(), which for our purposes makes no difference vs TlsAlloc(), and allows the use of a destruction callback.
--
v3: vkd3d: Replace the descriptor object cache with a thread-local implementation.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/384
A TLS index is allocated for each device object. We could use a global TLS, but that would share caches for all devices. I'm not sure if that's a problem. One index per device means freed indices must be recycled, which requires a global mutex, but a global TLS index would also need a global mutex.
This currently leaks cache memory when a device is freed. To fix this, allocations must be tracked. A global cache is more difficult to free, which is not normally an issue, but it is when using valgrind.
--
v2: vkd3d: Replace the descriptor object cache with a thread-local implementation.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/384
Goes atop MRs 346 and 372. The last five commits are of this MR.
--
v4: vkd3d-shader/dxil: Read DXIL compute shader thread group dimensions.
vkd3d-shader/dxil: Read DXIL global flags.
vkd3d-shader: Define more global flags.
vkd3d-shader/dxil: Handle multi-row signature elements.
vkd3d-shader/dxil: Handle signature element additional tag/value pairs.
vkd3d-shader/dxil: Read the DXIL input and output signatures.
vkd3d-shader/dxil: Validate the entry point info.
vkd3d-shader/dxil: Read DXIL metadata named nodes.
vkd3d-shader/dxil: Read DXIL metadata kinds.
vkd3d-shader/dxil: Read DXIL metadata values.
vkd3d-shader/dxil: Read DXIL metadata nodes.
vkd3d-shader/dxil: Read DXIL metadata strings.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/388
This MR improves window management related behavior and adds support for more scenarios.
Some highlights (please see the full commit list and messages for more info):
1. Better support for tiled states.
2. Detect and handle fullscreen windows.
3. Increased robustness against state disagreements between Wine and the Wayland compositor.
4. Move top-level windows to (0,0) (using that fixed point for now, we will later generalize this mechanism for multiple monitors), in order to:
a. maximize the accessible mouse input region (which may be clipped in Windows virtual screen space, but still accessible in Wayland space).
b. introduce the basic mechanism to allow windows applications to (very roughly!) track which output(s) they are really on (to be continued in the full multi-monitor form).
Although (4) is not a perfect solution for the lack of absolute positioning, it has worked well in practice in its full, multi-monitor implementation (i.e., in the experimental branch). I wonder if for (4a) in particular we can do better, e.g., by being able to emit input that circumvents the normal virtual screen clipping. Is there a way to do this already? If not, do you think that such an approach would be a feasible and acceptable way forward, or is virtual screen input clipping fundamentally baked in the current core design and assumptions?
Thanks!
--
v2: winewayland.drv: Avoid resizing fullscreen windows.
winewayland.drv: Rename wayland_surface_configure_is_compatible for consistency.
winewayland.drv: Use surface geometry to satisfy state size constraints.
winewayland.drv: Handle application-initiated fullscreen state.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4014