Repository navigation
Releases: cmspam/winq-emu
Release list
Alpha 10
What's New in Alpha 10
WHPX (host hypervisor) improvements
IA32_PATMSR sync â Linux uses PAT to mark virtio-gpu / Venus shared memory as Write-Combining. Previously the partition's PAT was not synchronised with the guest. Vulkan/OpenGL workloads that move significant GPU memory should be measurably faster.WHvAdviseGpaRange(Pin)for âĨ256 MiB regions (Windows 11 24H2+) â pin SLAT entries for the base RAM and the Venus 4 GiB hostmem region so the hypervisor doesn't demote 2 MiB / 1 GiB pages to 4 KiB under host memory pressure. Removes a "60 fps â 30 fps with no apparent cause" cliff under heavy graphics.- 5 ms cap on the WHPX inner exit loop â a guest spinning through cheap MMIO/CPUID/MSR exits during a Vulkan submit storm could keep a vCPU thread inside the hypervisor for tens of ms. Smoother frame pacing under heavy graphics.
UnimplementedMsrAction = IgnoreWriteReadZero(Windows 11 24H2+) â Linux's boot-time MSR probing is now handled in-kernel instead of trapping to userspace.FastHypercallOutputsynthetic feature on x86 â every Hyper-V hypercall (TLB shootdown, IPI cluster) now returns via registers instead of a guest-physical output page.
Graphics / virglrenderer
VkAccelerationStructureKHRdeferred destroy â extends the Intel-ICD-handle-recycle workaround to ray-tracing AS handles. RT games (Quake II RTX, Portal RTX, vkd3d-proton) destroy and recreate AS every frame as TLAS rebuilds.- Four upstream cherry-picks: NULL-resource deref in
virgl_renderer_resource_map_fixed(guest-triggerable crash),vrend_renderer_initcleanup order on init failure,vkr_allocatorinstance NULL onvkCreateInstancefailure, cursorY_0_TOPorientation flip.
Launcher / UX
- Multi-disk support â the Disk Image section is now a table of (Path, Format, Interface) rows. Add as many qcow2/raw images as you want; pick virtio / scsi / ide per disk. The first disk boots by default. Exported
.batfiles round-trip multiple-drivelines. WINQ_DIAG=1umbrella diagnostic flag â one switch turns on every per-module diagnostic stream and routes the log to%LOCALAPPDATA%\winq-emu\virglrenderer.log. Replaces theVIRGL_VIDEO_DIAG/VIRGL_VIDEO_D3D11_DEBUG/VIRGL_LOG_FILE/VIRGL_LOG_LEVELmatrix when capturing a bug report.- Tighter VM tab layout, taller default form size so CPU & MEMORY stays visible, AutoSize notes in Folder Sharing and Experimental tabs no longer get clipped.
Compatibility
The 24H2-gated changes (UnimplementedMsrAction, WHvAdviseGpaRange) probe at startup and silently fall back on older Windows. No regression on Windows 10 / 11 23H2 â the hypervisor behaves as before.
Base versions
- QEMU
v11.0.0+ the alpha 10 patch series - virglrenderer
1.3.0+ the alpha 10 patch series
Same-host snapshot/savevm is still blocked at the WHPX level â that's targeted for a future alpha.
Alpha 9
What's New in Alpha 9
Alpha 9 is a Vulkan-side perf release. No QEMU code changes â same v11.0.0 base. Three fixes in virglrenderer that hit the Vulkan WSI / dispatcher hot path on Windows hosts:
vkWaitSemaphoreResourceMESAandvkResetFenceResourceMESAno longer block the dispatcher per WSI present. Mesa's Venus client calls these viavn_async_*(fire-and-forget) on every Vulkan WSI present. Linux's host implementation is non-blocking; Alpha 8 and earlier did synchronous GPU waits + Win32 handle export/close ceremonies on each call, stalling the entire context's command pipeline for the GPU's frame time. Now they match Linux semantics.- Sub-millisecond Windows timer resolution.
virgl_renderer_initcallstimeBeginPeriod(1)and the ring relax path usesCreateWaitableTimerEx HIGH_RESOLUTION. Without these, microsecond-scale dispatcher sleeps were being rounded up to the 15.625Â ms system timer tick â the dispatcher would oversleep into the next frame and miss bursts of guest commands. - Ring monitor + per-queue sync threads register with MMCSS ("Pro Audio"). Less likely to be preempted by background work; reduces frame-time jitter on Vulkan workloads.
Notes on stutters
If you still see periodic 14â17 ms stutters at roughly 60 Hz cadence in fullscreen Vulkan apps, that's KWin compositing contending with the guest for GPU time. Enable KWin's "block compositing for fullscreen" in System Settings â Display & Monitor â Compositor (or set WindowsBlockCompositing=true under [Compositing] in ~/.config/kwinrc) for direct scanout. Adding C:\WINQ-EMU\bin to Windows Defender's exclusion list also helps eliminate the rarer but larger 100Â ms+ outliers caused by real-time AV scanning.
Download
Single installer: WINQ-EMU-Alpha9-Setup.exe (52.6 MB)
SHA256: a839d5fd4b310b78c445b30eb90d59c932414e2ad9811d8515b2262485b02b2d
Alpha 8
What's New in Alpha 8
- Rebased on QEMU 11.0.0 (final release, up from the 11.0.0-rc3 snapshot used in Alpha 7).
- Rebased on the virglrenderer 1.3.0 stable tag (replacing the development-tip snapshot used in Alpha 7), so the patch series now sits on a tagged, reproducible upstream tree.
- No functional changes vs Alpha 7 â same Windows-host Venus + virtio-gpu + 9pfs + D3D11 video decode feature set.
What's in this release
A full Linux desktop on Windows with real Vulkan GPU acceleration:
- Better WHPX â full
-cpu hostpassthrough (not available in upstream QEMU), hybrid CPU P-core/E-core topology detection. - Venus Vulkan GPU forwarding â Linux VM uses your real GPU for Vulkan via virtio-gpu, no software rasterization.
- Zink (GL-over-Vulkan) on native Wayland and X11/XWayland, via the Windows dma-buf shim.
- virtio-9p folder sharing â share Windows folders with the Linux guest from the launcher's Folder Sharing tab.
- VA-API hardware video decode (experimental, opt-in from the Experimental tab) â H.264 / HEVC / VP9 / AV1 routed through the host GPU's D3D11 video decoder pipeline. The vaapi-copy path (mpv, VLC, Haruna, GStreamer, ffmpeg, Firefox) works reliably; the zero-copy path used by Chromium-based browsers is still broken.
System requirements
- Windows 10/11 with Hypervisor Platform enabled (Settings â Apps â Optional Features â More Windows Features â check "Windows Hypervisor Platform")
- A GPU with current Vulkan drivers (Intel, AMD, or NVIDIA)
- A Linux guest with Mesa 24.0+ for Vulkan; Mesa 26.0+ for experimental VA-API decode
Known limitations
- EFI boot causes a severe Vulkan slowdown â use BIOS boot. The bundled
launch-vm.batdefaults to BIOS. - VA-API zero-copy (Chromium browsers,
mpv --hwdec=vaapiwithout-copy) shows black or garbled video; use--hwdec=vaapi-copyin mpv, or disable hardware video acceleration in Chromium browsers.
Source branches
- QEMU fork:
winq-emu-alpha8on top of upstreamv11.0.0 - virglrenderer fork:
winq-emu-alpha8on top of upstream tagvirglrenderer-1.3.0
Alpha 7
What's new
- Zink on Wayland â Zink (GL-over-Vulkan) now renders correctly under native Wayland compositors, not only X11/XWayland. A Windows dma-buf shim in virglrenderer synthesizes
VK_EXT_external_memory_dma_bufandVK_EXT_image_drm_format_modifieron top of the host Vulkan ICD so guest Wayland compositors can import Vulkan-allocated surfaces. No user action needed beyond settingMESA_LOADER_DRIVER_OVERRIDE=zinkin your guest session if you want to force it for specific apps. - VA-API moved to Experimental â hardware video decode is now off by default and lives in a new Experimental tab in the launcher. The copy path remains reliable in mpv (
--hwdec=vaapi-copy), VLC, Haruna, and GStreamer; the zero-copy path used by Chromium-based browsers is still broken and is tracked as a separate project. - Rebased on latest upstream QEMU + virglrenderer.
Requirements
- Windows 10/11 with "Windows Hypervisor Platform" enabled
- A GPU with up-to-date Vulkan drivers (Intel, AMD, or NVIDIA)
- Linux guest with Mesa 24.0+ (26.0+ if enabling experimental VA-API)
Install
Run WINQ-EMU-Alpha7-Setup.exe. Default install location is C:\WINQ-EMU. The installer creates a vm\ subdirectory â drop your disk.qcow2 there and double-click WINQ-EMU.exe or launch-vm.bat.
Known issues
- VA-API zero-copy (Chromium, mpv
--hwdec=vaapiwithout-copy) shows black or garbled video. Disable hardware video acceleration in Chromium browsers, or use mpv's--hwdec=vaapi-copyinstead. - EFI boot causes a severe Vulkan slowdown; use BIOS boot.
Alpha 6
WINQ-EMU Alpha 6
Two new user-facing features land in this release.
New: virtio-9p folder sharing (host â guest)
The GUI launcher (WINQ-EMU.exe) has a new Folder Sharing tab. Add one or more host folders with a mount tag per folder, then save or launch the VM. Shares are forwarded over virtio-9p.
Inside the Linux guest, mount a share:
sudo mkdir -p /mnt/<tag>
sudo mount -t 9p -o trans=virtio,version=9p2000.L <tag> /mnt/<tag>
Or add to /etc/fstab for auto-mount at boot:
<tag> /mnt/<tag> 9p trans=virtio,version=9p2000.L,nofail,_netdev 0 0
Bidirectional: changes on either side appear on the other.
New: VA-API hardware video decode (H.264 / HEVC / VP9 / AV1)
Mesa's virgl gallium VA driver in the Linux guest now forwards decode commands to virglrenderer on the Windows host, which runs the actual decode on ID3D11VideoDecoder (DXVA) against your GPU. libva consumers pick this up automatically.
Supported codecs:
| Codec | Profiles |
|---|---|
| H.264 | Constrained Baseline, Main, High (8-bit 4:2:0) |
| HEVC | Main (8-bit), Main10 (10-bit) |
| VP9 | Profile 0 (8-bit), Profile 2 (10-bit) |
| AV1 | Main Profile 0 (8-bit) |
Confirmed working: ffmpeg, mpv, Haruna, VLC, GStreamer.
Verify inside the guest with vainfo.
â Known issue: Chromium-based browsers
Hardware video decode does not work correctly in Chromium-based browsers (Chrome, Brave, Edge, Opera, Vivaldi). Chromium's VaapiVideoDecoder routes the exported dma-buf through ANGLE + Skia Vulkan; that sampler chain produces garbled output (vertical stripes, flashes of unrelated GPU memory, stuck frames) instead of the decoded video. The VA-API decode itself is correct â byte-exact against the software decoder for all four codecs â the break is on Chromium's GL-EGL import side.
Workaround: disable hardware video acceleration in the browser.
- Open
chrome://settings/systemand uncheck "Use hardware acceleration when available", or - Open
chrome://flags, search for "hardware-video-decoding", set to Disabled.
Firefox and every other tested consumer (ffmpeg, mpv, Haruna, VLC) work correctly with hardware acceleration enabled.
VP9 minor drift improvement
Host-side use_prev_in_find_mv_refs now uses the canonical 4-term AND (including prev_show_frame) per the VP9 spec and Mesa's picture_vp9.c. Slightly fewer MV-prediction artifacts in altref-heavy streams. A full protocol extension for alt_quant / alt_lf / segmentation update data remains pending for a future release.
Download
Grab WINQ-EMU-Alpha6-Setup.exe from the assets below.
Source
- Launcher + installer:
cmspam/winq-emu@alpha6 - QEMU fork:
cmspam/winq-emu-qemu@alpha6 - virglrenderer fork:
cmspam/winq-emu-virglrenderer@alpha6
WINQ-EMU Alpha 5
What's New in Alpha 5
- SDL display by default: Switched from custom win32-gl to enhanced SDL display, which is the most performant display backend available
- USB tablet fix: Fixed SDL freeze when guest compositor (KDE, GNOME) initializes mouse input â deferred mouse mode changes to the SDL thread
- Dynamic refresh rate: EDID refresh rate now automatically matches the host monitor's refresh rate
- DPI awareness: SDL window is now per-monitor DPI aware, preventing Windows from upscaling
- Disk image tools:
qemu-imgis now bundled with the installer for disk image creation from the GUI - USB mouse fix: Configurations generated by the GUI correctly include
-usb -device usb-tablet - Portable configs: Saved .bat files use absolute paths, working from any directory
- Debug cleanup: Removed debug logging and temp file creation from virglrenderer
- Rebased on QEMU v11.0.0-rc3 and latest upstream virglrenderer
Requirements
- Windows 10/11 with "Windows Hypervisor Platform" enabled
- A GPU with Vulkan drivers (Intel, AMD, or NVIDIA)
- A Linux VM image with Mesa 24.0+ (Fedora 40+, Ubuntu 24.04+, Arch, CachyOS, etc.)
Install
Run the installer. Default install location is C:\WINQ-EMU.
Full Changelog
WINQ-EMU Alpha 4
What's New
- Keyboard fix: Dynamic keyboard layout detection for OEM keys (backslash, brackets, semicolon, etc.). Uses
MapVirtualKeyto get the AT set 1 scan code for the user's actual keyboard layout, then looks it up in the unambiguousatset1-to-qcodetable. Works correctly on US, UK, ISO, JIS, and all other keyboard layouts. - Install location: Default install directory changed to
C:\WINQ-EMUinstead of%LOCALAPPDATA%\WINQ-EMU - WINQ-EMU icon: Application icon now embedded in the QEMU executable
Installation
Download and run WINQ-EMU-Alpha4-Setup.exe. The installer requires administrator privileges (for the C:\ install location).
Requirements
- Windows 10/11 with Hyper-V / WHPX enabled
- A GPU with Vulkan support
- A Linux qcow2 disk image (Fedora 40+, Ubuntu 24.04+, Arch, CachyOS, etc.)
WINQ-EMU Alpha 3
WINQ-EMU Alpha 3
What's new
- Native Win32 display driver â Custom WGL-based display, more performant and reliable than QEMU's SDL/GTK. USB tablet support, guest cursor forwarding, keyboard capture (Win key, Alt+Tab pass through to guest).
- Better WHPX support â P-core/E-core hybrid CPU topology detection, sub-millisecond timer resolution (0.5ms via NtSetTimerResolution)
- Window size persistence â Remembers your window size and fullscreen state between sessions
- Close confirmation â Prompts before closing with Power Off / Force Kill / Cancel options
Includes everything from Alpha 2
- QEMU with WHPX
-cpu hostpassthrough - Venus Vulkan GPU forwarding via virtio-gpu
- virgl OpenGL forwarding
- Graphical VM launcher
- Virtio sound and networking
Requirements
- Windows 10/11 with "Windows Hypervisor Platform" enabled
- A GPU with Vulkan drivers
- A Linux VM image with Mesa 24.0+
Notes
- Use BIOS boot, not EFI (EFI has a Vulkan performance issue)
- Use
-display win32-glfor the native display (default in launcher/scripts)
WINQ-EMU Alpha 2
WINQ-EMU Alpha 2
The best way to run a full graphical Linux desktop on Windows â with real Vulkan GPU acceleration.
What's new in Alpha 2
- Configurable refresh rate: Set via the GUI launcher or
-display sdl,gl=on,refresh-rate=120000 - Much snappier display: All polling intervals reduced to 1ms â GUI refresh, fence polling, USB HID, scanout flush
- Graphical launcher: Auto-detects your monitor refresh rate, editable refresh rate field
- Debug output removed
Includes everything from Alpha 1
- QEMU with WHPX
-cpu hostpassthrough (not available in upstream QEMU) - Venus Vulkan GPU forwarding via virtio-gpu
- virgl OpenGL forwarding
- Graphical VM launcher
- Virtio sound and networking
- All runtime DLLs and firmware bundled
Requirements
- Windows 10/11 with "Windows Hypervisor Platform" enabled
- A GPU with Vulkan drivers
- A Linux VM image with Mesa 24.0+
Notes
- Use BIOS boot, not EFI (EFI has a Vulkan performance issue)
- This is an alpha release â expect some rough edges
WINQ-EMU Alpha 1
WINQ-EMU Alpha 1
Optimized QEMU for Windows with Venus Vulkan GPU acceleration.
What's included
- QEMU with WHPX
-cpu hostpassthrough (not available in upstream QEMU) - Venus Vulkan GPU forwarding via virtio-gpu
- virgl OpenGL forwarding
- Graphical VM launcher
- Virtio sound, networking, 120Hz display
- All runtime DLLs and firmware bundled
Requirements
- Windows 10/11 with "Windows Hypervisor Platform" enabled
- A GPU with Vulkan drivers
- A Linux VM image with Mesa 24.0+
Notes
- Use BIOS boot, not EFI (EFI has a Vulkan performance issue)
- Zink (GL-over-Vulkan) works on X11/XWayland only, not native Wayland
- This is an alpha release â expect some rough edges