1 puan yazan GN⁺ 29 일 전 | 2 yorum | WhatsApp'ta paylaş
  • 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, MaxBpc gibi 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üyor
  • HiDPI modes listesinde 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.)
  • MaxVideoSrcDownscalingWidth karşı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
  • MaxSrcRectWidthForPipe ve MaxVideoSrcDownscalingWidth değ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 Max t605xdcp.im4p dosyasını kullanıyor
    • LZFSE sıkıştırmalı (4.1MB → 16.4MB) durumda ve şifrelenmediği için img4tool ile çıkarılabiliyor
  • 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ğini MaxVideoSrcDownscalingWidth temelinde 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)
  • Sınırlama iki aşamada çalışıyor
    1. MaxSrcRectWidthForPipe[0] (6720) → mod listeleme aşamasında sınırlama
    2. MaxVideoSrcDownscalingWidth (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-7750 iç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ı

    • IODisplayEDID iç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=4320 olarak 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, ConnectionMapping gibi 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=No kaldı ve bütçede değişiklik olmadı
  • 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_policy vb.
  • 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-hidpi CLI aracı geliştirilerek SkyLight'ın özel SLVirtualDisplay API'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_downscaling kontrolünü atlıyor
    • system_profiler içinde “Hardware Mirror: Yes” olarak görünüyor
  • 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
    1. Sabit kodlanmış 0x1A40 değeri 0x1E00 olarak yükseltilmeli
    2. Tek pipe üzerinde de çoklu pipe HiDPI backing store'a izin verilmeli
    3. Bağlı ekrana göre dinamik tahsis desteklenmeli
    4. Çalışma zamanı özelliği veya boot arg açığa çıkarılmalı
  • 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 etme
  • ioreg -l -w0 | grep "MaxVideoSrcDownscalingWidth" : ölçekleyici sınırını kontrol etme
  • system_profiler SPDisplaysDataType : ekran özetini görme
  • CGSGetNumberOfDisplayModes : 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
  • IOMFBMaxSrcPixels içinde MaxSrcRectWidth=7680 doğrulanıyor
  • Aynı LG HDR 4K ekranda tam HiDPI modu kullanılabiliyor

2 yorum

 
cnaa97 29 일 전

En temel şeyleri biraz sağlam yapsalar ya..

 
GN⁺ 29 일 전
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

    • Ben de benzer bir sorun yaşadım; Tim Cook’a e-posta gönderince çözüldü
      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ı
      • CEO’ya atılan e-postanın gerçekten iletileceğini sanmıyorum ama ne olur ne olmaz diye ben de gönderdim
      • Ben de M1 Pro’dan M5 Pro’ya yükselttim ama aynı dock ve monitör kombinasyonunda bile 4K 60Hz’in üstüne çıkamıyorum
        Sorun macOS’ta Sequoia’dan Tahoe’ya geçtikten sonra ortaya çıktı
      • Ben de az önce e-posta gönderdim. Gerçekten saçma bir sorun
      • Bunu duyunca fark ettim; demek ki aynı 144Hz monitörde MacOS’imin Windows’tan daha yavaş hissettirmesinin nedeni buymuş
      • Tam olarak düzeltilmiş değil. Apple, ProDisplay XDR’yi çalıştırmak için DP 1.4 ile oynadı ama
        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ü

    • Ben de 57" G9 ultra geniş ekranda PIP/PBP ayarları yüzünden çok uğraştım
      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
    • Ben de bütün hafta sonunu bunu çözmeye çalışarak geçirdim ama uygun bir geçici çözüm bulamadım
    • Ben de benzer bir sorun yaşadım; Claude ya da GPT ile donanım sorununu araştırınca hızlıca çözüm adımları önermeleri faydalı oldu
      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

    • macOS’un çözünürlük ve ölçeklendirme işleme biçimi hâlâ tuhaf
      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
    • “lodpi”nin neden bulanık olduğunu anlamıyorum.
      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
    • Ben de BetterDisplay ile her kombinasyonu denedim ama fontlar hâlâ bulanıktı. Büyük 5k2k monitörlerde özellikle daha da sinir bozucuydu
    • Son zamanlarda macOS’un genel kalitesindeki istikrarsızlığa bakınca, bunun basitçe şirketin kötü yönetiminden kaynaklanma ihtimali yüksek
  • 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

    • Teşekkürler. Ama bu araç sanırım sadece çözünürlük ve yenileme hızını değiştiriyor; HiDPI ölçeklendirmesini kontrol etmiyor gibi görünüyor
  • 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?

    • Evet. macOS’ta 2x ölçek olmadığında metin render kalitesi kötü, o yüzden bunu yapıyorlar
    • Asıl mesele, yerel olmayan çözünürlükte ölçekleme yapılırken kalite kaybını önlemek
      Windows’ta 1.5x ölçeklemede yazılar bulanıklaşırken, macOS 6K framebuffer’ı 4K’ye downscale ederek keskinliği koruyor
    • Ben de BetterDisplay ile aynı yöntemi kullanıyorum
      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

    • Ben sadece standart bir LG UltraFine 4K’yı M5 MacBook Pro’ya bağladım; bunun nasıl sıra dışı bir kurulum sayıldığını anlamıyorum
    • Bu bir tür 2x supersampling değil mi? Kusursuz anti-aliasing için en azından buna ihtiyaç var
    • Ben de bunun sıra dışı bir kurulum olduğu görüşüne katılıyorum. Neden görüntüyü önce 2 kat pikselde işleyip sonra tekrar yarıya indirmek gerektiğini anlamıyorum
    • Ama uygun fiyatlı Windows dizüstü bilgisayarlar bile bu tür çözünürlük işlemlerini zorlanmadan yapabiliyorken,
      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ü?

    • Evet. 3840x2160 bir ekranda macOS’ta 1920x1080@2x kullanmak normaldir
      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 yazının ana fikrini ben de pek anlamadım. 4K monitörde 4K HiDPI diye bir şey yok.
      Bu ancak 8K monitörde 2160p@2x olur. 4K %100 ölçek zaten hangi işletim sisteminde olursa olsun iyi görünmüyor
    • Sonuçta 2160p@2x gibi alışılmadık bir yapılandırmadan söz ediyor gibi görünüyor
  • Yazıda metin bulanıklığı karşılaştırma ekran görüntüleri olsa daha ikna edici olabilirdi

    • Geri bildirim için teşekkürler. Bunu doğru şekilde fotoğraflamak kolay değil ama işten sonra fotoğraf ekleyip güncellemeyi deneyeceğim