Skip to content

GUI: reduce macOS repaint and Dock preview overhead#745

Draft
moreaki wants to merge 2 commits into
VirtualBox:mainfrom
moreaki:agent/macos-frontend-repaint-overhead
Draft

GUI: reduce macOS repaint and Dock preview overhead#745
moreaki wants to merge 2 commits into
VirtualBox:mainfrom
moreaki:agent/macos-frontend-repaint-overhead

Conversation

@moreaki

@moreaki moreaki commented Jul 8, 2026

Copy link
Copy Markdown

Summary

Reduce macOS Qt frontend repaint overhead for VM display updates.

The change:

  • draws directly from QImage source rectangles instead of materializing a temporary QPixmap for each paint rectangle,
  • throttles live Dock preview updates,
  • avoids unnecessary full-surface backing-store fills on Qt 6/macOS.

Scope

This is a macOS frontend performance improvement, not part of the minimal functional Retina/HiDPI enablement tracked by #742.

The intended validation baseline for this PR is the functional/stability stack needed to run a Windows 11 ARM guest reliably on macOS/Arm with VMSVGA 3D and high-resolution modes enabled. It should be measured separately from #744 so the frontend repaint contribution is attributable.

Why

The macOS frontend was doing avoidable work for high-frequency guest display updates, which was especially visible with high-resolution Retina guest framebuffers.

Benchmark source

The reproducible benchmark suite used for final throughput validation is:

https://github.com/moreaki/dxmtbench

The suite runs browser-based WebGL/D3D-backed workloads inside the Windows guest, captures visual-output evidence, records throughput metrics, and exports machine-readable results. I will update this PR with isolated before/after dxmtbench results before treating it as a final performance submission.

Validation

  • Applied independently to origin/main.
  • git diff --check passes.
  • Rebuilt locally as part of the macOS/Arm GUI test build.
  • Runtime smoke-tested with a Windows 11 ARM guest at 5760x3240.

Refs #742.

Signed-off-by: Roberto Nibali <rnibali@gmail.com>
@oracle-contributor-agreement

Copy link
Copy Markdown

Thank you for your pull request and welcome to our community! To contribute, please sign the Oracle Contributor Agreement (OCA).
The following contributors of this PR have not signed the OCA:

To sign the OCA, please create an Oracle account and sign the OCA in Oracle's Contributor Agreement Application.

When signing the OCA, please provide your GitHub username. After signing the OCA and getting an OCA approval from Oracle, this PR will be automatically updated.

If you are an Oracle employee, please make sure that you are a member of the main Oracle GitHub organization, and your membership in this organization is public.

@oracle-contributor-agreement oracle-contributor-agreement Bot added the OCA Required At least one contributor does not have an approved Oracle Contributor Agreement. label Jul 8, 2026
@moreaki moreaki marked this pull request as ready for review July 8, 2026 08:09
Signed-off-by: Roberto Nibali <rnibali@gmail.com>
@moreaki moreaki marked this pull request as draft July 9, 2026 08:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OCA Required At least one contributor does not have an approved Oracle Contributor Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant