簡體   English   中英

對窗口管理器進行性能分析-glXSwapBuffers性能

[英]profiling a window manager - glXSwapBuffers performance

我使用Compo插件在繪制桌面時會檢查Compiz的性能。 在Compiz和nvidia設置中啟用了VSync。 我這樣測量時間:

paint()
{   
   //get time
   //all opengl commands
   glFlush();
   glFinish();
   //get time
   //calculate paint time

   //get time
   glXSwapBuffers (mDpy, mOutput);
   glFlush();
   glFinish();
   //get time
   //calculate sync/swap time
}

當繪畫命令花費8毫秒時,同步/交換時間大約等於7毫秒,因為在vsync開啟時,在glXSwapBuffers之后使用glFinish應該會阻塞。 當我在expo模式下運行更多opengl窗口時,繪畫命令需要18毫秒, 同步/交換時間約為13毫秒 怎么解釋呢? 為什么glXSwapBuffers這么慢?

另外,當我在nvidia-settings和Compiz中關閉vsync並生成需要28毫秒的繪圖命令時,同步/交換時間約為14毫秒。

好吧,您可能以60Hz的頻率驅動顯示器,因此等待vblank可能要花費16.67ms。

交換緩沖區的渲染時間和等待時間應始終加起來等於16.67 ms的幀時間的倍數(假定繪圖在上一個緩沖區交換之后立即開始)。 8 + 7 = 15以及18 + 13 = 31都足夠接近。 當繪圖花費18ms時,您當然會錯過一個vblank間隔,而必須等待下一個間隔。

我不知道您的“ vsync off”情況下發生了什么。 在這種情況下,交換緩沖區調用本身不應花費大量時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM