Beschränkung der HiDPI-Auflösung bei externen 4K-Displays auf Apple-Silicon-Chips M4 und M5
(smcleod.net)- Bei der M4-/M5-Generation wird der 3840×2160@2x-HiDPI-Modus auf externen 4K-Monitoren nicht unterstützt; möglich ist höchstens 3360×1890
- Diese Beschränkung entsteht durch eine Änderung der Firmware-Architektur des Display Coprocessor (DCP) und ist kein Hardware-Leistungsproblem
- Beim M5 Max wurde das Framebuffer-Budget pro Pipe neu zugewiesen, wodurch sich die Breite einer Single-Stream-Pipe auf 6720 Pixel verringert
- Verschiedene Ansätze wie EDID-Anpassungen, Portwechsel oder Änderungen an Treibereigenschaften wurden ausprobiert, ohne Wirkung
- Die einzige vollständige Lösung ist derzeit, dass Apple die DCP-Firmware korrigiert; als Workaround lässt sich 2x HiDPI vorübergehend per Virtual-Display-Mirroring realisieren
Analyse der HiDPI-Beschränkung externer 4K-Displays bei Apple Silicon M4/M5
- Bei Apple Silicon der Generationen M4 und M5 wird für externe 4K-Monitore kein vollständiger 2x-HiDPI-Modus (3840×2160@2x) bereitgestellt
- Der maximale HiDPI-Modus ist auf 3360×1890 begrenzt, sodass das bei früheren Generationen (M2/M3) mögliche 3840×2160 HiDPI nicht mehr verfügbar ist
- Nutzer müssen sich zwischen unscharfem Text im Nicht-HiDPI-Modus oder scharfer, aber verkleinerter Arbeitsfläche entscheiden
- Diese Begrenzung beruht nicht auf Hardware-Limits, sondern auf Änderungen an der Firmware-Architektur des Display Coprocessor (DCP)
- Der M5 Max unterstützt laut Spezifikation 8K@60Hz, aber die vom DCP gemeldeten Fähigkeiten entsprechen denen des M2 Max
- Bei der M4-/M5-Generation wurde das Framebuffer-Budget pro Pipe neu zugewiesen, wodurch das Budget des Standard-4K-Pfads von 7680 Pixel auf 6720 Pixel reduziert wurde
- Die Disassemblierung der DCP-Firmware zeigt, dass der Wert 6720 (0x1A40) als hartkodierte Konstante vorhanden ist
Testumgebung und Vergleichsergebnisse
| Punkt | M5 Max (Problem vorhanden) | M2 Max (funktioniert korrekt) |
|---|---|---|
| Chip | Apple M5 Max | Apple M2 Max |
| Modell-ID | Mac17,6 | Mac14,6 |
| GPU-Kerne | 40 | 38 |
| macOS | 26.4 (25E246) | 26.4 (25E246) |
| Display | LG HDR 4K 32UN880 | LG HDR 4K 32UN880 |
| Verbindung | USB-C/Thunderbolt (HBR3, 8.1Gbps, 4 lanes) | identisch |
| Maximaler HiDPI-Modus | 3360×1890 | 3840×2160 |
- Auf beiden Systemen sind DCP-Parameter wie
MaxActivePixelRate,MaxW,MaxHundMaxBpcidentisch - In der Ausgabe von
system_profilerwird beim M5 Max der Backing Store als 6720×3780 und die UI als 3360×1890 HiDPI angezeigt - Auch in der Liste der
HiDPI modesfehlt der Eintrag 3840×2160@2x
Änderungen an Framebuffer- und Pipe-Struktur
- Der M2 Max verwendet ein einzelnes Budget pro Controller (
MaxSrcRectWidth=7680) - Beim M5 Max wurde auf eine Budgetstruktur pro Sub-Pipe umgestellt (
MaxSrcRectWidthForPipe=(6720,7680,7680,7680))- Single-Stream-4K-Ausgabe verwendet nur Sub-Pipe 0 (6720)
- 8K-Ausgabe verwendet zwei Sub-Pipes (0 und 2)
- Dadurch kann 4K HiDPI (Backing Store 7680×4320) nicht erzeugt werden, weil das Budget von Sub-Pipe 0 überschritten wird
| Sub-Pipe | MaxSrcRectWidth | Verwendung |
|---|---|---|
| 0 | 6720 | Single-Stream (Standard-Display) |
| 1–3 | 7680 | Multi-Pipe (z. B. 8K) |
- Vergleich von
MaxVideoSrcDownscalingWidthController MaxSrcRectWidthForPipe[0] MaxVideoSrcDownscalingWidth Verhältnis Internes Display 5120 10744 2.1x Externes Display 6720 6720 1.0x - Das interne Display hat Spielraum im Scaler, das externe nicht, daher ist 3840×2160 HiDPI nicht möglich
MaxSrcRectWidthForPipeundMaxVideoSrcDownscalingWidthwerden beim Laden des Treibers festgelegt und können zur Laufzeit nicht geändert werden- Auch bei Portwechsel, Clamshell-Modus oder EDID-Anpassungen bleibt der Wert bei 6720
Analyse der DCP-Firmware
- Die Firmware-Dateien liegen unter
/System/Volumes/Preboot/<UUID>/restore/Firmware/dcp/; der M5 Max verwendett605xdcp.im4p- Sie ist mit LZFSE komprimiert (4.1MB → 16.4MB), aber nicht verschlüsselt und kann mit
img4toolextrahiert werden
- Sie ist mit LZFSE komprimiert (4.1MB → 16.4MB), aber nicht verschlüsselt und kann mit
- HiDPI-relevante Eigenschaften wie
MaxVideoSrcDownscalingWidth,MaxSrcRectWidthForPipe,IOMFBMaxSrcPixelsundExternalAppleLooksind alle in dieser Firmware definiert - Die Funktion
IOMFB::UPPipe::verify_downscaling(SwapRequest *)validiert die angeforderte Quellbreite anhand vonMaxVideoSrcDownscalingWidth - Ergebnisse der Ghidra-Analyse
- Externes Display, Sub-Pipe 0:
0x1A40(6720) - Sub-Pipes 1–3:
0x1E00(7680) - Internes Display, Sub-Pipe 0:
0x1400(5120) - Höhe aller Sub-Pipes:
0x1200(4608)
- Externes Display, Sub-Pipe 0:
- Die Beschränkung greift in zwei Stufen
MaxSrcRectWidthForPipe[0](6720) → Begrenzung bei der Modus-AufzählungMaxVideoSrcDownscalingWidth(6720) → Begrenzung bei der Laufzeitvalidierung
- Da andere Pipes desselben Controllers 7680 unterstützen, ist bestätigt, dass es sich um eine Firmware-Richtlinie und keine Hardware-Beschränkung handelt
Versuche zur Problemlösung
-
Display-Override-Plist
- Unter
/Library/Displays/.../DisplayVendorID-1e6d/DisplayProductID-7750wurde eine HiDPI-Auflösung von 7680×4320 hinzugefügt - Auf dem M5 Max ohne Wirkung, auf dem M2 Max funktioniert es korrekt
- Der WindowServer des M5 Max zählt diesen Modus nicht auf
- Unter
-
EDID-Software-Patch
- Geänderte EDID in
IODisplayEDIDeingefügt (4095×4095, maximaler Pixel-Takt 655.35MHz usw.) - Ohne Wirkung
- Der BetterDisplay-Entwickler meldete auf M4 einen erfolgreichen Fall, in dem per Software-EDID-Override ein 8K-Framebuffer erzwungen wurde
- Für ein 4K-Panel ist das jedoch keine praktische Lösung, da es kein echtes 8K-Signal anzeigen kann
- Geänderte EDID in
-
EDID-Hardware-Flash
- Nach Hinzufügen eines Modus 7680×4320@60Hz (VIC 199) zur EDID wurde diese in das EEPROM des LG-Monitors geflasht
- Der DCP aktualisiert
MaxW=7680undMaxH=4320, aber die 6720-Beschränkung von Sub-Pipe 0 bleibt bestehen - Wird 8K-Timing als Standard gesetzt, entsteht zwar der Modus 3840×2160@2x, macOS versucht dann aber tatsächlich ein 8K-Signal auszugeben, das nicht dargestellt werden kann
-
Änderung der IOKit-Registry
- Direkte Änderung von DCP-Eigenschaften wie
DisplayHintsundConnectionMappingversucht - Der Kernel-Treiber (
AppleDisplayCrossbar) verweigert Schreibzugriffe (kIOReturnUnsupported)
- Direkte Änderung von DCP-Eigenschaften wie
-
Weitere Versuche
- Löschen des WindowServer-Caches, Reduzierung der Zahl angeschlossener Displays, Wechsel auf HDMI und Aufruf der privaten SkyLight-API
SLConfigureDisplayWithDisplayModeschlugen alle fehl - Tarnung als Apple-Display (Apple Vendor ID in die EDID eingefügt) führt zwar zur Anzeige als „Apple Pro Display X“, aber
ExternalAppleLook=Nound das Budget bleibt unverändert
- Löschen des WindowServer-Caches, Reduzierung der Zahl angeschlossener Displays, Wechsel auf HDMI und Aufruf der privaten SkyLight-API
-
Zusammenfassung der Ergebnisse beim Schreiben von IOKit-Eigenschaften
Dienst Methode Ergebnis IOMobileFramebufferShim IORegistryEntrySetCFProperty kIOReturnUnsupported AppleDisplayCrossbar u. a. IORegistryEntrySetCFProperty kIOReturnNotReady IOAVController IORegistryEntrySetCFProperty Accepted (wird aber nicht an den DCP weitergereicht)
Test mit RuntimeProperty-Boot-Argumenten
- In der Firmware existiert die Funktion
IOMobileFramebuffer::parse_RTP_boot_args(), was auf mögliche Property-Overrides beim Booten hindeutet- Beispiele:
iomfb_RuntimeProperty_ExternalAppleLook,iomfb_enable_bw_check,iomfb_dual_pipe_policyusw.
- Beispiele:
- Tests mit
sudo nvram boot-args=bei gelockertem SIP und Startup Security blieben wirkungslos- Vermutlich ist dieser Codepfad nur für Entwicklungszwecke aktiviert
Temporärer Workaround per Virtual Display Mirror
- Es wurde das CLI-Tool
force-hidpierstellt, das über die privateSLVirtualDisplay-API von SkyLight ein virtuelles Display (7680×4320) erzeugt und das reale 4K-Panel per Hardware-Mirroring ansteuert- Der Hardware-Mirror-Pfad umgeht die Prüfung
verify_downscaling - In
system_profilererscheint dies als „Hardware Mirror: Yes“
- Der Hardware-Mirror-Pfad umgeht die Prüfung
- Auf diesem Weg lässt sich 3840×2160 HiDPI realisieren
- Text ist scharf und die macOS-Oberfläche wird mit normaler 2x-Dichte gerendert
- Das virtuelle Display verwendet PQ (ST 2084) EOTF und wendet eine Gammakorrektur für SDR-Panels an
- Nachteile
- Das Tool muss dauerhaft laufen; nach dem Beenden fällt die Anzeige auf 1.0x zurück
- In den Systemeinstellungen erscheint ein zusätzliches Display
- Das Text-Rendering unterscheidet sich leicht vom nativen HiDPI auf dem M2 Max
- Wegen der Abhängigkeit von privaten APIs kann die Lösung bei macOS-Updates instabil werden
Zusammenfassung von Ursache und möglicher Korrektur
- M2 Max: 7680-Pixel-Budget pro Controller → 3840×2160 HiDPI möglich
- M5 Max: Umstellung auf Sub-Pipe-Struktur, wodurch Single-Stream-Pipe 0 auf 6720 begrenzt ist
- Dadurch sinkt das HiDPI-Maximum bei 4K auf 3360×1890
- EDID-Anpassungen, Portwechsel oder Änderungen an der Zahl der Displays können dies nicht ändern
- Die grundlegende Lösung ist, dass Apple die DCP-Firmware (
t605xdcp.im4p) anpasst- Erhöhung der hartkodierten Konstante von 0x1A40 auf 0x1E00
- Zulassen von Multi-Pipe-HiDPI-Backing-Store auch bei Single-Pipe
- Dynamische Zuweisung auf Basis des angeschlossenen Displays
- Freigabe von Runtime-Properties oder Boot-Argumenten
- Apple Feedback FB22365722 wurde eingereicht
- Apple ist sich des Problems bewusst und reagiert derzeit mit einem Warnhinweis zu den Einschränkungen skalierter Auflösungen auf der Produktseite
Zusammenfassung diagnostischer Befehle
ioreg -l -w0 | grep "IOMFBMaxSrcPixels": Framebuffer-Budget pro Pipe prüfenioreg -l -w0 | grep "MaxVideoSrcDownscalingWidth": Scaler-Limit prüfensystem_profiler SPDisplaysDataType: Display-ÜbersichtCGSGetNumberOfDisplayModes: Liste der HiDPI-Modi prüfen
Beispiel für korrektes Verhalten beim M2 Max
- 3840×2160@2x-HiDPI-Modus vorhanden
- DCP-Parameter:
MaxW=3840,MaxH=2160,MaxActivePixelRate=497,664,000 - In
IOMFBMaxSrcPixelsistMaxSrcRectWidth=7680bestätigt - Auf demselben LG HDR 4K-Display ist der vollständige HiDPI-Modus nutzbar
2 Kommentare
Die grundlegenden Dinge sollten sie schon richtig hinbekommen..
Hacker-News-Kommentare
Ich habe mir vor Kurzem erstmals ein MacBook Pro M5 Pro gekauft und bereue es inzwischen ein wenig.
Der Laptop selbst ist großartig, aber mit meinem LG 38WN95C-W Monitor (3840x1600@144Hz, USB-C) ist er nicht richtig kompatibel.
Mit BetterDisplay bekomme ich zwar 3360x1400 HiDPI hin, verliere dabei aber den Bildschirmplatz, an den ich gewöhnt war.
Ich hätte nicht gedacht, dass der M5 schlechter sein würde als die vorherige Generation. Apple macht vieles gut, patzt aber bei solchen grundlegenden Dingen.
Jetzt sollte ich wohl Apple Intelligence fragen, wie ich meiner Frau erkläre, dass ich einen neuen Monitor brauche.
Es war ein DisplayPort-DSC-Bug, durch den macOS seit Catalina keine Bildwiederholraten über 60Hz unterstützt hatte.
Der Apple-Support hat wochenlang nur Diagnosen wiederholt und es dann mit „WontFix“ beendet, aber nach der E-Mail wurde es in Sonoma behoben.
Passender Forenlink
Das Problem trat auf, nachdem ich macOS von Sequoia auf Tahoe umgestellt hatte.
möglicherweise indem bei Nicht-Apple-Monitoren ausgehandelt wurde, dass die GPU nur 1.2 unterstützt.
Das aktuelle Problem könnte eine Fortsetzung davon sein.
Man sieht, dass der Autor enorm viel Aufwand betrieben hat, um dieses Problem zu lösen.
Traurig, dass Apple das Problem offenbar erst dann wahrnimmt, wenn man so weit gehen muss.
Am Ende habe ich die Mac-Beschränkungen in BetterDisplay aufgehoben und es mit einem DisplayLink-Kabel und einem HDMI-Dongle mit eigener Stromversorgung gelöst.
5120x1440 @ lodpi war viel zu unscharf, aber mit 10240x2880 @ 120Hz HDR wurde es stabil.
Beim Titel musste ich lachen. Ich konnte den Schmerz des OP nur zu gut nachvollziehen.
Der Autor hat vermutlich ebenfalls fast ohne Display-Wissen angefangen.
Ich wäre bei meinem neuen M4 MacBook fast wahnsinnig geworden, weil ein externer 4K-Monitor unscharf aussah.
Selbst das Kopieren meiner bisherigen Einstellungen hat nichts gebracht, und ich frage mich, ob Apple vielleicht nur die eigenen Displays optimiert.
Selbst Windows 11 hat solche Probleme nicht, während Texte auf Nicht-Apple-Monitoren unter macOS seltsam aussehen.
Schon früher zu Intel-Mac-Zeiten hatte ich solche Probleme bei der Verbindung über ein Thunderbolt-Dock.
Ich wünschte, sie würden die Subpixel-Rendering-Option wieder unterstützen.
Ich nutze seit acht Jahren einen 43"-4K-Monitor mit 1x-Skalierung und habe zwischen Linux, M1 und M4 keinen Unterschied bemerkt.
Falls der Monitor eine kaputte EDID hat, kann man das vielleicht mit der screenresolution CLI-App lösen.
Damit konnte ich beliebige Auflösungen und Bildwiederholraten setzen und es bis 100Hz stabil nutzen.
Will der Autor hier vielleicht ein 4K-Display mit einem 8K-Framebuffer rendern und dann herunterskalieren?
Mich würde interessieren, welchen Vorteil das gegenüber einfachem 4K-low-DPI hat. Ist das so etwas wie kostenloses Antialiasing?
Unter Windows werden Texte bei 1,5x-Skalierung unscharf, aber macOS rendert einen 6K-Framebuffer und skaliert ihn auf 4K herunter, um die Schärfe zu erhalten.
Selbst bei einem 2K-Monitor ist ein virtueller 5K-Framebuffer, der auf 2K heruntergerechnet wird, deutlich schärfer als das standardmäßige 2K von macOS.
Ich habe mit dem M5 Air ein ähnliches Problem.
Ein 60Hz-4K-Monitor funktioniert, aber wenn ich zwei 4K-Gaming-Monitore mit hoher Bildwiederholrate gleichzeitig anschließe, wird einer davon nicht erkannt.
Nach mehreren Kabelwechseln wurde mir klar, dass es letztlich an der Bandbreitengrenze liegt.
Das ist keine gewöhnliche Retina-Konfiguration.
Der Framebuffer ist deutlich größer als die tatsächliche Auflösung und wird dann heruntergerechnet — also eine ungewöhnliche Konfiguration.
Die meisten Nutzer wollen so etwas nicht, deshalb kümmert sich Apple vermutlich nicht darum.
deshalb ist es schon enttäuschend, dass ausgerechnet der Mac als führende Plattform für Kreative daran scheitert.
Bedeutet HiDPI hier nicht 1080p@2x? Funktioniert das weiterhin?
Ich verstehe nur nicht, warum man dafür einen 7680x4320-Buffer nutzen sollte.
Ich verwende an meinem M4 Mac ein 4K-Display mit einem 5120x2880-Framebuffer (2560x1440@2x), und das funktioniert problemlos.
Das gilt für macOS Sequoia.
Das wäre einfach 2160p@2x auf einem 8K-Monitor. 4K bei 100% Skalierung sieht in keinem Betriebssystem gut aus.
Der Artikel wäre überzeugender, wenn es Screenshot-Vergleiche der Textunschärfe gäbe.