Skip to content

v0.16 — KosmicKrisp as an opt-in Vulkan driver; lower CPU at the 60 fps cap

Latest

Choose a tag to compare

@github-actions github-actions released this 19 Oct 18:09
· 40 commits to master since this release

macOS (Apple Silicon and Intel) release; ad-hoc-signed xemu.app for macOS 14+.

Mesa's KosmicKrisp Vulkan driver ships as an opt-in beside MoltenVK, which stays the default. The release also has less CPU at the 60 fps cap, faster streaming in deterministic runs, renderer fixes and x86_64 TCG work for Windows.

Changes

  • KosmicKrisp (Mesa 26.3.0-rc1) opt-in: Settings > Display > Vulkan driver > KosmicKrisp, then restart (or [display.vulkan] driver = 'kosmickrisp' in xemu.toml). Needs macOS 26 on Apple Silicon; elsewhere Settings shows why MoltenVK runs. Against MoltenVK it peaks 0.4-0.6 GB lower and applies the NV2A texture LOD bias that MoltenVK drops. If it crashes while starting, the next launch falls back to MoltenVK with a notice until you pick it again.
  • KosmicKrisp known issues: more shader-compile hitches on first visits to an area (11 against MoltenVK's 6 on a cold streaming walk); under heavy host load an occasional occlusion test reads back as empty; wireframe draws filled; the first launch of a new build takes 1.6-2.2 s longer; tested on an M2 Ultra only. Auto moves to KosmicKrisp only once a later Mesa clears these.
  • Lower CPU at the 60 fps cap on MoltenVK: guest triangle fans are built on the CPU instead of by a per-draw compute pass, so heavy-f1 uses 9.9 and W2 8.1 points of a core less than v0.15.3.
  • Fewer pipeline compiles in streaming areas: a 40 s walk now creates about 104 pipelines instead of 404-485, and with a warm cache its slowest compile fell from 136 ms to 5 ms on MoltenVK (118 ms to 10 ms on KosmicKrisp).
  • Renderer fixes: a draw after a clear could run on the clear pipeline; depth bias and blend constants could go stale on Mesa drivers.
  • Streaming: when the guest reloads its page tables, unchanged TLB entries now survive (deterministic stream-e2 -6.6% host cycles per frame; normal-mode walk -2.2% CPU).
  • Deterministic (headless) runs against v0.15.3: heavy-f1 -1.6% and stream-e2 -6.1% host cycles per frame. Offscreen Vulkan runs are 36-72% faster (the pusher runs on the vCPU).
  • Windows and other x86_64 hosts: x87 stack bookkeeping deferred, x87 memory operands read straight from the guest page, and TLB walks shared within straight-line code: 18% fewer host instructions in a heavy-f1 frame's translated code (measured under Rosetta; Windows timings to come). The upstream DSP engine those hosts run copies DMA and mixbuffer data in bulk (about -3% host cycles per frame).
  • Upstream xemu through v0.8.137-22: Vulkan 1.4, 2D blits and textures that share memory with rendered surfaces no longer show stale data (Tron 2.0), X1A7 surface clears, and Help > Report GitHub Title Issue, which opens a prefilled issue on this fork's tracker.
  • CI: the Roswell tests run a hard-FPU Windows leg that now gates, and the Linux leg no longer fails when the ffmpeg download does.

Validation: null-renderer goldens unchanged on the CI-built app (heavy-f1, stream-e2, cold boot), and its KosmicKrisp offscreen digests match the gate's; MoltenVK offscreen digests and screendumps unchanged by the renderer changes; KosmicKrisp 30-minute soak with a flat footprint and no device loss; xbox test suite 9/9; CI green on all platforms including the Roswell tests.

Full Changelog: v0.15.3...v0.16