mac os使用X11转发报错libGL error: failed to load driver: swrast的解决方法
这是典型的间接 GLX(Indirect GLX)被禁用的报错。SSH X 转发时 OpenGL 走间接渲染,但现在的 X Server(XQuartz、Xorg)出于安全原因默认都关了 IGLX,应用找不到匹配的 visual,Mesa 回退到软件渲染 swrast 也跟着失败。
如果你是 Mac + XQuartz(最可能的情况),在 Mac 终端执行:
defaults write org.xquartz.X11 enable_iglx -bool true
然后彻底退出 XQuartz 再重开(只关窗口不算),重新 ssh 连接。改完验证一下:
glxinfo | grep -i "direct rendering"
如果显示端是 Linux 的 Xorg,在 /etc/X11/xorg.conf.d/ 里加一段:
Section "ServerFlags" Option "AllowIndirectGLX" "on"EndSection
重启 X(或 startx -- +iglx),效果一样。
另外两个省事的办法:
- 只是开 xeDebug 这类 GUI 的话,VNC 没这个问题——VNC 的 X Server 在远端本机直接渲染,不走间接 GLX
- 也可以先试试
LIBGL_ALWAYS_INDIRECT=1 <应用名>,强制间接渲染(但前提还是上面那步先把 IGLX 打开)
你那边显示端是 Mac 的 XQuartz 还是 Linux?如果按上面改完还报错,把 glxinfo 的输出贴我看看。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







