Apple Silicon M4·M5 칩에서 외부 4K 디스플레이의 HiDPI 해상도 제한 발생
(smcleod.net)- 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) 값이 하드코딩된 상수로 존재
테스트 환경 및 비교 결과
| 항목 | M5 Max (문제 있음) | M2 Max (정상 동작) |
|---|---|---|
| 칩 | 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의 예산을 초과하여 생성 불가
| Sub-pipe | MaxSrcRectWidth | 용도 |
|---|---|---|
| 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로 추출 가능
-
LZFSE 압축(4.1MB → 16.4MB) 상태이며 암호화되지 않아
- 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)
- 외장 디스플레이 Sub-pipe 0:
- 제한은 두 단계로 작동
-
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, 예산 변화 없음
- WindowServer 캐시 삭제, 연결 디스플레이 수 축소, HDMI 전환, SkyLight 비공개 API(
-
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-hidpiCLI 도구를 제작하여 SkyLight의 비공개SLVirtualDisplayAPI를 이용, 가상 디스플레이(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 모드 사용 가능
Hacker News 의견들
-
최근 MacBook Pro M5 Pro를 처음 샀는데 약간 후회 중임
노트북 자체는 훌륭하지만, 내 LG 38WN95C-W 모니터(3840x1600@144Hz, USB-C) 와 제대로 호환되지 않음
BetterDisplay로 3360x1400 HiDPI는 가능하지만, 익숙했던 화면 공간을 잃게 됨
이전 세대보다 M5가 더 나쁠 줄은 몰랐음. Apple은 많은 걸 잘하지만, 이런 기본적인 부분에서 실수함
이제 Apple Intelligence에게 아내에게 새 모니터가 필요하다고 설명하는 법을 물어봐야 할 듯함- 나도 비슷한 문제를 겪었는데, Tim Cook에게 이메일을 보냈더니 해결됨
Catalina 이후 macOS가 60Hz 이상 주사율을 지원하지 않던 DisplayPort DSC 버그였음
Apple 지원팀은 몇 주간 진단만 반복하다가 “WontFix”로 끝냈지만, 이메일 후 Sonoma에서 수정되었음
관련 포럼 링크- CEO 이메일이 실제로 전달될 거라 기대하진 않지만, 혹시 몰라 나도 보냈음
- 나도 M1 Pro에서 M5 Pro로 업그레이드했는데, 같은 도크와 모니터 조합에서도 4K 60Hz 이상이 안 됨
macOS Sequoia에서 Tahoe로 바꾼 후 발생한 문제임 - 나도 방금 이메일 보냈음. 정말 황당한 문제임
- 이 얘기 듣고 알았는데, 그래서 내 MacOS가 같은 144Hz 모니터에서도 Windows보다 느리게 느껴졌던 이유였음
- 완전히 고쳐진 건 아님. Apple이 DP 1.4를 조작해 ProDisplay XDR을 구동했는데,
비Apple 모니터에는 GPU가 1.2만 지원한다고 속이는 식으로 협상했을 가능성이 있음.
이번 문제도 그 연장선일 수 있음
- 나도 비슷한 문제를 겪었는데, Tim Cook에게 이메일을 보냈더니 해결됨
-
작성자가 이 문제를 해결하려고 엄청난 노력을 들인 게 보임.
이렇게까지 해야 Apple이 문제를 인식한다는 게 안타까움- 나도 57" G9 울트라와이드에서 PIP/PBP 설정 때문에 고생했음
결국 BetterDisplay에서 Mac 제한을 해제하고, DisplayLink 케이블과 전원형 HDMI 동글을 조합해 해결함
5120x1440 @ lodpi는 너무 흐릿했지만, 10240x2880 @ 120Hz HDR로 안정화시킴
제목 보고 웃음이 나왔음. OP의 고통이 너무 공감됨 - 나도 주말 내내 머리 싸매고 해결책을 찾았지만 마땅한 우회 방법이 없었음
- 나도 비슷한 문제를 겪었는데, Claude나 GPT로 하드웨어 문제를 탐색하니 빠르게 해결 단계를 제시해줘서 유용했음
작성자도 아마 디스플레이 지식이 거의 없는 상태에서 시작했을 듯함
- 나도 57" G9 울트라와이드에서 PIP/PBP 설정 때문에 고생했음
-
나도 새 M4 MacBook에서 외부 4K 모니터가 흐릿하게 보여서 미치는 줄 알았음
이전 설정을 복제해도 해결되지 않았고, 혹시 Apple이 자사 디스플레이만 최적화하는 게 아닌가 의심됨- macOS의 해상도·스케일링 처리 방식은 여전히 이상함
Windows 11조차 이런 문제는 없는데, macOS는 비Apple 모니터에서 글자가 어색하게 보임
예전 Intel Mac 시절에도 Thunderbolt 도크 연결 시 이런 문제를 겪었음
서브픽셀 렌더링 옵션을 다시 지원해줬으면 함 - “lodpi”가 왜 흐릿하다는 건지 모르겠음.
나는 43" 4K 모니터에서 1x 스케일로 8년째 쓰고 있는데, Linux나 M1, M4 간 차이를 못 느꼈음 - 나도 BetterDisplay로 모든 조합을 시도했지만, 여전히 글꼴이 흐릿했음. 큰 5k2k 모니터에서는 특히 답답했음
- 요즘 macOS 전체 품질이 불안정한 걸 보면, 단순히 회사의 관리 부실 때문일 가능성이 큼
- macOS의 해상도·스케일링 처리 방식은 여전히 이상함
-
혹시 EDID가 꼬인 모니터라면, screenresolution CLI 앱으로 해결할 수 있음
이걸로 임의의 해상도와 주사율을 설정해 100Hz까지 안정적으로 썼음- 고마움. 다만 이 툴은 단순히 해상도와 주사율만 바꾸고, HiDPI 스케일링 제어는 안 되는 듯함
-
혹시 저자가 4K 디스플레이를 8K 프레임버퍼로 렌더링 후 다운스케일하려는 건가?
단순 4K low-DPI 대비 어떤 이점이 있는지 궁금함. 일종의 무료 안티앨리어싱인가?- 맞음. macOS는 2x 스케일이 아닐 때 텍스트 렌더링 품질이 나쁨, 그래서 그렇게 하는 것임
- 핵심은 비네이티브 해상도에서 스케일링 시 품질 저하를 막기 위함임
Windows는 1.5x 스케일링 시 텍스트가 흐릿해지지만, macOS는 6K 프레임버퍼를 4K로 다운스케일해 선명도를 유지함 - 나도 BetterDisplay로 같은 방식 사용 중임
2K 모니터에서도 가상 5K 프레임버퍼를 2K로 줄이면 macOS 기본 2K보다 훨씬 선명함
-
나도 M5 Air에서 비슷한 문제를 겪음
60Hz 4K 모니터는 괜찮지만, 두 개의 고주사율 4K 게이밍 모니터를 동시에 연결하면 하나가 인식되지 않음
케이블을 바꿔보다가 결국 대역폭 한계 때문임을 깨달음 -
이건 일반적인 Retina 구성이 아님.
프레임버퍼가 실제 해상도보다 훨씬 커서 다운스케일되는 특이한 설정임
대부분의 사용자는 이런 구성을 원하지 않기 때문에 Apple이 신경 안 쓰는 듯함- 나는 표준 LG UltraFine 4K를 M5 MacBook Pro에 연결했을 뿐인데, 이게 비정상 구성이라니 이해 안 됨
- 그게 일종의 2x 슈퍼샘플링 아닌가? 완벽한 안티앨리어싱을 위해선 그 정도는 필요함
- 나도 이게 비정상 구성이라는 의견에 동의함. 왜 굳이 2배 픽셀로 렌더링 후 다시 절반으로 줄이는지 의문임
- 하지만 보급형 Windows 노트북도 이런 해상도 처리를 무리 없이 하는데,
창작자용 플랫폼의 대표주자인 Mac이 이런 걸 못 한다는 건 좀 실망스러움
-
HiDPI라면 1080p@2x 아닌가? 그건 여전히 가능한가?
- 맞음. 3840x2160 디스플레이라면 macOS에서 1920x1080@2x로 쓰는 게 일반적임
그런데 왜 7680x4320 버퍼를 쓰는지 모르겠음.
나는 M4 Mac에서 4K 디스플레이를 5120x2880(2560x1440@2x) 버퍼로 쓰는데 잘 작동함
macOS Sequoia 기준임 - 나도 이 글의 요점을 잘 모르겠음. 4K 모니터에서 4K HiDPI는 존재하지 않음.
그건 8K 모니터에서 2160p@2x일 뿐임. 4K 100% 스케일은 어느 OS에서나 보기 안 좋음 - 결국 2160p@2x라는 비정상적 구성을 말하는 듯함
- 맞음. 3840x2160 디스플레이라면 macOS에서 1920x1080@2x로 쓰는 게 일반적임
-
글에 텍스트 블러 비교 스크린샷이 있으면 더 설득력 있을 것 같음
- 피드백 고마움. 정확한 촬영이 쉽진 않지만, 퇴근 후 사진을 추가해 업데이트해볼 예정임