1P by GN⁺ 1시간전 | ★ favorite | 댓글 1개
  • 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 불가
  • MaxSrcRectWidthForPipeMaxVideoSrcDownscalingWidth드라이버 로드 시 고정되어 런타임 변경 불가
    • 포트 변경, 클램쉘 모드, 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)
  • 제한은 두 단계로 작동
    1. MaxSrcRectWidthForPipe[0](6720) → 모드 열거 단계에서 제한
    2. 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)를 수정하는 것
    1. 하드코딩 상수 0x1A40 → 0x1E00으로 상향
    2. 단일 파이프에서도 멀티파이프 HiDPI 백킹스토어 허용
    3. 연결된 디스플레이 기반의 동적 할당 허용
    4. 런타임 속성 또는 부트 인자 노출
  • 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만 지원한다고 속이는 식으로 협상했을 가능성이 있음.
        이번 문제도 그 연장선일 수 있음
  • 작성자가 이 문제를 해결하려고 엄청난 노력을 들인 게 보임.
    이렇게까지 해야 Apple이 문제를 인식한다는 게 안타까움

    • 나도 57" G9 울트라와이드에서 PIP/PBP 설정 때문에 고생했음
      결국 BetterDisplay에서 Mac 제한을 해제하고, DisplayLink 케이블전원형 HDMI 동글을 조합해 해결함
      5120x1440 @ lodpi는 너무 흐릿했지만, 10240x2880 @ 120Hz HDR로 안정화시킴
      제목 보고 웃음이 나왔음. OP의 고통이 너무 공감됨
    • 나도 주말 내내 머리 싸매고 해결책을 찾았지만 마땅한 우회 방법이 없었음
    • 나도 비슷한 문제를 겪었는데, Claude나 GPT로 하드웨어 문제를 탐색하니 빠르게 해결 단계를 제시해줘서 유용했음
      작성자도 아마 디스플레이 지식이 거의 없는 상태에서 시작했을 듯함
  • 나도 새 M4 MacBook에서 외부 4K 모니터가 흐릿하게 보여서 미치는 줄 알았음
    이전 설정을 복제해도 해결되지 않았고, 혹시 Apple이 자사 디스플레이만 최적화하는 게 아닌가 의심됨

    • macOS의 해상도·스케일링 처리 방식은 여전히 이상함
      Windows 11조차 이런 문제는 없는데, macOS는 비Apple 모니터에서 글자가 어색하게 보임
      예전 Intel Mac 시절에도 Thunderbolt 도크 연결 시 이런 문제를 겪었음
      서브픽셀 렌더링 옵션을 다시 지원해줬으면 함
    • “lodpi”가 왜 흐릿하다는 건지 모르겠음.
      나는 43" 4K 모니터에서 1x 스케일로 8년째 쓰고 있는데, Linux나 M1, M4 간 차이를 못 느꼈음
    • 나도 BetterDisplay로 모든 조합을 시도했지만, 여전히 글꼴이 흐릿했음. 큰 5k2k 모니터에서는 특히 답답했음
    • 요즘 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 4KM5 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라는 비정상적 구성을 말하는 듯함
  • 글에 텍스트 블러 비교 스크린샷이 있으면 더 설득력 있을 것 같음

    • 피드백 고마움. 정확한 촬영이 쉽진 않지만, 퇴근 후 사진을 추가해 업데이트해볼 예정임