透明OpenGL FB后台增加Xorg CPU负载?

透明OpenGL FB后台增加Xorg CPU负载?,opengl,background,x11,transparent,compiz,Opengl,Background,X11,Transparent,Compiz,我用它使OpenGL应用程序的背景透明(与Compiz合作) 它工作得非常完美,但我认识到一个事实:只要我的应用程序打开透明窗口(无论是否完成了任何OpenGL绘图),Xorg进程的CPU负载就会增加到约30% 有人能解释这种行为吗?我认为这种方法绕过了Xserver,整个处理过程都是由图形卡完成的 有人能解释这种行为吗?我认为这种方法绕过了Xserver,整个处理过程都是由图形卡完成的 X服务器并没有被绕过,只是使用了它的其他部分。合成的问题是,窗口内容表示为X可绘制(pixmap),由X服务

我用它使OpenGL应用程序的背景透明(与Compiz合作)

它工作得非常完美,但我认识到一个事实:只要我的应用程序打开透明窗口(无论是否完成了任何OpenGL绘图),Xorg进程的CPU负载就会增加到约30%

有人能解释这种行为吗?我认为这种方法绕过了Xserver,整个处理过程都是由图形卡完成的

有人能解释这种行为吗?我认为这种方法绕过了Xserver,整个处理过程都是由图形卡完成的

X服务器并没有被绕过,只是使用了它的其他部分。合成的问题是,窗口内容表示为X可绘制(pixmap),由X服务器管理。为了合成它,X服务器必须按照合成器的请求将其传输到纹理中。这可能会导致一些管理开销,从而导致性能下降


此外,大多数合成器的代码都很糟糕(就像编写Compiz/Metacity/KWin的人根本不知道OpenGL和GPUs是如何工作的)。这是我的待办事项列表中的一个项目(编写一个像样的排字器,这不是分叶的)。

如果禁用排字器,会有什么变化吗?如果禁用排字器,效果根本不起作用。我试图使用metacity和内置的合成支持。。但它的表现是可怕的。但我想我发现了一些迹象,说明了为什么会出现这种行为。我的opengl应用程序是一个hud动画,我全速绘制它(最大fps,因为没有计时器或睡眠)。对我来说,如果动画每20秒更新一次就足够了,所以我添加了usleep来限制更新速度。现在,当我启动应用程序时,Xorg的cpu负载不会受到影响!感谢您的回复,这为您的行为增添了一幅恰当的画面。我还没有看元城市的代码,但你所描述的欧宝技能很可能是真的。如果你的合成器版本有任何进展,我会非常高兴如果你让我更新!来自muc的问候!microdevel@googlemail.com