- Pada generasi M4·M5, monitor 4K eksternal tidak mendukung mode HiDPI 3840×2160@2x, dan maksimum hanya sampai 3360×1890
- Batasan ini muncul karena perubahan struktur firmware Display Coprocessor (DCP), bukan masalah performa hardware
- Pada M5 Max, anggaran framebuffer dialokasikan ulang per pipe, sehingga lebar single-stream pipe menyusut menjadi 6720 piksel
- Berbagai metode seperti modifikasi EDID, mengganti port, dan menyesuaikan properti driver sudah dicoba namun semuanya tidak efektif
- Saat ini solusi penuh hanya bisa didapat jika Apple memperbaiki firmware DCP, sementara solusi sementara adalah menerapkan 2x HiDPI lewat metode mirroring virtual display
Analisis batasan HiDPI layar eksternal 4K pada Apple Silicon M4/M5
- Pada Apple Silicon generasi M4 dan M5, mode HiDPI 2x penuh (3840×2160@2x) untuk monitor 4K eksternal tidak tersedia
- Mode HiDPI maksimum dibatasi ke 3360×1890, sehingga 3840×2160 HiDPI yang sebelumnya bisa digunakan di generasi lama (M2/M3) kini tidak memungkinkan
- Pengguna harus memilih antara teks buram pada mode non-HiDPI atau teks tajam tetapi ruang kerja lebih sempit
- Batasan ini berasal dari perubahan struktur firmware Display Coprocessor (DCP), bukan batasan hardware
- Secara spesifikasi M5 Max mendukung 8K@60Hz, tetapi kemampuan yang dilaporkan DCP sama dengan M2 Max
- Pada generasi M4/M5, framebuffer budget dialokasikan ulang per pipe, sehingga anggaran jalur 4K standar menyusut dari 7680 piksel menjadi 6720 piksel
- Hasil disassembly firmware DCP menunjukkan nilai 6720 (0x1A40) ada sebagai konstanta hard-coded
Lingkungan pengujian dan hasil perbandingan
| Item |
M5 Max (bermasalah) |
M2 Max (normal) |
| Chip |
Apple M5 Max |
Apple M2 Max |
| Model ID |
Mac17,6 |
Mac14,6 |
| Core GPU |
40 |
38 |
| macOS |
26.4 (25E246) |
26.4 (25E246) |
| Layar |
LG HDR 4K 32UN880 |
LG HDR 4K 32UN880 |
| Koneksi |
USB-C/Thunderbolt (HBR3, 8.1Gbps, 4 lanes) |
Sama |
| Mode HiDPI maksimum |
3360×1890 |
3840×2160 |
- Pada kedua sistem, parameter DCP seperti
MaxActivePixelRate, MaxW, MaxH, MaxBpc identik
- Pada output
system_profiler, backing store M5 Max ditampilkan sebagai 6720×3780, dan UI sebagai 3360×1890 HiDPI
- Dalam daftar
HiDPI modes, entri 3840×2160@2x juga tidak ada
Perubahan struktur framebuffer dan pipe
- M2 Max menggunakan satu anggaran per controller (
MaxSrcRectWidth=7680)
- M5 Max berubah ke struktur anggaran per sub-pipe (
MaxSrcRectWidthForPipe=(6720,7680,7680,7680))
- Output 4K single-stream hanya memakai sub-pipe 0 (6720)
- Output 8K memakai 2 sub-pipe (0,2)
- Akibatnya, 4K HiDPI (backing store 7680×4320) tidak bisa dibuat karena melebihi anggaran sub-pipe 0
| Sub-pipe |
MaxSrcRectWidth |
Fungsi |
| 0 |
6720 |
Single stream (layar standar) |
| 1–3 |
7680 |
Multi-pipe (8K dan sejenisnya) |
- Perbandingan
MaxVideoSrcDownscalingWidth
| Controller |
MaxSrcRectWidthForPipe[0] |
MaxVideoSrcDownscalingWidth |
Rasio |
| Layar internal |
5120 |
10744 |
2.1x |
| Layar eksternal |
6720 |
6720 |
1.0x |
- Layar internal punya ruang scaler, tetapi layar eksternal tidak, sehingga 3840×2160 HiDPI tidak memungkinkan
MaxSrcRectWidthForPipe dan MaxVideoSrcDownscalingWidth dikunci saat driver dimuat dan tidak bisa diubah saat runtime
- Mengganti port, mode clamshell, atau memodifikasi EDID tetap menghasilkan nilai 6720 yang sama
Analisis firmware DCP
- File firmware berada di jalur
/System/Volumes/Preboot/<UUID>/restore/Firmware/dcp/, dan M5 Max memakai t605xdcp.im4p
- Berada dalam keadaan terkompresi LZFSE (4.1MB → 16.4MB) dan tidak terenkripsi, sehingga bisa diekstrak dengan
img4tool
- Properti terkait HiDPI seperti
MaxVideoSrcDownscalingWidth, MaxSrcRectWidthForPipe, IOMFBMaxSrcPixels, ExternalAppleLook semuanya didefinisikan di dalam firmware ini
- Fungsi
IOMFB::UPPipe::verify_downscaling(SwapRequest *) memverifikasi lebar source yang diminta berdasarkan MaxVideoSrcDownscalingWidth
- Hasil analisis Ghidra
- Sub-pipe 0 layar eksternal:
0x1A40 (6720)
- Sub-pipe 1~3:
0x1E00 (7680)
- Sub-pipe 0 layar internal:
0x1400 (5120)
- Tinggi semua Sub-pipe:
0x1200 (4608)
- Batasan bekerja dalam dua tahap
MaxSrcRectWidthForPipe[0] (6720) → membatasi pada tahap enumerasi mode
MaxVideoSrcDownscalingWidth (6720) → membatasi pada tahap verifikasi runtime
- Karena pipe lain pada controller yang sama mendukung 7680, ini menegaskan bahwa batasan tersebut adalah kebijakan firmware, bukan keterbatasan hardware
Upaya penyelesaian masalah
-
Display Override Plist
- Menambahkan resolusi HiDPI 7680×4320 ke
/Library/Displays/.../DisplayVendorID-1e6d/DisplayProductID-7750
- Tidak berpengaruh pada M5 Max, tetapi bekerja normal pada M2 Max
- WindowServer pada M5 Max tidak mengenumerasi mode tersebut
-
Patch EDID via software
- Menyisipkan EDID yang dimodifikasi ke
IODisplayEDID (4095×4095, maksimum pixel clock 655.35MHz, dll.)
- Tidak berpengaruh
- Pengembang BetterDisplay melaporkan kasus berhasil memperoleh framebuffer 8K lewat software EDID override pada M4
- Namun panel 4K tidak bisa benar-benar menampilkan sinyal 8K, jadi ini bukan solusi praktis
-
Flash EDID via hardware
- Menambahkan mode 7680×4320@60Hz (VIC 199) ke EDID lalu mem-flash ke EEPROM monitor LG
- DCP memperbarui
MaxW=7680, MaxH=4320, tetapi batas 6720 pada sub-pipe 0 tetap ada
- Jika timing 8K dijadikan default, mode 3840×2160@2x memang muncul, tetapi macOS mencoba mengeluarkan sinyal 8K sungguhan sehingga layar tidak bisa menampilkannya
-
Modifikasi IOKit Registry
- Mencoba langsung mengubah properti DCP seperti
DisplayHints, ConnectionMapping
- Driver kernel (
AppleDisplayCrossbar) menolak penulisan (kIOReturnUnsupported)
-
Upaya lain
- Menghapus cache WindowServer, mengurangi jumlah layar terhubung, berpindah ke HDMI, memanggil API privat SkyLight (
SLConfigureDisplayWithDisplayMode) semuanya gagal
- Saat menyamar sebagai layar Apple (menyisipkan Apple Vendor ID ke EDID), monitor tampil sebagai “Apple Pro Display X” tetapi
ExternalAppleLook=No dan anggaran tidak berubah
-
Ringkasan hasil penulisan properti IOKit
| Service |
Method |
Hasil |
| IOMobileFramebufferShim |
IORegistryEntrySetCFProperty |
kIOReturnUnsupported |
| AppleDisplayCrossbar dkk. |
IORegistryEntrySetCFProperty |
kIOReturnNotReady |
| IOAVController |
IORegistryEntrySetCFProperty |
Accepted (namun tidak diteruskan ke DCP) |
Pengujian boot arg RuntimeProperty
- Di firmware ada fungsi
IOMobileFramebuffer::parse_RTP_boot_args() yang menunjukkan kemungkinan override properti saat boot
- Contoh:
iomfb_RuntimeProperty_ExternalAppleLook, iomfb_enable_bw_check, iomfb_dual_pipe_policy, dll.
- Pengujian dilakukan lewat
sudo nvram boot-args= dengan SIP dan Startup Security yang sudah dilonggarkan, tetapi firmware DCP tidak merespons
- Diduga jalur kode tersebut hanya aktif untuk keperluan pengembangan
Solusi sementara lewat Virtual Display Mirror
- Dibuat alat CLI
force-hidpi yang memanfaatkan API privat SLVirtualDisplay milik SkyLight untuk membuat virtual display (7680×4320) lalu mem-mirror panel 4K sungguhan secara hardware
- Jalur hardware mirror melewati pemeriksaan
verify_downscaling
- Pada
system_profiler, ini tampil sebagai “Hardware Mirror: Yes”
- Dengan cara ini, 3840×2160 HiDPI bisa diwujudkan
- Teks terlihat tajam dan UI macOS dirender dengan densitas 2x yang normal
- Virtual display memakai PQ (ST 2084) EOTF dan menerapkan koreksi gamma untuk panel SDR
- Kekurangan
- Alat harus terus berjalan, dan jika dihentikan sistem kembali ke 1.0x
- Display tambahan muncul di System Settings
- Rendering teks sedikit berbeda dibanding HiDPI native di M2 Max
- Karena bergantung pada API privat, ada risiko tidak stabil setelah update macOS
Ringkasan penyebab dan kemungkinan perbaikan
- M2 Max: anggaran 7680 piksel per controller → 3840×2160 HiDPI memungkinkan
- M5 Max: berubah ke struktur sub-pipe sehingga single-stream pipe (0) dibatasi ke 6720
- Akibatnya, batas maksimum 4K HiDPI turun menjadi 3360×1890
- Modifikasi EDID, mengganti port, atau mengubah jumlah layar tidak bisa mengatasinya
- Solusi fundamental adalah Apple memperbaiki firmware DCP (
t605xdcp.im4p)
- Menaikkan konstanta hard-coded 0x1A40 → 0x1E00
- Mengizinkan backing store HiDPI multi-pipe bahkan pada single pipe
- Mengizinkan alokasi dinamis berdasarkan layar yang terhubung
- Mengekspos properti runtime atau boot arg
- Apple Feedback FB22365722 sudah diajukan
- Apple disebut sudah mengetahui masalah ini, dan saat ini merespons dengan menambahkan peringatan batas resolusi skala di halaman produk
Ringkasan perintah diagnosis
ioreg -l -w0 | grep "IOMFBMaxSrcPixels" : memeriksa anggaran framebuffer per pipe
ioreg -l -w0 | grep "MaxVideoSrcDownscalingWidth" : memeriksa batas scaler
system_profiler SPDisplaysDataType : ringkasan layar
CGSGetNumberOfDisplayModes : memeriksa daftar mode HiDPI
Contoh operasi normal pada M2 Max
- Mode HiDPI 3840×2160@2x tersedia
- Parameter DCP:
MaxW=3840, MaxH=2160, MaxActivePixelRate=497,664,000
IOMFBMaxSrcPixels menunjukkan MaxSrcRectWidth=7680
- Pada layar LG HDR 4K yang sama, mode HiDPI penuh bisa digunakan
2 komentar
Hal-hal dasarnya tolong dibereskan dengan lebih pasti dulu..
Komentar Hacker News
Saya baru membeli MacBook Pro M5 Pro pertama saya dan agak menyesal
Laptopnya sendiri luar biasa, tetapi tidak kompatibel dengan baik dengan monitor LG 38WN95C-W saya (3840x1600@144Hz, USB-C)
Dengan BetterDisplay, 3360x1400 HiDPI memang bisa, tetapi saya kehilangan ruang layar yang sudah biasa saya pakai
Saya tidak menyangka M5 akan lebih buruk daripada generasi sebelumnya. Apple melakukan banyak hal dengan baik, tetapi mereka gagal di hal mendasar seperti ini
Sepertinya sekarang saya harus bertanya ke Apple Intelligence bagaimana menjelaskan kepada istri saya bahwa saya butuh monitor baru
Ternyata itu adalah bug DisplayPort DSC di mana macOS sejak Catalina tidak mendukung refresh rate di atas 60Hz
Tim dukungan Apple hanya mengulang diagnosis selama beberapa minggu lalu menutupnya sebagai “WontFix”, tetapi setelah email itu, masalahnya diperbaiki di Sonoma
Tautan forum terkait
Masalah ini muncul setelah pindah dari macOS Sequoia ke Tahoe
dan mungkin menegosiasikan dengan berpura-pura ke monitor non-Apple bahwa GPU hanya mendukung 1.2.
Masalah kali ini mungkin masih satu garis dengan itu
Terlihat jelas penulis mengerahkan usaha luar biasa untuk menyelesaikan masalah ini.
Sangat disayangkan Apple baru menyadari masalah setelah orang harus sampai sejauh ini
Pada akhirnya saya menyelesaikannya dengan membuka batasan Mac di BetterDisplay, lalu menggabungkan kabel DisplayLink dan dongle HDMI bertenaga
5120x1440 @ lodpi terlalu buram, tetapi akhirnya stabil di 10240x2880 @ 120Hz HDR
Saya tertawa melihat judulnya. Penderitaan OP terasa sangat relate
Penulis kemungkinan juga memulai dengan pengetahuan display yang hampir nol
Saya juga hampir gila karena monitor 4K eksternal terlihat buram di M4 MacBook baru saya
Menyalin pengaturan lama pun tidak menyelesaikannya, dan saya mulai curiga apakah Apple hanya mengoptimalkan untuk display buatannya sendiri
Bahkan Windows 11 tidak punya masalah seperti ini, tetapi di macOS teks terlihat canggung pada monitor non-Apple
Dulu pada era Intel Mac saya juga mengalami masalah ini saat terhubung lewat dock Thunderbolt
Saya berharap mereka kembali mendukung opsi subpixel rendering
Saya sudah 8 tahun memakai monitor 43" 4K pada skala 1x, dan tidak merasakan perbedaan antara Linux, M1, dan M4
Kalau monitor Anda mungkin punya EDID yang bermasalah, ini bisa diatasi dengan aplikasi CLI screenresolution
Dengan itu saya bisa mengatur resolusi dan refresh rate sesuka hati, dan memakainya dengan stabil hingga 100Hz
Apakah penulis mencoba membuat display 4K itu dirender sebagai framebuffer 8K lalu di-downscale?
Saya penasaran apa keuntungannya dibanding 4K low-DPI biasa. Apakah ini semacam anti-aliasing gratis?
Di Windows, teks bisa terlihat buram pada scaling 1.5x, tetapi di macOS framebuffer 6K di-downscale ke 4K agar ketajaman tetap terjaga
Bahkan pada monitor 2K, jika framebuffer virtual 5K diperkecil ke 2K, hasilnya jauh lebih tajam daripada 2K bawaan macOS
Saya juga mengalami masalah serupa di M5 Air
Monitor 4K 60Hz baik-baik saja, tetapi saat dua monitor gaming 4K refresh rate tinggi dihubungkan sekaligus, salah satunya tidak terdeteksi
Setelah mencoba mengganti kabel, saya akhirnya sadar penyebabnya adalah batas bandwidth
Ini bukan konfigurasi Retina yang umum.
Framebuffer-nya jauh lebih besar daripada resolusi sebenarnya lalu di-downscale, jadi ini pengaturan yang tidak lazim
Karena kebanyakan pengguna tidak menginginkan konfigurasi seperti ini, tampaknya Apple tidak terlalu peduli
jadi agak mengecewakan bahwa Mac, yang dianggap platform andalan untuk kreator, tidak bisa melakukannya
Kalau HiDPI, bukankah itu 1080p@2x? Apakah itu masih memungkinkan?
Tetapi saya tidak mengerti kenapa harus memakai buffer 7680x4320.
Di M4 Mac saya memakai display 4K dengan buffer 5120x2880(2560x1440@2x) dan itu berjalan baik
Ini di macOS Sequoia
Itu sebenarnya hanya 2160p@2x pada monitor 8K. Skala 100% di 4K memang tidak enak dilihat di OS mana pun
Tulisan ini akan lebih meyakinkan kalau ada screenshot perbandingan blur teks