macOS 15.8.2 把窗口里的 OpenGL 弄坏了 — Hacker News 中文摘要
来源:developer.apple.com — 108 分
📋 概述
开发者把 MacBook Pro 从 15.8 升到 15.8.2 候选版后,所有挂在窗口上的 OpenGL 上下文都拿不到默认帧缓冲:NSOpenGLView 和 setView: 全中招,画面直接空白。文章给出了最小复现程序、内核日志和调用链,并把这类问题定位到 IOGPU 的 surface 绑定失败上,只有窗口表面这条路坏了,离屏 FBO 与 CAOpenGLLayer 仍然正常。
🔑 核心要点
- 症状是 kCGLCPHasDrawable 返回 0,glCheckFramebufferStatus 返回 GL_FRAMEBUFFER_UNDEFINED(0x8219)。
- 内核日志显示 IOGPUGLDrawableUserClient 收到非法 surface ID,随后 CGSBindSurface 成功但 IOGPU 调用返回 kIOReturnBadArgument。
- 离屏 FBO、CAOpenGLLayer 与 NSOpenGLLayer 在同进程里渲染正常,只有窗口表面路径损坏。
- 公开报告里 kitty、Alacritty、Godot、Bambu Studio、KiCad、DJI Studio 都出现同样白屏,15.8.1 一切正常。
- 临时绕行办法是渲染到 IOSurface 支撑的 FBO 再交给 CALayer 显示,或用 CAOpenGLLayer。
💡 金句
On 24H219: nothing is drawn and it prints hasDrawable=0 status=0x8219 glError=0x506.
👍 0
👎 0
← 返回 Hacker News 首页