要测试 Linux 下的 XRender 扩展是否可用、是否正常工作,可以从“是否存在、能否被调用、功能是否正常”三个层面来测试。下面按由简到深的常见做法说明。
xdpyinfoxdpyinfo | grep -i render
✅ 正常输出示例:
X Rendering Extension
如果能看到 RENDER 或 X Rendering Extension,说明 X Server 已启用 XRender。
xpropxprop -root | grep RENDER
如果输出中包含 RENDER 相关字段,也说明扩展存在。
x11perfx11perf -render
或指定具体测试:
x11perf -repeat 1 -compose
✅ 能运行并输出 FPS / 耗时,说明 XRender 可用。
rendercheck(推荐)这是 专门测试 XRender 的工具。
# Debian / Ubuntu
sudo apt install rendercheck
# Fedora / RHEL
sudo dnf install rendercheck
rendercheck
✅ 正常输出示例:
Render extension version: 0.11
...
All tests passed
❌ 若失败,会显示具体错误(如不支持的 PictFormat、Composite 错误等)。
xrandrxrandr --version
虽然 xrandr 主要依赖 RandR,但在某些版本中会间接使用 XRender。
如果你的桌面环境使用 XRender 作为后端:
export GDK_RENDERING=x11
gedit
或 Qt:
export QT_XCB_GL_INTEGRATION=none
然后观察:
#include <X11/Xlib.h>
#include <X11/extensions/Xrender.h>
#include <stdio.h>
int main() {
Display *dpy = XOpenDisplay(NULL);
if (!dpy) {
printf("Cannot open display\n");
return 1;
}
int major, minor;
if (!XRenderQueryVersion(dpy, &major, &minor)) {
printf("XRender not available\n");
} else {
printf("XRender version: %d.%d\n", major, minor);
}
XCloseDisplay(dpy);
return 0;
}
编译:
gcc test_xrender.c -o test_xrender -lX11 -lXrender
运行:
./test_xrender
✅ 输出类似:
XRender version: 0.11
xcompmgr / 合成管理器xcompmgr -c &
再用:
glxinfo | grep render
或观察窗口阴影、透明度是否生效。
perf top 观察perf top
如果大量时间花在:
pixmanXRenderComposite说明 XRender 正在工作(说明是 CPU 软件渲染)。
| 问题 | 可能原因 |
|---|---|
| XRender 不存在 | 使用了 Wayland / XWayland |
| rendercheck 报错 | 显卡驱动或 X Server 编译不支持 |
| 性能极差 | 无硬件加速,纯 CPU |
| 透明无效 | 合成管理器未运行 |
xdpyinfo | grep -i render
rendercheck
✅ 两条都通过 → XRender 正常可用
如果你愿意,我可以: