我使用this approach使我的OpenGL應用程序的背景變得透明(與Compiz合作)。透明OpenGL FB背景增加Xorg CPU負載?
它工作的很完美,但有一個事實我認識到:只要我的應用程序打開透明窗口(不管是否有任何OpenGL繪圖完成),Xorg進程CPU負載增加到〜30%。
任何人都可以解釋這種行爲嗎?我在想這種方法繞過了Xserver,整個處理過程都是由顯卡完成的?
我使用this approach使我的OpenGL應用程序的背景變得透明(與Compiz合作)。透明OpenGL FB背景增加Xorg CPU負載?
它工作的很完美,但有一個事實我認識到:只要我的應用程序打開透明窗口(不管是否有任何OpenGL繪圖完成),Xorg進程CPU負載增加到〜30%。
任何人都可以解釋這種行爲嗎?我在想這種方法繞過了Xserver,整個處理過程都是由顯卡完成的?
任何人都可以解釋這種行爲嗎?我在想這種方法繞過了Xserver,整個處理過程都是由顯卡完成的?
X服務器沒有規避,只是使用了其他部分。合成的東西是,窗口內容被表示爲X服務器管理的X drawable(一個pixmap)。爲了合成它,X服務器必須執行轉換爲合成器請求的紋理。這可能會導致一些管理開銷,從而導致性能下降。
此外,大多數合成器的代碼是非常可怕的(它像編寫Compiz/Metacity/KWin的人不知道OpenGL和GPU如何工作)。這是我在我的TODO列表中的項目之一(寫一個像樣的排字工具,這不是lobotomized)。
感謝您的回覆,這增加了適當的行爲圖片。我還沒有看到metacity的代碼,但是你描述的有關OpelGl技巧的內容可能是真實的。如果你的合成器版本有任何進展,如果你讓我更新,我會非常高興!來自muc的問候! [email protected] – chrisg
如果你禁用了你的合成器,有什麼改變嗎? – genpfault
如果我禁用排版工具,效果根本不起作用。我試圖使用內置合成支持的metacity ..但它的性能是可怕的。但我想我發現一些跡象表明爲什麼會造成這種行爲。我的opengl應用程序是一個hud動畫,我正在全速繪製(最大幀數,因爲沒有定時器或睡眠)。對我來說,如果動畫每20毫秒更新一次就足夠了,所以我添加了一段時間以限制更新速度。現在,當我啓動我的應用程序時,Xorg的CPU負載不受影響! – chrisg