Skip to content

Releases: acceleration3/linux-subsystem-windows

LSW 0.2.2

Choose a tag to compare

@acceleration3 acceleration3 released this 02 Nov 23:46

Packages

  • Arch Linux: lsw-bin on the AUR, or the tarball below.
  • Ubuntu 26.04: lsw_0.2.2-1_amd64.deb (sudo apt install ./lsw_0.2.2-1_amd64.deb). On Debian and Ubuntu your user must be in the kvm group.
  • Fedora 45: lsw-0.2.2-1.fc45.x86_64.rpm (sudo dnf install ./lsw-0.2.2-1.fc45.x86_64.rpm).

Fixes

  • The Windows desktop redraws again. Its icons, selections and anything else drawn with GDI in a window without a redirection bitmap stayed stale on screen, which looked like freezes. The GPU driver's 0.2.1 frame latency changes are reverted.
  • An application asking OpenGL for GL_DEVICE_NODE_MASK_EXT no longer crashes the VM.
  • OpenGL reports GL_ARB_clip_control and GL_ARB_shader_draw_parameters, which some applications require.

LSW updates its files in Windows, the GPU driver included, the first time it starts after the upgrade.

LSW 0.2.1

Choose a tag to compare

@acceleration3 acceleration3 released this 02 Nov 18:34

Packages

  • Arch Linux: lsw-bin on the AUR, or the tarball below.
  • Ubuntu 26.04: lsw_0.2.1-1_amd64.deb (sudo apt install ./lsw_0.2.1-1_amd64.deb). On Debian and Ubuntu your user must be in the kvm group.
  • Fedora 45: lsw-0.2.1-1.fc45.x86_64.rpm (sudo dnf install ./lsw-0.2.1-1.fc45.x86_64.rpm).

Updating LSW in Windows

  • Every file LSW keeps in Windows (agent, window mirror, GPU driver, graphics loaders, shared folders) is updated together when LSW is updated. A dialog shows the versions and the steps. Windows restarts only when the GPU driver changed.
  • Settings, "Update LSW in Windows", replaces all of them on demand.
  • A new agent that does not start is replaced by the previous one.
  • New installs use the same update step, so they start on the current version.

Logs

  • All logs roll over at a size limit and keep the previous run: on the host in ~/.local/share/lsw/logs, in Windows in C:\ProgramData\LSW\logs.
  • Log levels per part in Settings, and a 30 minute debug switch.
  • The Log page shows every log: the manager, the agent, each window mirror, QEMU, the GPU driver and Windows' logs. Long lines wrap.
  • Collect logs builds one archive for bug reports, with settings that hold passwords or keys removed.
  • Clear all logs, on the host and in Windows.

Fixes

  • Word's window mirror could freeze after many popup windows opened and closed at once; its dialogs then never appeared and scrolling stopped working.
  • Right-click menus that use the Windows Explorer menu (WizTree, among others) opened behind their window.
  • The install view showed "Display output is not active" on hosts with a second GPU.
  • The VM finds the UEFI firmware on Ubuntu and Fedora as well as Arch.
  • lsw-manager --help crashed.

Known limits

  • Tested on an AMD Radeon RX 9070 XT host. Intel and NVIDIA hosts were not tested for this release.

LSW 0.2.0

Choose a tag to compare

@acceleration3 acceleration3 released this 02 Nov 09:25

Highlights

  • Faster, and no longer slowing down. Shared textures were never freed until the application closed, and the driver shipped with debug consistency checks that grew with every one, so applications like Lightroom slowed with use: photo switches grew from about 350 ms to over 600 ms. They now stay flat. Released Direct3D 12 textures also leave VRAM instead of staying until the application exits.
  • Guest RAM on huge pages. QEMU never gave the guest huge pages; it now does, which cuts CPU time in memory-heavy applications by about 10%.
  • Lightroom's Lens Blur keeps the GPU. Upload heaps past 1 GiB removed the Direct3D 12 device, and Lightroom turned hardware acceleration off.
  • Real driver versions. Applications that read the GPU driver's version (Lightroom showed 0.0.0.0 and called the GPU incapable) see the current Windows driver version for your GPU, looked up in the Microsoft Update Catalog.
  • Refresh rate. Windows runs at the monitor's refresh rate, or any rate the monitors support, changed while it runs, and the window mirror keeps the display in phase without changing its rate.
  • USB devices can be passed to the guest. A returned device leaves the guest at once without stalling it, and can be passed again once it has reset.
  • Host shutdown and reboot power the guest off at once rather than waiting on a graceful Windows shutdown.
  • Desktop latency: windows reach the compositor through lent pages copied by the GPU; input-to-screen with a full-screen Direct3D 9 cursor went from 57.5 ms median to about 45.
  • Open host files in Windows from a file manager or the command line; the app list is built from the Start menu; shared folders mount after a failed swap.
  • The system disk submits from QEMU's threads, which removes a stall of up to 88 ms every few seconds on btrfs.

