Skip to content

Releases: cmspam/winq-emu

Alpha 10

Choose a tag to compare

@cmspam cmspam released this 27 Apr 06:01

What's New in Alpha 10

WHPX (host hypervisor) improvements

  • IA32_PAT MSR 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.
  • FastHypercallOutput synthetic feature on x86 — every Hyper-V hypercall (TLB shootdown, IPI cluster) now returns via registers instead of a guest-physical output page.

Graphics / virglrenderer

  • VkAccelerationStructureKHR deferred 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_init cleanup order on init failure, vkr_allocator instance NULL on vkCreateInstance failure, cursor Y_0_TOP orientation 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 .bat files round-trip multiple -drive lines.
  • WINQ_DIAG=1 umbrella diagnostic flag — one switch turns on every per-module diagnostic stream and routes the log to %LOCALAPPDATA%\winq-emu\virglrenderer.log. Replaces the VIRGL_VIDEO_DIAG / VIRGL_VIDEO_D3D11_DEBUG / VIRGL_LOG_FILE / VIRGL_LOG_LEVEL matrix 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

Choose a tag to compare

@cmspam cmspam released this 26 Apr 04:49

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:

  • vkWaitSemaphoreResourceMESA and vkResetFenceResourceMESA no longer block the dispatcher per WSI present. Mesa's Venus client calls these via vn_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_init calls timeBeginPeriod(1) and the ring relax path uses CreateWaitableTimerEx 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

Choose a tag to compare

@cmspam cmspam released this 25 Apr 10:30

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 host passthrough (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.bat defaults to BIOS.
  • VA-API zero-copy (Chromium browsers, mpv --hwdec=vaapi without -copy) shows black or garbled video; use --hwdec=vaapi-copy in mpv, or disable hardware video acceleration in Chromium browsers.

Source branches

Alpha 7

Choose a tag to compare

@cmspam cmspam released this 19 Apr 23:55

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_buf and VK_EXT_image_drm_format_modifier on top of the host Vulkan ICD so guest Wayland compositors can import Vulkan-allocated surfaces. No user action needed beyond setting MESA_LOADER_DRIVER_OVERRIDE=zink in 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=vaapi without -copy) shows black or garbled video. Disable hardware video acceleration in Chromium browsers, or use mpv's --hwdec=vaapi-copy instead.
  • EFI boot causes a severe Vulkan slowdown; use BIOS boot.

Alpha 6

Choose a tag to compare

@cmspam cmspam released this 17 Apr 23:47

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/system and 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

WINQ-EMU Alpha 5

Choose a tag to compare

@cmspam cmspam released this 12 Apr 18:23

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-img is 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

alpha4...alpha5

WINQ-EMU Alpha 4

Choose a tag to compare

@cmspam cmspam released this 11 Apr 02:46

What's New

  • Keyboard fix: Dynamic keyboard layout detection for OEM keys (backslash, brackets, semicolon, etc.). Uses MapVirtualKey to get the AT set 1 scan code for the user's actual keyboard layout, then looks it up in the unambiguous atset1-to-qcode table. Works correctly on US, UK, ISO, JIS, and all other keyboard layouts.
  • Install location: Default install directory changed to C:\WINQ-EMU instead 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

Choose a tag to compare

@cmspam cmspam released this 09 Apr 16:46

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 host passthrough
  • 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-gl for the native display (default in launcher/scripts)

WINQ-EMU Alpha 2

Choose a tag to compare

@cmspam cmspam released this 08 Apr 20:16

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 host passthrough (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

Choose a tag to compare

@cmspam cmspam released this 08 Apr 18:52

WINQ-EMU Alpha 1

Optimized QEMU for Windows with Venus Vulkan GPU acceleration.

What's included

  • QEMU with WHPX -cpu host passthrough (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