在 CentOS 上让 Compton 与 3D 应用良好兼容
一、前提与基础配置
- 确认会话为 X11(Compton 是 X11 合成器;在 Wayland 会话中不会生效)。
- 安装 Compton 与基础依赖:
- sudo yum update -y
- sudo yum install -y epel-release
- sudo yum install -y compton mesa-libGL mesa-libEGL libX11 libXext libXrender libXrandr libXcursor libXi
- 建议使用较新的构建(如较新的 compton 或社区维护分支),以获得更好的 GLX/DRI3 兼容性与修复。
- 快速验证驱动与 OpenGL:glxinfo | grep -E “OpenGL vendor|OpenGL renderer|OpenGL version”。
二、针对 3D 应用的关键配置
- 使用 GLX 后端 并开启 DRI3,让 3D 应用走硬件合成路径:
- backend = “glx”
- glx-use-dri3 = true
- vsync = “opengl” 或 true(减少撕裂;若出现卡顿可改为 false 测试)
- 对全屏 3D 应用进行“直传/非重定向”,降低延迟与开销:
- unredirected-fullscreen = true
- 可选:unredirected-blit = true(仅在直传下有意义)
- 降低不必要的开销:
- shadow = false(或 shadow-exclude 对全屏 3D 类应用排除)
- fading = false(避免淡入淡出影响交互)
- focus-exclude = [ “class_g = ‘Your3DApp’” ](按需排除)
- 避免某些驱动/应用组合下的合成器冲突:
- glx-no-stencil = true(遇到黑屏/渲染异常可尝试)
- 帧率与同步:
- fps-limit = 0(由应用/驱动决定上限)或 60/120(稳定刷新率)
- 示例片段(仅展示与 3D 相关的关键项):
- backend = “glx”
- vsync = “opengl”
- glx-use-dri3 = true
- unredirected-fullscreen = true
- shadow = false
- fading = false
- glx-no-stencil = true
- fps-limit = 0
说明:上述选项均为 Compton 常用且与 3D 性能/兼容性密切相关的开关,可按硬件与应用逐项验证。
三、按 GPU 厂商的细化建议
- Intel 集显
- 优先确保启用 DRI3 与 GLX;大多数桌面环境默认即可。
- 若出现卡顿或撕裂,切换 vsync(opengl/true/false)并对比。
- AMD Radeon
- 使用开源驱动时,启用 DRI3 通常能获得更好的 3D 合成表现。
- 若出现黑屏/花屏,尝试 glx-no-stencil = true 并关闭阴影/淡入淡出。
- NVIDIA 专有驱动
- 建议优先使用较新的驱动版本;必要时在启动器或配置中禁用 GLX 淡入淡出/阴影 等特效。
- 某些应用在全屏时仍出现卡顿,可尝试将 unredirected-fullscreen 设为 false 以让合成器接管(牺牲少量延迟换取稳定性)。
四、启动与调试步骤
- 手动启动并观察日志:
- compton --config ~/.config/compton.conf --log-level debug 2> /tmp/compton.log
- 开机自启(会话级,推荐):
- 在桌面会话的“启动应用程序”中加入:compton --config ~/.config/compton.conf
- 若使用 systemd 用户服务,确保以登录用户会话启动,After=graphical-session.target。
- 快速重载:killall compton && compton --config ~/.config/compton.conf &
- 验证要点:glxinfo 正常、glxgears/其他 3D 应用帧率稳定、全屏无撕裂/卡顿、拖影与输入延迟在可接受范围。
五、常见问题与排查清单
- 全屏 3D 应用卡顿或撕裂:开启 unredirected-fullscreen,vsync 设为 opengl/true;仍异常时尝试关闭阴影/淡入淡出。
- 黑屏/花屏/渲染异常:设置 glx-no-stencil = true,关闭阴影与模糊,必要时改用 xrender 后端做 A/B 测试(性能会下降)。
- 输入延迟高:优先启用直传(unredirected-fullscreen),减少合成器介入。
- 启动失败或配置不生效:检查配置文件路径与语法,使用 --log-level debug 定位;必要时回退到最小化配置逐项加回。
- 桌面环境自带合成器冲突:在同一会话中仅保留一个合成器(如使用 Compton 时关闭 Mutter/KWin 的合成功能)。