概要
- Apple Silicon M4およびM5世代から、外部4Kディスプレイでフル解像度HiDPI(3840x2160@2x)が利用不可
- 最高HiDPIモードは3360x1890(6720x3780バッキングストア)に制限
- ハードウェア制限ではなく、ソフトウェア側のモード生成ロジックの変更が原因
- 各種回避策(EDID/Plist/IOKit/WindowServer再起動等)は無効
- Appleによる修正やユーザー向けオプション追加が必要
Apple Silicon M4/M5での4K外部ディスプレイHiDPI制限の概要
- Apple Silicon M4/M5世代 以降、外部4Kディスプレイで フル解像度HiDPI(3840x2160@2x) が選択不可
- 最大HiDPIモード は 3360x1890(6720x3780バッキングストア) に制限され、従来のM2/M3世代では制限なし
- ハードウェア制限ではなく、DCP(Display Coprocessor)上の仕様は M2 Max/M5 Maxで同一
- WindowServerのモードリスト がM5 Maxでは制限されているため、ユーザーは
- 4K実解像度で文字がぼやける(HiDPI無効)
- 3.3K(3360x1890)HiDPIで作業領域が大幅減少 いずれかを選択せざるを得ない状況
各種回避策の検証と結果
- display override plist(scale-resolutions) を設置しても M5 Maxでは効果なし
- M2 Maxでは3840x2160 HiDPIが有効になるが、M5 MaxではWindowServerがモードを列挙しない
- EDIDパッチ(ソフトウェア上書き) も効果なし
- 4095x4095等の非現実的なタイミングでは失敗
- waydabber(BetterDisplay開発者)はM4で8Kネイティブを偽装し8Kフレームバッファを実現した例あり
- ただし実際の4Kパネルでは8K信号を受けられないため、現実的な回避策にはならない
- モニターEEPROMへのEDID書き込み も不可
- LG 32UN880のEEPROMはread-only、またはDDC書き込みが失敗
- IOKit Registry Override(DisplayHints等) も不可
- AppleDisplayCrossbarドライバがユーザースペースからの書き換えを拒否
- WindowServerキャッシュ削除・再起動 も効果なし
- killall WindowServerでは再起動せず、フルリブートでもモード追加不可
- 接続ディスプレイ数削減 も影響なし
- 2台接続でもモードリストは変わらず
- HDMI接続への切り替え も未検証だが、帯域がDP1.4より低く、改善は見込めない
- SkyLight Private API(SLConfigureDisplayWithDisplayMode) もバリデーションで弾かれる
- DCP由来のモードリスト外のモードは適用不可
技術的な制限の本質
- DCPの報告値(MaxW, MaxH, MaxActivePixelRate等)は M2 Max/M5 Maxで同一
- WindowServerのモードリスト のみが異なり、 M5 Maxでは3360x1890 HiDPIまで
- ソフトウェアEDID上書きでネイティブ解像度を偽装 すればスケーリング上限を引き上げ可能だが、ディスプレイが対応できないため実用的でない
- M2/M3世代 :ネイティブ解像度の2.0倍までHiDPI生成(3840x2160→7680x4320バッキングストア)
- M4/M5世代 :1.75倍程度に制限(3840x2160→6720x3780バッキングストア)
原因・仕様変更の考察
- BetterDisplay開発者 waydabber の見解
- M4世代以降、 WindowServerがフレームバッファサイズを動的に制限
- 将来的なディスプレイ追加を想定し、リソース節約のためHiDPI上限を低減
- 例外的に他のディスプレイが全く接続されていない場合などは高解像度が選べる可能性もあるが、通常は制限あり
今後の対応策・要望
- Appleによる修正 が必要
- モード生成ロジックのスケーリング上限引き上げ
- ユーザー向けHiDPI解像度強制オプションの提供
- Apple Feedback(FB22365722) にて要望提出済み
- 5Kや8Kパネル ではネイティブ解像度が高いため、この制限に該当しない可能性
診断コマンド例(抜粋)
- DCPレート制限・ネイティブキャップ確認
ioreg -l -w0 | grep -o '"MaxActivePixelRate"=[0-9]*\|"MaxW"=[0-9]*\|"MaxH"=[0-9]*' | paste - - - | sort -u
- ディスプレイモード一覧取得(HiDPI含む)
- BetterDisplayやSwitchResX等でCGSGetNumberOfDisplayModes利用
- DisplayHintsやConnectionMapping確認
ioreg -l -w0 | grep -B5 -A2 'MaxActivePixelRate' | grep -v EventLogioreg -l -w0 | grep "ConnectionMapping"
まとめ
- M4/M5世代Apple Silicon搭載Mac では、 外部4KディスプレイでフルHiDPI(3840x2160@2x) が 事実上不可能
- ソフトウェア的な仕様変更 による制限であり、現時点でユーザーが現実的に回避する方法は存在しない
- Appleによる公式な対応 がなければ、HiDPIと作業領域の両立は困難