Skip to content

[Req]: Improve Windows guest Retina/HiDPI support and VMSVGA throughput on macOS ARM #742

Description

@moreaki

Problem

Windows 11 ARM guests on macOS/Arm hosts are currently awkward to use with Retina/HiDPI displays and VMSVGA 3D enabled.

The local test system showed these specific issues:

  • Setting VMSVGA VRAM to 256 MiB simply did not work with the current ARMv8 PCI MMIO layout. The 256 MiB VRAM BAR left insufficient low 32-bit PCI MMIO space for the VMSVGA3 MMIO BAR, so the Windows guest display stack did not initialize normally.
  • A 5760x3240 Retina guest mode needs the additional VRAM. With the smaller practical VRAM configuration, resizing beyond a certain maximum screen size could produce gray or colorful display artifacts, consistent with insufficient framebuffer/surface memory for the requested mode.
  • macOS fullscreen/autoresize requested logical host sizes instead of the Retina backing-pixel guest mode, so resizing did not scale correctly and the guest did not reliably enter true Retina resolutions.
  • The Windows WDDM Guest Additions mode dropdown exposed the native Retina mode and then mostly legacy 4:3/5:4 fallback modes, with no useful 16:9 intermediate Retina modes.
  • The macOS/Arm VMSVGA DX11 output path spent too much CPU on repeated readbacks and frontend repaint work.

Patch Series

I have split the work into seven pull requests so each subsystem can be reviewed independently:

  1. Expand ARMv8 PCI 32-bit MMIO to support 256 MiB VMSVGA VRAM.
  2. Reduce VMSVGA DX11 readback work and skip unchanged output updates.
  3. Reduce macOS Qt repaint and Dock preview overhead.
  4. Request Retina backing-size guest modes in macOS fullscreen.
  5. Add supporting Darwin/Qt build compatibility fixes.
  6. Add supporting DXMT/LLVM 17 build compatibility fixes.
  7. Add WDDM aspect-preserving Retina intermediate video modes.

Validation

Local validation was done on a Mac Studio with an Apple Studio Display, running macOS ARM64 with a Windows 11 ARM guest:

  • vram=256
  • 3D acceleration enabled
  • VMSVGA VRAM BAR at 0xe0000000..0xefffffff
  • VMSVGA3 MMIO BAR at 0xf0400000..0xf07fffff
  • Guest Additions run level 3
  • guest mode 5760x3240x32

Measured active CPU in a repeated Windows Explorer open/close workload:

Run Resolution Active CPU avg
Official VirtualBox 7.2.12 baseline 3840x2160 257.3%
Local test build with PRs #743-#746 and #749, repeat 1 3840x2160 95.1%
Local test build with PRs #743-#746 and #749, repeat 2 3840x2160 97.6%
Local test build with PRs #743-#746 and #749 at Retina backing resolution, repeat 1 5760x3240 77.5%
Local test build with PRs #743-#746 and #749 at Retina backing resolution, repeat 2 5760x3240 68.9%

For the WDDM mode-list change, I also validated the same intermediate modes through the existing driver's custom-mode registry path. Windows Display Settings exposed:

  • 5120x2880
  • 3840x2160
  • 3200x1800
  • 2880x1620
  • 2560x1440
  • 1920x1080

Notes

The Windows Guest Additions WDDM driver patch still needs final compile/install validation in a Windows WDK environment. The local macOS ARM64 build tree cannot build VBoxWddm because PATH_SDK_WINSDK10 is not configured.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions