当从xclient的前缓冲区复制到根窗口的后台缓冲区时,compiz使用什么机制?

时间:2013-09-03 15:22:26

标签: x11 compiz

从xclient的前缓冲区复制到根窗口的后台缓冲区时,compiz使用了什么机制?

我似乎无法在compiz源中找到此过程。是否有一个函数,只要更新xclient的窗口'前缓冲区以更新根后台缓冲区,它就会调用它?

1 个答案:

答案 0 :(得分:3)

Copiz使用X Composite extension将窗口重定向到屏幕外像素图。然后它使用GLX / OpenGL的GLX_EXT_texture_from_pixmap扩展名将这些屏幕外像素图转换为OpenGL纹理。

对于合成,启用Composite的X服务器提供了一个特殊的复合窗口图层,该窗口层位于根窗口(以及根窗口为父窗口的窗口)和屏幕保护程序层之间。 Compiz在该复合层中创建一个窗口,为该窗口创建一个OpenGL上下文,并使用OpenGL绘图命令执行合成。

还有一些合成器不使用OpenGL。然后,他们要么使用服务器端组合(除了测试Composite协议本身之外没有用),要么使用XRender绘图方法。技术上X核心绘图方法也可以,但那些不支持变换和缩放;你通常希望为合成师提供的东西。

合成器将根据窗口绘制。所有组合都会进入复合层。