Skip to content

taresky/lg-27gx790b-macos-dsc-panic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

LG 27GX790B(2K 540Hz)在 Mac 上反复死机的排查与解决

TL;DR: LG UltraGear 27GX790B-B 在 480/540Hz 下需要 8 个 DSC 水平切片,而 Apple Silicon 的显示协处理器(DCP)固件最多只支持 4 个,遇到就直接内核崩溃(kernel panic)。这是 Apple 固件缺陷,第三方无法修补。可用的解决办法:换一个 USB-C 转 HDMI 2.0(4K@60 级)转接头,显示器保持 PC 模式,在 macOS 里选原生 2560×1440 分辨率,可稳定跑 144Hz,零死机。

如果你是搜索这段 panic 日志进来的,你来对地方了:

DCPEXT4 PANIC - Unsupported number of horizontal slices for DSC
 - iomfb_ap_callee_0(24)

环境

项目 内容
主机 Mac Studio(M3 Ultra)
系统 macOS 27.0 beta(26A5368g);但稳定版同样受影响,Apple 社区有 macOS 15.3 / 26.5 的同款报告
显示器 LG UltraGear 27GX790B-B(27" 2560×1440 OLED,最高 540Hz,DP 2.1 + HDMI 2.1)

同系列(如 27GX790A)以及其他"1440p 480Hz+"级别的高刷 DSC 显示器都可能撞上同类问题。

症状

不同接法,三种截然不同的表现:

  • HDMI 2.1 线 + 显示器 HDMI 设为 2.1(PC) 模式:开机 100% 死机,直接重启,进不了系统。panic 日志如上。
  • USB-C 转 DP 线: 能用,但偶发卡顿和死机。
  • 显示器 HDMI 设为 2.1(AV)(即"TV 模式"): 正常进系统,但被锁在 120Hz,而且频繁闪烁。

原因

死机的完整因果链,每一环都有实证:

  1. 2K@540Hz 必须开 DSC(显示流压缩)。像素时钟约 2.1 GHz,任何现有接口都塞不下未压缩信号。
  2. HDMI 2.1 规范强制规定了 DSC 切片数:每个切片引擎最高处理 340 Mpx/s,540Hz ≈ 2.1 Gpx/s → 必须切成 8 个水平切片。显示器 PC 模式的 EDID 也明确宣告 DSC_MaxSlices = 8(可从 ioreg 抓 EDID 解析确认)。
  3. Apple DCP 固件最多只支持 4 个切片。 从本机提取显示固件(t603xdcp.im4p)反汇编确认:IOMFB::UPBlock_DSC_v2::compute_encoder 只接受 1/2/4 切片,其他值直接触发 RTKit 断言——不是拒绝该模式,而是把整台机器拖死。
  4. 为什么 HDMI 必炸而 DP 不炸: Mac 的 HDMI 口内部其实是 DP→HDMI 转换芯片(MegaChips MCDP29xx),DSC 必须按 HDMI 规则(查表,540Hz=8 切片)由 Mac 端编码;而 DP 协议里切片数由源端自选,macOS 知道自己只能切 4 刀,会主动把 360Hz 以上的模式从列表里剪掉——所以 USB-C 转 DP 最高给到 240Hz,不会尝试致命模式。
  5. 为什么 TV 模式不炸: 2.1(AV) 模式下显示器上报一份精简 EDID,完全不含 DSC 字段,链路走 TMDS(无 DSC),panic 引信被物理拆除,代价是 120Hz 上限。

这不是某个 macOS 版本的回归:同款 panic 在 macOS 15.3(Sequoia)、26.5(Tahoe)、27 beta 上都有记录。它是 DCP 固件的长期能力缺口,只有 Apple 能修。同类的 DCP 断言 panic(4K@240Hz、5K@120Hz 显示器)已被社区记录一年以上,Apple 修过又回归过。

解决方案(实测有效)

USB-C 转 HDMI 2.0 转接头 + 显示器 PC 模式 + 原生 1440p@144Hz。

原理:HDMI 2.0 只有 TMDS 信号,天生没有 DSC,从根上排除死机可能。而 LG 在这台显示器的 EDID 里特意留了一档 593.75 MHz 的 144Hz 时序,恰好贴着 HDMI 2.0 的 600 MHz 上限——就是给 2.0 级链路准备的。

两个实测踩过的坑:

  1. 转接头必须是真"4K@60"(600 MHz TMDS)级。 老的、便宜的"4K@30"级(HDMI 1.4,≤340 MHz)转接头只能跑 1440p@60。买之前认准 4K 60Hz 标称。
  2. macOS 默认分辨率下看不到 144Hz。 系统默认的"看起来像 2560×1440"是 5K 超采样(HiDPI)变体,这一族模式只生成到 60Hz。需要:系统设置 → 显示器 → 高级… → 打开"显示所有分辨率" → 选 "2560 × 1440(低分辨率)" → 刷新率里就有 144Hz 了。对物理 1440p 面板来说这才是 1:1 原生输出,清晰度无实际损失。

各接法规格上限(本显示器 + Apple Silicon)

接法 上限 死机风险
HDMI 2.1 线直连,PC 模式 开机必死机,勿用
USB-C 转 HDMI 2.1(48G)转接 DSC 直通,同样死机,勿买
显示器 TV/AV 模式(任何 HDMI 链路) 120Hz 无,但闪烁且慢
USB-C 转 HDMI 2.0(4K60 级)+ PC 模式 144Hz 无(推荐)
USB-C 转 DP 240Hz 低(macOS 自动剪掉危险模式)

我的显示器 DP 口因故不可用,否则 USB-C 转 DP @ 240Hz 是更高的安全上限。

暂未尝试的方案

按可行性排序,留给有条件的读者验证:

  1. HDMI EDID 管理器冲 240Hz(理论可行,未实测)。 在 Mac 与显示器之间串一个支持 FRL 直通的 EDID 管理器(如 HDFury Dr.HDMI 8K,约 $99,支持 48Gbps FRL6 直通 + 自定义 EDID 槽),灌入一份删掉 240Hz 以上时序的定制 EDID。240Hz 只需 4 切片,在 DCP 能力内;Mac 从上电起就看不到致命模式。注意:二三十块的"EDID 欺骗器"都是 TMDS 级、过不了 FRL 握手,买了白买。
  2. 等 Apple 修固件。 DCP 固件随 macOS 更新下发。请一起去 Feedback Assistant 报告(附 /Library/Logs/DiagnosticReports/ 里的 panic 日志),报的人越多优先级越高。
  3. 等 LG 发显示器固件。 27GX790B 目前无公开固件(经 LG Switch 应用 + USB 上行线刷写)。若未来固件调整 DSC 宣告,可能根治。
  4. 换显示器。 唯一有完整成功案例的"修复":Apple 社区同款问题的楼主 RMA 后换了 ASUS PG32UCDM3(同样依赖 DSC),完全正常——问题特定于这块 LG 要求的切片配置,不是 DSC 本身。

确认无效的方案(别浪费时间)

  • BetterDisplay / 任何软件层 EDID 覆写: Apple Silicon 上不在开机阶段生效,拦不住开机死机(BetterDisplay 作者本人确认 DCP panic "只有 Apple 能修")。
  • /Library/Displays 显示器覆写文件: Apple Silicon 完全忽略。
  • 降刷新率到 60Hz 再接 HDMI PC 模式: 无效,panic 发生在开机模式协商阶段,早于任何用户设置(Apple 社区案例实测 60Hz 依旧崩)。
  • 退回稳定版 macOS: 同款 panic 在稳定版上同样存在。

如果你的显示器也疑似这类问题:自查方法

# 1. 看 panic 日志里是否有 DCPEXT + DSC/slices 字样
ls /Library/Logs/DiagnosticReports/ | grep panic

# 2. 抓当前 EDID(在能进系统的模式下),解析 HDMI Forum VSDB 的 DSC_MaxSlices 字段
ioreg -l | grep '"EDID" ='

# 3. 列出 macOS 实际提供的模式,判断瓶颈在链路还是在设置
system_profiler SPDisplaysDataType

粗算你的显示器需要几个切片:像素时钟(GHz)÷ 0.34,向上取整到 1/2/4/8。结果 ≤4 安全,≥8 在 HDMI 上必死机。 例如 1440p@240Hz ≈ 0.94 GHz → 3 → 4 切片,安全;1440p@480Hz ≈ 1.9 GHz → 6 → 8 切片,死机。


English Summary (for searchability)

Panic: DCPEXT PANIC - Unsupported number of horizontal slices for DSC - iomfb_ap_callee_0 on Apple Silicon Macs with the LG UltraGear 27GX790B-B (1440p 540Hz OLED), 100% reproducible at boot over HDMI 2.1 with the monitor in 2.1(PC) mode. Affects stable macOS (15.3, 26.x) and betas alike.

Root cause: 1440p@480/540Hz mandates 8 DSC horizontal slices per the HDMI 2.1 fixed slice table (340 Mpx/s per slice), and the monitor's EDID advertises DSC_MaxSlices = 8 — but Apple's DCP display firmware (verified by disassembling t603xdcp firmware, IOMFB::UPBlock_DSC_v2::compute_encoder) supports only 1/2/4 slices and asserts (kernel panic) instead of pruning the mode. Mac HDMI ports are internal DP→HDMI PCONs, so the HDMI slice mandate lands on the DCP encoder. DisplayPort lets the source choose ≤4 slices, which is why USB-C→DP tops out safely at 240Hz.

Working fix: USB-C to HDMI 2.0 (4K60-class, 600 MHz TMDS) adapter + monitor in PC mode → no FRL, no DSC, no panic. The monitor exposes a 593.75 MHz timing giving 1440p@144Hz. In macOS Displays settings, enable "Show all resolutions" and pick the native (low resolution) 2560×1440 — the default HiDPI variant caps at 60Hz. Untested-but-promising: an FRL-capable EDID manager (e.g. HDFury Dr.HDMI 8K) serving a custom EDID capped at 240Hz (240Hz needs only 4 slices). Software EDID overrides (BetterDisplay, /Library/Displays) do not apply at boot on Apple Silicon and cannot prevent this panic. Only Apple can fix the firmware — please file Feedback Assistant reports.

参考链接

排查时间:2026 年 7 月。macOS 后续版本可能修复此问题,以实测为准。

About

LG 27GX790B (1440p 540Hz) kernel panics Apple Silicon Macs: 'Unsupported number of horizontal slices for DSC' — root cause analysis and working fix

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors