Skip to content

qemu: advertise the missing mac99 display modes - #7941

Open
giovariot wants to merge 1 commit into
utmapp:mainfrom
giovariot:utm-issue-7683
Open

giovariot wants to merge 1 commit into
utmapp:mainfrom
giovariot:utm-issue-7683

Conversation

@giovariot

@giovariot giovariot commented Oct 5, 2026 •

Copy link
Copy Markdown

Fixes the Mac OS guest mode list on the mac99 machine so that the resolutions QEMU already advertises in the EDID — plus the classic Apple display modes — appear in Monitors preferences.

Why

The native driver used by the mac99 VGA device (QemuVga) builds its mode list from the EDID generated by QEMU. It reads the established timing bitmaps, the 0xF7 "Established Timings III" bitmap and the CEA-861 video data block, but not the standard timing section. In edid_fill_modes() the 0xF7 bit of a mode was only set once the eight standard timing slots were full, so 1280x960, 1280x1024, 1440x900, 1600x1200, 1680x1050 and 1920x1200 were advertised as standard timings only and never showed up in the guest. 2560x1440, the Apple 30" 2560x1600 and other display modes were not in the mode table at all.

Changes

  • patches/qemu-10.0.12-utm.patch: new patch that always sets the 0xF7 bit for modes that define one, and adds 1152x864, 2560x1440, 2560x1600, 1280x854 and 1600x1024 through the 0xF7 bitmap, plus the Apple 832x624 and 1152x870 established timings.
  • patches/data/qemu-10.0.12-utm/pc-bios/qemu_vga.ndrv: the four matching entries in edidExtStdVModes (indexes 40..43), a data-only change to the driver binary shipped in pc-bios.

The driver filters out modes larger than the mapped framebuffer, so 2560x1600 and the 4K+ modes only appear with a large enough VgaRamMib (32/64 MB); 2560x1440 fits in the 16 MB default.

Testing

Testing: Tested by a human on macOS 27.0.1 (26A434), Mac Apple M4, with a Mac OS X 10.4.8 guest on QEMU mac99 (ppc). Before the change 2560x1440 was missing from Monitors (and so were 1280x960, 1280x1024, 1440x900, 1600x1200, 1680x1050 and 1920x1200); after the change they all appear, can be selected and work.

The author acknowledges that this change has been tested and/or reviewed by a human in accordance with UTM's AI contribution guidelines.

Resolves #7683

The Mac OS native driver used by the mac99 VGA device (QemuVga) takes its
mode list from the EDID generated by QEMU: it reads the established timing
bitmaps, the 0xF7 "Established Timings III" bitmap and the CEA-861 video
data block, but not the standard timing section.

edid_fill_modes() only sets the 0xF7 bit of a mode once the eight standard
timing slots are full, so 1280x960, 1280x1024, 1440x900, 1600x1200,
1680x1050 and 1920x1200 end up as standard timings only and never show up
in Monitors.

Set the 0xF7 bit for every mode that defines one and add the display modes
that were missing from the table: 1152x864, 2560x1440, 2560x1600,
1280x854 and 1600x1024 through the 0xF7 bitmap, plus the Apple 832x624 and
1152x870 established timings. The QemuVga driver shipped in pc-bios gains
the matching entries in edidExtStdVModes (data only).

Refs utmapp#7683

Assisted-by: DeepSeek:deepseek-v4.1-flash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Old Mac OS X 10.4.8 install missing some resolutions

1 participant