- M4·M5 세대에서는 외부 4K 모니터에서 3840×2160@2x HiDPI 모드가 지원되지 않고, 최대 3360×1890까지만 가능함
- 이 제한은 Display Coprocessor(DCP) 펌웨어 구조 변경으로 인해 생기며, 하드웨어 성능 문제는 아님
- M5 Max의 프레임버퍼 예산이 파이프별로 재할당되어 단일 스트림 파이프의 폭이 6720픽셀로 축소됨
- EDID 수정, 포트 변경, 드라이버 속성 조정 등 다양한 방법이 시도되었으나 모두 효과 없음
- 현재 완전한 해결책은 Apple이 DCP 펌웨어를 수정하는 것이며, 임시로는 가상 디스플레이 미러링 방식으로 2x HiDPI 구현 가능함
Apple Silicon M4/M5 외부 4K 디스플레이 HiDPI 제한 분석
-
M4 및 M5 세대 Apple Silicon에서는 외부 4K 모니터의 완전한 2x HiDPI 모드(3840×2160@2x) 가 제공되지 않음
- 최대 HiDPI 모드는 3360×1890으로 제한되어, 이전 세대(M2/M3)에서 가능했던 3840×2160 HiDPI가 불가능
- 사용자는 비HiDPI 모드의 흐릿한 텍스트 또는 선명하지만 축소된 작업 공간 중 하나를 선택해야 함
- 이 제한은 하드웨어 한계가 아닌 Display Coprocessor(DCP) 펌웨어 구조 변경에서 비롯됨
- M5 Max는 사양상 8K@60Hz를 지원하지만, DCP가 보고하는 기능은 M2 Max와 동일
- M4/M5 세대에서 프레임버퍼 예산(framebuffer budget) 이 파이프별로 재할당되어, 표준 4K 경로의 예산이 7680픽셀에서 6720픽셀로 축소됨
- DCP 펌웨어 디스어셈블 결과, 6720(0x1A40) 값이 하드코딩된 상수로 존재
테스트 환경 및 비교 결과
| 칩 | Apple M5 Max | Apple M2 Max |
| 모델 ID | Mac17,6 | Mac14,6 |
| GPU 코어 | 40 | 38 |
| macOS | 26.4 (25E246) | 26.4 (25E246) |
| 디스플레이 | LG HDR 4K 32UN880 | LG HDR 4K 32UN880 |
| 연결 | USB-C/Thunderbolt (HBR3, 8.1Gbps, 4 lanes) | 동일 |
| 최대 HiDPI 모드 | 3360×1890 | 3840×2160 |
- 두 시스템 모두 MaxActivePixelRate, MaxW, MaxH, MaxBpc 등 DCP 파라미터는 동일
- system_profiler 출력에서 M5 Max의 백킹스토어는 6720×3780, UI는 3360×1890 HiDPI로 표시
- HiDPI modes 목록에서도 3840×2160@2x 항목이 존재하지 않음
프레임버퍼 및 파이프 구조 변화
- M2 Max는 컨트롤러 단위의 단일 예산(MaxSrcRectWidth=7680)을 사용
- M5 Max는 서브파이프별 예산 구조(MaxSrcRectWidthForPipe=(6720,7680,7680,7680))로 변경
- 단일 스트림 4K 출력은 sub-pipe 0(6720) 만 사용
- 8K 출력 시 2개 sub-pipe(0,2)를 사용
- 이로 인해 4K HiDPI(7680×4320 백킹스토어)는 sub-pipe 0의 예산을 초과하여 생성 불가
| 0 | 6720 | 단일 스트림 (표준 디스플레이) |
| 1–3 | 7680 | 멀티 파이프 (8K 등) |
-
MaxVideoSrcDownscalingWidth 비교
컨트롤러 MaxSrcRectWidthForPipe[0] MaxVideoSrcDownscalingWidth 비율 내부 디스플레이 5120 10744 2.1x 외부 디스플레이 6720 6720 1.0x - 내부 디스플레이는 스케일러 여유가 있으나, 외부는 여유가 없어 3840×2160 HiDPI 불가
-
MaxSrcRectWidthForPipe와 MaxVideoSrcDownscalingWidth는 드라이버 로드 시 고정되어 런타임 변경 불가
- 포트 변경, 클램쉘 모드, EDID 수정 등에서도 동일하게 6720 유지
DCP 펌웨어 분석
- 펌웨어 파일은 /System/Volumes/Preboot/<UUID>/restore/Firmware/dcp/ 경로에 존재하며, M5 Max는 t605xdcp.im4p 사용
- LZFSE 압축(4.1MB → 16.4MB) 상태이며 암호화되지 않아 img4tool로 추출 가능
- HiDPI 관련 속성(MaxVideoSrcDownscalingWidth, MaxSrcRectWidthForPipe, IOMFBMaxSrcPixels, ExternalAppleLook)이 모두 이 펌웨어 내부에서 정의
- IOMFB::UPPipe::verify_downscaling(SwapRequest *) 함수가 MaxVideoSrcDownscalingWidth를 기준으로 요청된 소스 폭을 검증
- Ghidra 분석 결과
- 외장 디스플레이 Sub-pipe 0: 0x1A40(6720)
- Sub-pipe 1~3: 0x1E00(7680)
- 내장 디스플레이 Sub-pipe 0: 0x1400(5120)
- 모든 Sub-pipe 높이: 0x1200(4608)
- 제한은 두 단계로 작동
- MaxSrcRectWidthForPipe[0](6720) → 모드 열거 단계에서 제한
- MaxVideoSrcDownscalingWidth(6720) → 런타임 검증 단계에서 제한
- 동일 컨트롤러의 다른 파이프가 7680을 지원하므로, 하드웨어 제약이 아닌 펌웨어 정책임이 확인됨
문제 해결 시도
-
Display Override Plist
- /Library/Displays/.../DisplayVendorID-1e6d/DisplayProductID-7750에 7680×4320 HiDPI 해상도 추가
- M5 Max에서는 효과 없음, M2 Max에서는 정상 작동
- M5 Max의 WindowServer가 해당 모드를 열거하지 않음
-
EDID 소프트웨어 패치
- IODisplayEDID에 수정된 EDID 삽입 (4095×4095, 최대 픽셀 클럭 655.35MHz 등)
- 효과 없음
- BetterDisplay 개발자는 M4에서 소프트웨어 EDID 오버라이드로 8K 프레임버퍼 확보 성공 사례 보고
- 그러나 4K 패널은 실제 8K 신호를 표시할 수 없어 실질적 해결책 아님
-
EDID 하드웨어 플래시
- 7680×4320@60Hz(VIC 199) 모드를 EDID에 추가 후 LG 모니터 EEPROM에 플래시
- DCP가 MaxW=7680, MaxH=4320으로 업데이트되지만 sub-pipe 0의 6720 제한은 유지
- 8K 타이밍을 기본으로 설정 시 3840×2160@2x 모드가 생성되나, macOS가 실제 8K 신호를 출력하려 시도하여 표시 불가
-
IOKit Registry 수정
- DisplayHints, ConnectionMapping 등 DCP 속성 직접 수정 시도
- 커널 드라이버(AppleDisplayCrossbar)가 쓰기 거부(kIOReturnUnsupported)
-
기타 시도
- WindowServer 캐시 삭제, 연결 디스플레이 수 축소, HDMI 전환, SkyLight 비공개 API(SLConfigureDisplayWithDisplayMode) 호출 등 모두 실패
- Apple 디스플레이로 위장(EDID에 Apple Vendor ID 삽입) 시 “Apple Pro Display X”로 표시되지만 ExternalAppleLook=No, 예산 변화 없음
-
IOKit 속성 쓰기 결과 요약
서비스 메서드 결과 IOMobileFramebufferShim IORegistryEntrySetCFProperty kIOReturnUnsupported AppleDisplayCrossbar 등 IORegistryEntrySetCFProperty kIOReturnNotReady IOAVController IORegistryEntrySetCFProperty Accepted (단, DCP로 전달되지 않음)
RuntimeProperty 부트 인자 테스트
- 펌웨어에는 IOMobileFramebuffer::parse_RTP_boot_args() 함수가 존재하며, 부트 시 속성 재정의 가능성 있음
- 예: iomfb_RuntimeProperty_ExternalAppleLook, iomfb_enable_bw_check, iomfb_dual_pipe_policy 등
- SIP와 Startup Security를 완화한 상태에서 sudo nvram boot-args=로 테스트했으나, DCP 펌웨어는 반응하지 않음
- 해당 코드 경로가 개발용으로만 활성화된 것으로 추정됨
Virtual Display Mirror 임시 우회 방법
-
force-hidpi CLI 도구를 제작하여 SkyLight의 비공개 SLVirtualDisplay API를 이용, 가상 디스플레이(7680×4320) 를 생성하고 실제 4K 패널을 하드웨어 미러링
- 하드웨어 미러 경로는 verify_downscaling 검사를 우회
- system_profiler에서 “Hardware Mirror: Yes”로 표시
- 이 방식으로 3840×2160 HiDPI 구현 가능
- 텍스트가 선명하고 macOS UI가 정상적인 2x 밀도로 렌더링
- 가상 디스플레이는 PQ(ST 2084) EOTF를 사용하며 SDR 패널용 감마 보정 적용
- 단점
- 도구가 상시 실행되어야 하며 종료 시 1.0x로 복귀
- 시스템 설정에 추가 디스플레이가 표시됨
- M2 Max의 네이티브 HiDPI보다 텍스트 렌더링이 약간 다름
- 비공개 API 의존성으로 macOS 업데이트 시 불안정 가능
원인 및 수정 가능성 요약
- M2 Max: 컨트롤러당 7680픽셀 예산 → 3840×2160 HiDPI 가능
- M5 Max: sub-pipe 구조로 변경되어 단일 스트림 파이프(0) 가 6720으로 제한
- 이로 인해 4K HiDPI 최대치가 3360×1890으로 축소
- EDID 수정, 포트 변경, 디스플레이 수 조정 등으로는 변경 불가
- 근본적 해결책은 Apple이 DCP 펌웨어(t605xdcp.im4p)를 수정하는 것
- 하드코딩 상수 0x1A40 → 0x1E00으로 상향
- 단일 파이프에서도 멀티파이프 HiDPI 백킹스토어 허용
- 연결된 디스플레이 기반의 동적 할당 허용
- 런타임 속성 또는 부트 인자 노출
- Apple Feedback FB22365722 제출됨
- Apple은 문제를 인지하고 있으며, 현재는 제품 페이지에 스케일 해상도 제한 경고 추가로 대응 중
진단 명령 요약
- ioreg -l -w0 | grep "IOMFBMaxSrcPixels" : 파이프별 프레임버퍼 예산 확인
- ioreg -l -w0 | grep "MaxVideoSrcDownscalingWidth" : 스케일러 제한 확인
- system_profiler SPDisplaysDataType : 디스플레이 요약
- CGSGetNumberOfDisplayModes : HiDPI 모드 목록 확인
M2 Max 정상 동작 예시
- 3840×2160@2x HiDPI 모드 존재
- DCP 파라미터: MaxW=3840, MaxH=2160, MaxActivePixelRate=497,664,000
- IOMFBMaxSrcPixels에서 MaxSrcRectWidth=7680 확인
- 동일 LG HDR 4K 디스플레이에서 완전한 HiDPI 모드 사용 가능

1 day ago
1







English (US) ·