Apple Silicon M4 ve M5 çiplerinde harici 4K ekranlarda HiDPI çözünürlük sınırlaması ortaya çıktı
(smcleod.net)- M4 ve M5 neslinde harici 4K monitörlerde 3840×2160@2x HiDPI modu desteklenmiyor ve en fazla 3360×1890 kullanılabiliyor
- Bu sınırlama, Display Coprocessor (DCP) ürün yazılımı mimarisindeki değişiklikten kaynaklanıyor; donanım performansı sorunu değil
- M5 Max'te framebuffer bütçesi pipe bazında yeniden dağıtılmış, bu nedenle tek akışlı pipe genişliği 6720 piksele düşmüş durumda
- EDID değiştirme, port değiştirme, sürücü özelliklerini ayarlama gibi çeşitli yöntemler denendi ancak hiçbiri işe yaramadı
- Şu anda tam çözüm, Apple'ın DCP ürün yazılımını düzeltmesi; geçici olarak ise sanal ekran yansıtma yöntemiyle 2x HiDPI uygulanabiliyor
Apple Silicon M4/M5 harici 4K ekranlarda HiDPI sınırlamasının analizi
- M4 ve M5 nesli Apple Silicon sistemlerde harici 4K monitörlerde tam 2x HiDPI modu (3840×2160@2x) sunulmuyor
- En yüksek HiDPI modu 3360×1890 ile sınırlı; önceki nesilde (M2/M3) mümkün olan 3840×2160 HiDPI artık kullanılamıyor
- Kullanıcılar HiDPI olmayan modda bulanık metin ile keskin ama daha küçük çalışma alanı arasında seçim yapmak zorunda kalıyor
- Bu sınırlama, donanım sınırından değil Display Coprocessor (DCP) ürün yazılımı mimarisindeki değişiklikten kaynaklanıyor
- M5 Max teknik olarak 8K@60Hz desteklese de, DCP'nin bildirdiği yetenekler M2 Max ile aynı
- M4/M5 neslinde framebuffer budget pipe bazında yeniden dağıtılmış; standart 4K yolunun bütçesi 7680 pikselden 6720 piksele düşürülmüş
- DCP firmware disassembly sonucunda 6720 (0x1A40) değerinin sabit kodlanmış bir sabit olarak bulunduğu görülüyor
Test ortamı ve karşılaştırma sonuçları
| Öğe | M5 Max (sorunlu) | M2 Max (normal çalışıyor) |
|---|---|---|
| Çip | Apple M5 Max | Apple M2 Max |
| Model kimliği | Mac17,6 | Mac14,6 |
| GPU çekirdeği | 40 | 38 |
| macOS | 26.4 (25E246) | 26.4 (25E246) |
| Ekran | LG HDR 4K 32UN880 | LG HDR 4K 32UN880 |
| Bağlantı | USB-C/Thunderbolt (HBR3, 8.1Gbps, 4 lanes) | Aynı |
| En yüksek HiDPI modu | 3360×1890 | 3840×2160 |
- Her iki sistemde de
MaxActivePixelRate,MaxW,MaxH,MaxBpcgibi DCP parametreleri aynı system_profilerçıktısında M5 Max'in backing store değeri 6720×3780, arayüz ise 3360×1890 HiDPI olarak görünüyorHiDPI modeslistesinde de 3840×2160@2x girdisi yer almıyor
Framebuffer ve pipe yapısındaki değişim
- M2 Max, denetleyici başına tek bütçe (
MaxSrcRectWidth=7680) kullanıyor - M5 Max ise alt pipe başına bütçe yapısına (
MaxSrcRectWidthForPipe=(6720,7680,7680,7680)) geçmiş durumda- Tek akışlı 4K çıkış yalnızca sub-pipe 0 (6720) kullanıyor
- 8K çıkışta ise 2 sub-pipe (0,2) kullanılıyor
- Bu nedenle 4K HiDPI (7680×4320 backing store), sub-pipe 0 bütçesini aştığı için oluşturulamıyor
| Sub-pipe | MaxSrcRectWidth | Kullanım |
|---|---|---|
| 0 | 6720 | Tek akış (standart ekran) |
| 1–3 | 7680 | Çoklu pipe (8K vb.) |
MaxVideoSrcDownscalingWidthkarşılaştırmasıDenetleyici MaxSrcRectWidthForPipe[0] MaxVideoSrcDownscalingWidth Oran Dahili ekran 5120 10744 2.1x Harici ekran 6720 6720 1.0x - Dahili ekranda ölçekleyici payı varken, harici ekranda pay olmadığı için 3840×2160 HiDPI mümkün olmuyor
MaxSrcRectWidthForPipeveMaxVideoSrcDownscalingWidthdeğerleri sürücü yüklenirken sabitleniyor, çalışma zamanında değiştirilemiyor- Port değiştirme, clamshell modu, EDID değiştirme gibi durumlarda da 6720 değeri aynı kalıyor
DCP firmware analizi
- Firmware dosyası
/System/Volumes/Preboot/<UUID>/restore/Firmware/dcp/yolunda bulunuyor; M5 Maxt605xdcp.im4pdosyasını kullanıyor- LZFSE sıkıştırmalı (4.1MB → 16.4MB) durumda ve şifrelenmediği için
img4toolile çıkarılabiliyor
- LZFSE sıkıştırmalı (4.1MB → 16.4MB) durumda ve şifrelenmediği için
- HiDPI ile ilgili özelliklerin (
MaxVideoSrcDownscalingWidth,MaxSrcRectWidthForPipe,IOMFBMaxSrcPixels,ExternalAppleLook) tamamı bu firmware içinde tanımlanıyor IOMFB::UPPipe::verify_downscaling(SwapRequest *)fonksiyonu, istenen kaynak genişliğiniMaxVideoSrcDownscalingWidthtemelinde doğruluyor- Ghidra analiz sonuçları
- Harici ekran Sub-pipe 0:
0x1A40(6720) - Sub-pipe 1~3:
0x1E00(7680) - Dahili ekran Sub-pipe 0:
0x1400(5120) - Tüm Sub-pipe yükseklikleri:
0x1200(4608)
- Harici ekran Sub-pipe 0:
- Sınırlama iki aşamada çalışıyor
MaxSrcRectWidthForPipe[0](6720) → mod listeleme aşamasında sınırlamaMaxVideoSrcDownscalingWidth(6720) → çalışma zamanı doğrulama aşamasında sınırlama
- Aynı denetleyicideki diğer pipe'ların 7680'i desteklemesi, bunun donanım kısıtı değil firmware politikası olduğunu gösteriyor
Sorunu çözmek için denenen yöntemler
-
Display Override Plist
/Library/Displays/.../DisplayVendorID-1e6d/DisplayProductID-7750içine 7680×4320 HiDPI çözünürlüğü eklendi- M5 Max'te etkisiz kaldı, M2 Max'te normal çalıştı
- M5 Max'in WindowServer'ı bu modu listelemiyor
-
EDID yazılım yaması
IODisplayEDIDiçine değiştirilmiş EDID eklendi (4095×4095, en yüksek piksel saati 655.35MHz vb.)- Etkisi olmadı
- BetterDisplay geliştiricisi, M4'te yazılımsal EDID override ile 8K framebuffer elde edilen bir örnek bildirdi
- Ancak 4K panel gerçek 8K sinyali gösteremediği için bu pratik bir çözüm değil
-
EDID donanım flash işlemi
- EDID'e 7680×4320@60Hz (VIC 199) modu eklendi ve LG monitör EEPROM'una flashlandı
- DCP,
MaxW=7680,MaxH=4320olarak güncellense de sub-pipe 0 üzerindeki 6720 sınırı değişmedi - 8K zamanlaması varsayılan yapılınca 3840×2160@2x modu oluşuyor, ancak macOS gerçek 8K sinyal çıkarmaya çalıştığı için görüntülenemiyor
-
IOKit Registry değişikliği
DisplayHints,ConnectionMappinggibi DCP özelliklerini doğrudan değiştirme girişimleri denendi- Kernel sürücüsü (
AppleDisplayCrossbar) yazmayı reddetti (kIOReturnUnsupported)
-
Diğer girişimler
- WindowServer önbelleğini silme, bağlı ekran sayısını azaltma, HDMI'a geçiş, SkyLight özel API'si (
SLConfigureDisplayWithDisplayMode) çağırma gibi denemelerin tümü başarısız oldu - Apple ekranı gibi davranma girişiminde (EDID içine Apple Vendor ID ekleme) ekran “Apple Pro Display X” olarak görünse de
ExternalAppleLook=Nokaldı ve bütçede değişiklik olmadı
- WindowServer önbelleğini silme, bağlı ekran sayısını azaltma, HDMI'a geçiş, SkyLight özel API'si (
-
IOKit özellik yazma sonuç özeti
Servis Yöntem Sonuç IOMobileFramebufferShim IORegistryEntrySetCFProperty kIOReturnUnsupported AppleDisplayCrossbar vb. IORegistryEntrySetCFProperty kIOReturnNotReady IOAVController IORegistryEntrySetCFProperty Accepted (ancak DCP'ye iletilmiyor)
RuntimeProperty boot arg testi
- Firmware içinde
IOMobileFramebuffer::parse_RTP_boot_args()fonksiyonu bulunuyor; bu da önyükleme sırasında özelliklerin override edilebilme ihtimaline işaret ediyor- Örnekler:
iomfb_RuntimeProperty_ExternalAppleLook,iomfb_enable_bw_check,iomfb_dual_pipe_policyvb.
- Örnekler:
- SIP ve Startup Security gevşetilmiş halde
sudo nvram boot-args=ile test edildi, ancak DCP firmware hiçbir tepki vermedi- İlgili kod yolunun yalnızca geliştirme amaçlı etkinleştirildiği tahmin ediliyor
Virtual Display Mirror geçici geçiş yöntemi
force-hidpiCLI aracı geliştirilerek SkyLight'ın özelSLVirtualDisplayAPI'si kullanıldı; bu sayede sanal ekran (7680×4320) oluşturulup gerçek 4K panel donanımsal olarak yansıtıldı- Donanımsal mirror yolu
verify_downscalingkontrolünü atlıyor system_profileriçinde “Hardware Mirror: Yes” olarak görünüyor
- Donanımsal mirror yolu
- Bu yöntemle 3840×2160 HiDPI uygulanabiliyor
- Metinler net oluyor ve macOS arayüzü normal 2x yoğunlukta çiziliyor
- Sanal ekran PQ (ST 2084) EOTF kullanıyor ve SDR panel için gamma düzeltmesi uygulanıyor
- Dezavantajlar
- Aracın sürekli çalışması gerekiyor; kapanınca 1.0x'e geri dönüyor
- Sistem ayarlarında ek bir ekran görünüyor
- Metin oluşturma, M2 Max üzerindeki yerel HiDPI'a göre biraz farklı
- Özel API bağımlılığı nedeniyle macOS güncellemelerinde kararsızlık yaşanabilir
Neden ve düzeltme olasılığı özeti
- M2 Max: denetleyici başına 7680 piksel bütçe → 3840×2160 HiDPI mümkün
- M5 Max: sub-pipe yapısına geçilmiş ve tek akışlı pipe (0) 6720 ile sınırlandırılmış
- Bu nedenle 4K HiDPI üst sınırı 3360×1890'a düşüyor
- EDID değiştirme, port değiştirme, ekran sayısını ayarlama gibi yöntemlerle bu değiştirilemiyor
- Temel çözüm, Apple'ın DCP firmware (
t605xdcp.im4p) dosyasını düzeltmesi- Sabit kodlanmış
0x1A40değeri0x1E00olarak yükseltilmeli - Tek pipe üzerinde de çoklu pipe HiDPI backing store'a izin verilmeli
- Bağlı ekrana göre dinamik tahsis desteklenmeli
- Çalışma zamanı özelliği veya boot arg açığa çıkarılmalı
- Sabit kodlanmış
- Apple Feedback FB22365722 gönderildi
- Apple sorunun farkında ve şu anda ürün sayfasına ölçekli çözünürlük sınırlaması uyarısı ekleyerek yanıt veriyor
Tanı komutları özeti
ioreg -l -w0 | grep "IOMFBMaxSrcPixels": pipe başına framebuffer bütçesini kontrol etmeioreg -l -w0 | grep "MaxVideoSrcDownscalingWidth": ölçekleyici sınırını kontrol etmesystem_profiler SPDisplaysDataType: ekran özetini görmeCGSGetNumberOfDisplayModes: HiDPI mod listesini kontrol etme
M2 Max üzerinde normal çalışma örneği
- 3840×2160@2x HiDPI modu mevcut
- DCP parametreleri:
MaxW=3840,MaxH=2160,MaxActivePixelRate=497,664,000 IOMFBMaxSrcPixelsiçindeMaxSrcRectWidth=7680doğrulanıyor- Aynı LG HDR 4K ekranda tam HiDPI modu kullanılabiliyor
2 yorum
En temel şeyleri biraz sağlam yapsalar ya..
Hacker News yorumları
Kısa süre önce ilk MacBook Pro M5 Pro’mu aldım ve biraz pişmanım
Dizüstü bilgisayarın kendisi harika ama LG 38WN95C-W monitörümle (3840x1600@144Hz, USB-C) düzgün uyumlu çalışmıyor
BetterDisplay ile 3360x1400 HiDPI mümkün ama alıştığım ekran alanını kaybediyorum
M5’in önceki nesilden daha kötü olacağını düşünmemiştim. Apple birçok şeyi iyi yapıyor ama böyle temel konularda hata yapıyor
Sanırım şimdi Apple Intelligence’a eşime neden yeni bir monitöre ihtiyacım olduğunu nasıl anlatacağımı sormalıyım
Sorun, Catalina’dan beri macOS’un 60Hz üzeri yenileme hızlarını desteklememesine yol açan bir DisplayPort DSC bug’ıydı
Apple destek ekibi haftalarca sadece teşhis tekrarlayıp sonunda “WontFix” dedi ama e-postadan sonra Sonoma’da düzeltildi
İlgili forum bağlantısı
Sorun macOS’ta Sequoia’dan Tahoe’ya geçtikten sonra ortaya çıktı
Apple dışı monitörlerde GPU’nun yalnızca 1.2 desteklediğini söyleyerek pazarlık etmiş olabilir.
Bu sorun da onun devamı olabilir
Yazarın bu sorunu çözmek için inanılmaz çaba harcadığı belli.
Apple’ın sorunu fark etmesi için işlerin buraya kadar gelmesi üzücü
Sonunda BetterDisplay ile Mac kısıtlamalarını kaldırıp, DisplayLink kablosu ve harici güç alan bir HDMI dongle kombinasyonuyla çözdüm
5120x1440 @ lodpi çok bulanıktı ama 10240x2880 @ 120Hz HDR ile stabil hale getirdim
Başlığı görünce güldüm. OP’nin yaşadığı acıyı fazlasıyla anlıyorum
Yazar da muhtemelen ekran teknolojisi hakkında neredeyse hiç bilgisi olmadan başlamıştır
Ben de yeni M4 MacBook’umda harici 4K monitörün bulanık görünmesi yüzünden çıldıracak gibi oldum
Önceki ayarları birebir kopyalamak da işe yaramadı; acaba Apple sadece kendi ekranlarını mı optimize ediyor diye şüpheleniyorum
Windows 11’de bile böyle bir sorun yokken, macOS’ta Apple dışı monitörlerde yazılar garip görünüyor
Eskiden Intel Mac döneminde de Thunderbolt dock bağlantısında buna benzer bir sorun yaşamıştım
Keşke subpixel rendering seçeneği yeniden desteklense
Ben 43" 4K monitörü 8 yıldır 1x ölçekle kullanıyorum ve Linux, M1 ya da M4 arasında bir fark hissetmedim
Eğer sorun EDID’i bozuk bir monitör ise, screenresolution CLI uygulaması işe yarayabilir
Bununla keyfi çözünürlük ve yenileme hızı ayarlayıp 100Hz’e kadar stabil kullandım
Acaba yazar 4K ekranı 8K framebuffer’da render edip sonra downscale etmeye mi çalışıyor?
Basit 4K low-DPI’ye kıyasla ne avantaj sağladığını merak ediyorum. Bir tür bedava anti-aliasing mi?
Windows’ta 1.5x ölçeklemede yazılar bulanıklaşırken, macOS 6K framebuffer’ı 4K’ye downscale ederek keskinliği koruyor
2K monitörde bile sanal 5K framebuffer’ı 2K’ye küçültmek, macOS’un varsayılan 2K’sından çok daha keskin görünüyor
Ben de M5 Air’da benzer bir sorun yaşadım
60Hz 4K monitör sorunsuz ama iki adet yüksek yenileme hızlı 4K gaming monitörü aynı anda bağlayınca biri algılanmıyor
Kabloları değiştire değiştire sonunda sorunun bant genişliği sınırı olduğunu anladım
Bu, tipik bir Retina yapılandırması değil.
Framebuffer’ın gerçek çözünürlükten çok daha büyük olduğu ve sonra downscale edildiği sıra dışı bir kurulum
Kullanıcıların çoğu böyle bir yapılandırma istemediği için Apple muhtemelen buna önem vermiyor
yaratıcılar için başlıca platform olarak görülen Mac’in bunu yapamaması biraz hayal kırıklığı yaratıyor
HiDPI ise bu 1080p@2x olmuyor mu? Bu hâlâ mümkün mü?
Ama neden 7680x4320 buffer kullanıldığını anlamıyorum.
Ben M4 Mac’te 4K ekranı 5120x2880 (2560x1440@2x) buffer ile kullanıyorum ve gayet iyi çalışıyor
Bu da macOS Sequoia’da
Bu ancak 8K monitörde 2160p@2x olur. 4K %100 ölçek zaten hangi işletim sisteminde olursa olsun iyi görünmüyor
Yazıda metin bulanıklığı karşılaştırma ekran görüntüleri olsa daha ikna edici olabilirdi