在 Linux 下,XRender(X Rendering Extension)的测试通常分为几类:扩展是否可用、基本功能是否正常、性能与渲染效果验证。下面按“从简到深”的方式说明。
xdpyinfoxdpyinfo | grep -i render
如果看到:
XRendr Extension (XRender)
说明 X Server 支持 XRender。
xpropxprop -root | grep RENDER
有输出通常也表示支持。
rendercheck(最常用)很多发行版可直接安装:
# Debian / Ubuntu
sudo apt install x11-apps
# 或单独
sudo apt install rendercheck
运行测试:
rendercheck
常用选项:
rendercheck -v # 详细输出
rendercheck -t all # 跑所有测试
rendercheck -o out.ppm
✅ 如果全部 PASS,说明 XRender 基本功能正常。
#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 supported\n");
return 1;
}
printf("XRender version: %d.%d\n", major, minor);
Window w = XCreateSimpleWindow(
dpy, RootWindow(dpy, 0),
100, 100, 400, 300, 1,
BlackPixel(dpy, 0), WhitePixel(dpy, 0)
);
XMapWindow(dpy, w);
XRenderColor color;
color.red = 0x8000;
color.green = 0x0000;
color.blue = 0x8000;
color.alpha = 0x8000;
Picture pict = XRenderCreatePicture(
dpy, w,
XRenderFindVisualFormat(dpy, DefaultVisual(dpy, 0)),
0, NULL
);
XRenderFillRectangle(dpy, PictOpOver, pict, &color, 50, 50, 200, 150);
XFlush(dpy);
sleep(5);
XCloseDisplay(dpy);
return 0;
}
编译:
gcc xrender_test.c -o xrender_test -lX11 -lXrender
XRender 常用于窗口合成:
xcompmgr &
# 或
compton &
测试透明窗口、阴影效果。
例如:
glxinfo | grep -i render
虽然不是 XRender,但可辅助判断是否走软件渲染。
rendercheck -t blend -f
或结合:
x11perfxperfexport LIBGL_ALWAYS_SOFTWARE=1
| 测试方式 | 用途 |
|---|---|
xdpyinfo |
是否支持 |
rendercheck |
功能/正确性 |
| C + XRender | 开发验证 |
| xcompmgr | 实际效果 |
| x11perf | 性能 |
如果你告诉我:
我可以给你更针对性的测试方法。