Whatever operating system you run, you have a better chance of running non-native applications. Running Linux virtualized on Windows is set to speed up slightly, and so is running Windows apps on top of 64-bit Linux and macOS.
Two very different types of graphics driver stack both received updates this week, and although they are unrelated, both pursue the same goal: better graphics performance when running non-native apps on top of a different operating system.
DirectX gets compute capabilities
Microsoft's dxgkrnl driver allows Linux running under WSL2 to access the DirectX functionality of a GPU belonging to the host operating system. After its introduction in 2020, it received a significant rebuild in 2022, effectively version 2, and a few months later Microsoft refactored the code for clarity and ease of review, labeling it PATCH v3.
A new patch on the Linux kernel mailing list introduces version 4 of the driver. This version supports compute-only GPUs for running those painfully trendy or just plain painful large language models, plus multiple virtual GPUs per VM, and driver buffer sharing via dma-fence. Of course, DirectX itself remains closed source, and the driver is no use in any other context except running under Hyper-V on top of Windows.
WINE simplifies 32-bit compatibility
WINE is thriving in recent years thanks to Valve. Its SteamOS 3 distribution, originally built for the Steam Deck handheld games console, runs Windows games on Linux using Valve's Proton, which is built into the Linux client for Valve's Steam gaming platform. SteamOS 3 is doing so well that Valve is planning to launch more Steam hardware later this year.
WINE 9.0 introduced 32-bit to 64-bit thunking: it could run 32-bit Windows binaries on 64-bit host operating systems, without using any 32-bit subsystem on the host, which is necessary for all versions of macOS since 10.15 Catalina. With this year's WINE 11 release, this is so integrated that there are no wine32 or wine64 commands any more.
In WINE 11.0 the new WoW64 mode is now fully-supported and reaches feature parity with the old version, gaining OpenGL memory mappings, SCSI pass-through, 16-bit support, 32-bit prefixes and other enhancements. WINE 11.0 supports Vulkan 1.4 APIs, additional Win32 extensions, and hardware decoding of H.264 through D3D11 video APIs using Vulkan Video. Applications which rely on modern graphics APIs for video playback can make use of GPU decoding rather than task the CPU, which should result in smooth performance overall.
OpenGL gets a new memory trick
Back in 2024, Codeweavers' Derek Lesho raised a new problem on the mesa-dev mailing list: helping WINE use 64-bit Mesa OpenGL drivers for 32-bit Windows applications. Last year, he explained more on Mesa's GitLab.
The problem affects WINE when it is running a 32-bit Windows game on a 64-bit host operating system. When WINE allocates a block of GPU memory for the game using the glMapBuffer API, that buffer's address will be a 64-bit address, but WINE cannot pass that address to a 32-bit application if the address will not fit into the 32-bit address range. Anyone who ever tried to add more than 4 GB of RAM to a Windows XP computer only to find that 32-bit XP could not see the extra memory encountered a different facet of the same issue.
Merged to the OpenGL Registry is a new extension intended to help WINE usage for 32-bit Windows games and applications on 64-bit Linux systems. The new extension in the OpenGL Registry is MESA_map_buffer_client_pointer. The MESA_map_buffer_client_pointer extension lets the application specify pointer ranges within which buffers should be mapped. The extension was designed to help the WINE project with its OpenGL 32-bit ABI on top of 64-bit Linux. With this extension it can return an address in the 32-bit address range.
These incremental improvements reflect a broader shift in how operating systems and development tools handle application compatibility. Rather than forcing users to choose a single OS, the industry is gradually making it easier to run software across platform boundaries, whether for gaming, business, or development workflows.