WSL graphics driver update brings better GPU support for Linux apps
(2026/03/20)
- Reference: 1774024804
- News link: https://www.theregister.co.uk/2026/03/20/linux_directx_and_opengl/
- Source link:
Whatever OS you run, you have a better chance to run non-native apps. 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 are pursuing the same goal: better graphics performance when running non-native apps on top of a different OS.
The first of these is one that The Register has mentioned before – albeit quite a long time ago. Six years ago, we covered [1]Microsoft's new dxgkrnl driver , which allows Linux running under WSL2 to access the DirectX functionality of a GPU belonging to the host OS. Microsoft was [2]keen to promote this at the time, and even now the driver has its [3]own section on the Microsoft docs site.
[4]
Dxgkrnl hasn't been touched in almost exactly four years. After its introduction in 2020, it got a [5]significant rebuild in 2022 – effectively version 2 – and a few months later Microsoft [6]refactored the code for clarity and ease of review, labeling it PATCH v3 . A [7]new patch on the Linux kernel mailing list introduces version 4 of the driver.
[8]
[9]
This version supports compute-only GPUs, for running those painfully trendy – or [10]just plain painful – LLMs, plus multiple virtual GPUs per VM, and driver buffer sharing via [11]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 continues to drive new development
WSL2 runs a single real copy of Linux inside Windows, with containers impersonating different distributions. It's a big contrast to the [12]original WSL a decade ago. Now referred to as WSL1, it provided a translation layer to convert Linux API calls into Windows ones, derived from the [13]long-gone Project Astoria runtime for running Android apps on Windows Phone.
As it happens, WSL1 bears more resemblance to how WINE works than it does to WSL2. WINE is also a translation layer that converts Windows API calls into Linux equivalents. As we reported in early 2024, [14]WINE 9.0 introduced 32-bit to 64-bit thunking : it could run 32-bit Windows binaries on 64-bit host OSes, 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 [15]WINE 11 release , this is so integrated that there are no wine32 or wine64 commands any more.
WINE is thriving in recent years thanks to Valve. Its [16]SteamOS 3 distribution , originally built for the [17]Steam Deck handheld games console , runs Windows games on Linux using Valve's [18]Proton , which is built into the Linux client for Valve's Steam gaming platform. SteamOS 3 is doing so well that Valve is [19]planning to launch more Steam hardware later this year.
[20]GNOME 50 debuts with X11 axed, Wayland front and center
[21]Systemd 260 kills SysV, tells AI not to misbehave
[22]It's not a binary choice. Independent boffin builds a ternary CPU on an FPGA
[23]Big moves in Linux filesystems as new bcachefs lands and KDE adds support for Apple's APFS
There's still life in OpenGL yet
Valve's success in selling consumer gaming hardware based around OS-level emulation isn't just driving Linux development. It's driving changes in OpenGL as well.
Back in 2024, Codeweavers' Derek Lesho raised a new problem on the mesa-dev mailing list: [24]Helping Wine use 64-bit Mesa OGL drivers for 32-bit Windows applications . Last year, he [25]explained more on Mesa's GitLab. The problem affects WINE when it's running a 32-bit Windows game on a 64-bit host OS. When WINE allocates a block of GPU memory for the game using the [26]glMapBuffer API, that buffer's address will be a 64-bit address – but WINE can't pass that address to a 32-bit application if the address won't fit into the 32-bit address range.
[27]
(Anyone who ever tried to add more than 4 GB of RAM to a Windows XP computer only to find that 32-bit XP couldn't see the extra memory encountered a different facet of the same issue.)
After some discussion, the result is a new OpenGL API, called [28]MESA_map_buffer_client_pointer . Its summary says:
This extension allows the application to specify pointer ranges within which buffers should be mapped.
In other words, when allocating a buffer, it lets an application request that the buffer is within a given address range, so that it's reachable by 32-bit code without slow copy operations.
It's already a decade since The Register reported on the [29]Vulkan 1.0 open graphics specification , but development is still happening in its forerunner, OpenGL. Even if Microsoft has dropped 16-bit app support from Windows, and Apple has discontinued 32-bit app support from macOS, WINE is working to keep those old Windows binaries running well on modern 64-bit Unix-like OSes. ®
Get our [30]Tech Resources
[1] https://www.theregister.com/2020/05/20/microsoft_directx_wsl_linux/
[2] https://devblogs.microsoft.com/directx/directx-heart-linux/
[3] https://learn.microsoft.com/en-us/windows-hardware/drivers/display/directx-graphics-kernel-subsystem
[4] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=2&c=2ab19MbFIoWExEnS4KYPnggAAAQc&t=ct%3Dns%26unitnum%3D2%26raptor%3Dcondor%26pos%3Dtop%26test%3D0
[5] https://lore.kernel.org/lkml/cover.1641937419.git.iourit@linux.microsoft.com/
[6] https://lore.kernel.org/lkml/cover.1646161341.git.iourit@linux.microsoft.com/
[7] https://lore.kernel.org/lkml/20260319202509.63802-1-eric.curtin@docker.com/
[8] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44ab19MbFIoWExEnS4KYPnggAAAQc&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[9] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33ab19MbFIoWExEnS4KYPnggAAAQc&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0
[10] https://www.theregister.com/2026/03/19/ai_skeptic_labels/
[11] https://www.kernel.org/doc/html/v5.9/driver-api/dma-buf.html
[12] https://www.theregister.com/2016/04/07/windows_10_with_ubuntu_now_in_public_preview/
[13] https://www.theregister.com/2015/04/29/windows_android_ios_compatibility/
[14] https://www.theregister.com/2024/01/18/wine_90_is_out/
[15] https://www.theregister.com/2026/01/15/wine_11_arrives_faster_and/
[16] https://www.theregister.com/2023/09/27/osseu_steam_os_3/
[17] https://www.theregister.com/2021/07/16/steam_deck_portable_gaming_pc/
[18] https://github.com/valvesoftware/proton
[19] https://www.theregister.com/2025/11/14/valve_steam_kit/
[20] https://www.theregister.com/2026/03/19/gnome_50/
[21] https://www.theregister.com/2026/03/18/systemd_260/
[22] https://www.theregister.com/2026/03/18/ternary_cpu_on_fpga/
[23] https://www.theregister.com/2026/03/17/bcachefs_and_apfs_news/
[24] https://lists.freedesktop.org/archives/mesa-dev/2024-October/226323.html
[25] https://gitlab.freedesktop.org/mesa/mesa/-/issues/14254
[26] https://learnopengl.com/Advanced-OpenGL/Advanced-Data
[27] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44ab19MbFIoWExEnS4KYPnggAAAQc&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[28] https://github.com/KhronosGroup/OpenGL-Registry/commit/8d7162cb672a5e91d1b858ffbe0b1e30cae237c3
[29] https://www.theregister.com/2016/02/16/khronos_releases_vulkan_10_open_graphics_specification/
[30] https://whitepapers.theregister.com/
Two very different types of graphics driver stack both received updates this week, and although they are unrelated, both are pursuing the same goal: better graphics performance when running non-native apps on top of a different OS.
The first of these is one that The Register has mentioned before – albeit quite a long time ago. Six years ago, we covered [1]Microsoft's new dxgkrnl driver , which allows Linux running under WSL2 to access the DirectX functionality of a GPU belonging to the host OS. Microsoft was [2]keen to promote this at the time, and even now the driver has its [3]own section on the Microsoft docs site.
[4]
Dxgkrnl hasn't been touched in almost exactly four years. After its introduction in 2020, it got a [5]significant rebuild in 2022 – effectively version 2 – and a few months later Microsoft [6]refactored the code for clarity and ease of review, labeling it PATCH v3 . A [7]new patch on the Linux kernel mailing list introduces version 4 of the driver.
[8]
[9]
This version supports compute-only GPUs, for running those painfully trendy – or [10]just plain painful – LLMs, plus multiple virtual GPUs per VM, and driver buffer sharing via [11]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 continues to drive new development
WSL2 runs a single real copy of Linux inside Windows, with containers impersonating different distributions. It's a big contrast to the [12]original WSL a decade ago. Now referred to as WSL1, it provided a translation layer to convert Linux API calls into Windows ones, derived from the [13]long-gone Project Astoria runtime for running Android apps on Windows Phone.
As it happens, WSL1 bears more resemblance to how WINE works than it does to WSL2. WINE is also a translation layer that converts Windows API calls into Linux equivalents. As we reported in early 2024, [14]WINE 9.0 introduced 32-bit to 64-bit thunking : it could run 32-bit Windows binaries on 64-bit host OSes, 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 [15]WINE 11 release , this is so integrated that there are no wine32 or wine64 commands any more.
WINE is thriving in recent years thanks to Valve. Its [16]SteamOS 3 distribution , originally built for the [17]Steam Deck handheld games console , runs Windows games on Linux using Valve's [18]Proton , which is built into the Linux client for Valve's Steam gaming platform. SteamOS 3 is doing so well that Valve is [19]planning to launch more Steam hardware later this year.
[20]GNOME 50 debuts with X11 axed, Wayland front and center
[21]Systemd 260 kills SysV, tells AI not to misbehave
[22]It's not a binary choice. Independent boffin builds a ternary CPU on an FPGA
[23]Big moves in Linux filesystems as new bcachefs lands and KDE adds support for Apple's APFS
There's still life in OpenGL yet
Valve's success in selling consumer gaming hardware based around OS-level emulation isn't just driving Linux development. It's driving changes in OpenGL as well.
Back in 2024, Codeweavers' Derek Lesho raised a new problem on the mesa-dev mailing list: [24]Helping Wine use 64-bit Mesa OGL drivers for 32-bit Windows applications . Last year, he [25]explained more on Mesa's GitLab. The problem affects WINE when it's running a 32-bit Windows game on a 64-bit host OS. When WINE allocates a block of GPU memory for the game using the [26]glMapBuffer API, that buffer's address will be a 64-bit address – but WINE can't pass that address to a 32-bit application if the address won't fit into the 32-bit address range.
[27]
(Anyone who ever tried to add more than 4 GB of RAM to a Windows XP computer only to find that 32-bit XP couldn't see the extra memory encountered a different facet of the same issue.)
After some discussion, the result is a new OpenGL API, called [28]MESA_map_buffer_client_pointer . Its summary says:
This extension allows the application to specify pointer ranges within which buffers should be mapped.
In other words, when allocating a buffer, it lets an application request that the buffer is within a given address range, so that it's reachable by 32-bit code without slow copy operations.
It's already a decade since The Register reported on the [29]Vulkan 1.0 open graphics specification , but development is still happening in its forerunner, OpenGL. Even if Microsoft has dropped 16-bit app support from Windows, and Apple has discontinued 32-bit app support from macOS, WINE is working to keep those old Windows binaries running well on modern 64-bit Unix-like OSes. ®
Get our [30]Tech Resources
[1] https://www.theregister.com/2020/05/20/microsoft_directx_wsl_linux/
[2] https://devblogs.microsoft.com/directx/directx-heart-linux/
[3] https://learn.microsoft.com/en-us/windows-hardware/drivers/display/directx-graphics-kernel-subsystem
[4] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=2&c=2ab19MbFIoWExEnS4KYPnggAAAQc&t=ct%3Dns%26unitnum%3D2%26raptor%3Dcondor%26pos%3Dtop%26test%3D0
[5] https://lore.kernel.org/lkml/cover.1641937419.git.iourit@linux.microsoft.com/
[6] https://lore.kernel.org/lkml/cover.1646161341.git.iourit@linux.microsoft.com/
[7] https://lore.kernel.org/lkml/20260319202509.63802-1-eric.curtin@docker.com/
[8] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44ab19MbFIoWExEnS4KYPnggAAAQc&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[9] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33ab19MbFIoWExEnS4KYPnggAAAQc&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0
[10] https://www.theregister.com/2026/03/19/ai_skeptic_labels/
[11] https://www.kernel.org/doc/html/v5.9/driver-api/dma-buf.html
[12] https://www.theregister.com/2016/04/07/windows_10_with_ubuntu_now_in_public_preview/
[13] https://www.theregister.com/2015/04/29/windows_android_ios_compatibility/
[14] https://www.theregister.com/2024/01/18/wine_90_is_out/
[15] https://www.theregister.com/2026/01/15/wine_11_arrives_faster_and/
[16] https://www.theregister.com/2023/09/27/osseu_steam_os_3/
[17] https://www.theregister.com/2021/07/16/steam_deck_portable_gaming_pc/
[18] https://github.com/valvesoftware/proton
[19] https://www.theregister.com/2025/11/14/valve_steam_kit/
[20] https://www.theregister.com/2026/03/19/gnome_50/
[21] https://www.theregister.com/2026/03/18/systemd_260/
[22] https://www.theregister.com/2026/03/18/ternary_cpu_on_fpga/
[23] https://www.theregister.com/2026/03/17/bcachefs_and_apfs_news/
[24] https://lists.freedesktop.org/archives/mesa-dev/2024-October/226323.html
[25] https://gitlab.freedesktop.org/mesa/mesa/-/issues/14254
[26] https://learnopengl.com/Advanced-OpenGL/Advanced-Data
[27] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/oses&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44ab19MbFIoWExEnS4KYPnggAAAQc&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[28] https://github.com/KhronosGroup/OpenGL-Registry/commit/8d7162cb672a5e91d1b858ffbe0b1e30cae237c3
[29] https://www.theregister.com/2016/02/16/khronos_releases_vulkan_10_open_graphics_specification/
[30] https://whitepapers.theregister.com/