Known limits

  • Tested on an AMD RX 9070 XT host. Intel Arc and NVIDIA hosts were not tested for this release.
  • QueryVideoMemoryInfo reports 0 MiB used in the guest, so applications that size their caches by it may keep growing them.

LSW 0.1.9

Choose a tag to compare

@acceleration3 acceleration3 released this 23 Oct 22:36
  • Window mirrors keep their frames on the GPU when the compositor runs on another GPU than the guest (a linear copy in system memory instead of pixels over the network).
  • Mirrors open on the monitor the manager is on, and a mirror dragged to another monitor keeps working instead of freezing.
  • A launched application's whole process tree is mirrored (Steam's windows, launchers and their helpers).
  • Direct3D 11 cross-adapter textures between the display GPU and a render-only GPU (Affinity's multi-GPU rendering no longer crashes).
  • Presents no longer show stale or partly drawn frames (Direct3D 9, 11 and DXGI swap chains).

🤖 Generated with Claude Code

LSW 0.1.8

Choose a tag to compare

@acceleration3 acceleration3 released this 19 Oct 15:12

0.1.8-2 (tag v0.1.8-2): the manager now starts a VM on its own host files. A VM defined by an earlier LSW or another build kept that build's QEMU and executor, so after an upgrade the guest drivers LSW installs could not talk to the host and Windows did not boot. Before each start the VM is now pointed at this install's QEMU, executor, DXVK and vkd3d-proton. The tarball attached here is the 0.1.8-2 build.

LSW 0.1.8, built from v0.1.8 (accel-virt lsw-v0.1.8, remotewin lsw-v0.1.8).

Host memory

  • The host needs no udmabuf any more: every API's GPU memory comes from one Vulkan memory source on the host.

GPU support

  • Direct3D 11 runs on Intel hosts.
  • Every host GPU is a device in OpenCL and Vulkan.
  • NVIDIA hosts share surfaces between APIs.
  • Device-loss recovery.
  • OpenCL 3.0 in full: binaries, IL, compile and link, event wait lists.

Applications and games

  • Affinity: WPF windows present, and Direct2D outlines rasterize as on Windows (target-independent rasterization in DXVK).
  • DaVinci Resolve: detects the GPU, enables OpenCL, and long sessions no longer run out of GPU memory on NVIDIA.
  • Dark Souls Remastered: stops leaking.
  • Resident Evil 4: D3D12 pipeline libraries, so the game starts.
  • Fullscreen Direct3D 9, multiplane overlays, and dynamic buffers on slices.

Mirroring

  • An Intel host's guest captures its screen at 60 fps.
  • Mirrors show the guest's frames sooner.

Guest agent

  • No longer writes a diagnostic log that grew without bound in C:\ProgramData\LSW.

Install

  • Windows Setup boots without "Press any key to boot from CD or DVD".

Validated with the GPU test matrix on AMD (RX 9070 XT, Radeon 610M), Intel Iris Xe and NVIDIA RTX 3070 Ti hosts: the probes, the D3D11/D3D12/Vulkan/OpenGL/OpenCL sample suites, OpenCL–OpenGL sharing, WGC capture, Affinity and Resolve, and replayed API traces from Affinity, Resolve, Dark Souls Remastered and Half-Life 2.

LSW 0.1.7

Choose a tag to compare

@acceleration3 acceleration3 released this 12 Oct 12:21

Mirrors show the guest's frames sooner and time each stage of the way. Resolve's window survives a restore. A host that is newer than the VM's GPU device now says to restart the VM, instead of quietly sending frames as pixels. Updating needs a full VM stop and start.

LSW 0.1.6

Choose a tag to compare

@acceleration3 acceleration3 released this 11 Oct 20:36
  • DaVinci Resolve runs on the GPU. It detects the paravirtualized GPU, makes its OpenCL context on it, and its viewers and scopes run there. The driver package now installs the AMD (ADL) and NVIDIA (NVAPI) identification libraries, which describe the GPU from what Windows already knows about it, and the OpenCL device reports the adapter's name, vendor and place on the PCI bus.
  • OpenCL can share with Direct3D 11. Contexts can be made from an application's Direct3D 11 device (cl_khr_d3d11_sharing), with OpenCL buffers and images over its buffers and textures.
  • More of what applications ask of OpenCL is answered: cl_khr_byte_addressable_store, AMD's free-memory query, clGetCommandQueueInfo, and a context sharing with OpenGL and Direct3D 11 at once.

LSW 0.1.5

Choose a tag to compare

@acceleration3 acceleration3 released this 11 Oct 16:14
  • Affinity renders correctly. Its canvas no longer shows white squares and the colour picker no longer piles up triangles: an integrated GPU's host said the application's memory was shared with the GPU, and the application read results from memory no GPU writes. Direct3D 9 surfaces written through a lock or UpdateSurface now reach the host.
  • OpenCL waits sleep instead of asking. The guest driver now wakes clFinish, clWaitForEvents, blocking transfers and event callbacks when the host finishes something. They no longer query the host on a timer, and the timer that remains is a real millisecond rather than a 15.6 ms system tick.
  • LSW keeps its half inside Windows current. On VMs made before this too, the manager updates the guest agent and the window mirror's guest half when they differ from what it ships. It also sets Windows' clock and time zone to the host's, and new installs use the host's time zone from the start.
  • Driver updates install. An update now installs when the guest's clock ran ahead of the signing certificate, and when the package has the same version the adapter already runs. An update that fails is offered again, and the Vulkan loaders are updated with it.
  • Window mirrors draw on the GPU the guest's surfaces are on, so a two-GPU host no longer copies every frame between them.

LSW 0.1.4

Choose a tag to compare

@acceleration3 acceleration3 released this 11 Oct 12:11
  • Windows in the language of its image. Setup was always told to use en-US, so an image without it (a UK one carries only en-GB) stopped at the language page. The wizard now lists the languages the ISO carries in a Language dropdown, and Setup, the locales and the keyboard use the one picked.
  • Driver updates from LSW updates. The manager compares the driver package it ships with the one in the guest and, when they differ, offers "Update the driver" on the Graphics page and the overview: it uploads the package and re-signs and installs it in the guest.
  • The display scale changes while Windows runs. Settings → Scaling applies at once, in Windows' own steps ("Match this desktop" at 1.2 is 125 %), instead of waiting for the next sign-in.
  • One shell per Windows session. The Console keeps one cmd.exe for the user and one for SYSTEM while the manager runs, so a cd holds when you leave the page and come back.
  • Minimised windows stay on the host. A minimised Store app (Calculator) no longer closes its mirror, and a maximised window restored from minimised comes back maximised at its own size.
  • Integrated GPUs named correctly. An AMD iGPU is "AMD Radeon(TM) Graphics" rather than a laptop part's name from the PCI ID database, and Intel names no longer repeat "Intel".
  • accel-virt: shared objects of every graphics API are kept per host GPU in the executor (ABI 16), and the guest driver images are built reproducibly.

LSW 0.1.3

Choose a tag to compare

@acceleration3 acceleration3 released this 11 Oct 01:31

Prebuilt x86_64 release, built in a clean Arch Linux userland for the generic x86-64 baseline. Unpacks to a usr/ tree; on Arch, install it as the AUR package lsw-bin.

  • Switching the machine to another host GPU leaves Windows with no driver for the display adapter, because the adapter takes the new GPU's PCI ID. The Graphics page now names the GPU and offers to install the driver for it, and the Overview shows the warning too. Previously it only reported that avgpu.sys was not running.

sha256 f94e6520d7caaaf52595cce63349b5575fe7e498ef077c0c5d4d3bbca03334b6