glxinfo簡介


簡言之,glxinfo是用來幫助debug gfx 3D acceleration setup的 command-line tool。

 

How to tell whether your setup is good

執行

Run glxinfo | grep render

將會得到兩行輸出,如下

direct rendering: Yes
OpenGL renderer string: Mesa DRI Intel(R) 945GM GEM 20090326 2009Q1 RC2 x86/MMX/SSE2

OpenGL renderer string告訴你現在用的是什么driver, 能告訴你系統此時用的是software rendering還是hardware rendering。在上述輸出中,這個Mesa Intel的的driver就是用來做hardware rendering的。

而第一行告訴你是否用的是direct rendering。例如,如果enable了direct rendering,這意味着3D rendering commands是被client application來handle的,而 X server與rendering沒有關系。如果enable的是indirect rendering,那么所有的rendering commands是被發往 X server的,此時 X server有可能用的是software rendering,也可能用的是hardware rendering。例如:

direct rendering: No (LIBGL_ALWAYS_INDIRECT set)
OpenGL renderer string: Mesa DRI Intel(R) 945GM GEM 20090326 2009Q1 RC2 x86/MMX/SSE2

這里 OpenGL通過設置環境變量,被強制使用indirect rendering,意味着所有的rendering commands都被發往 X server。但是 X server實際上用的是硬件加速渲染(hardware accelerated rendering)。現在看下面的例子:

direct rendering: Yes
OpenGL renderer string: Software Rasterizer

這里意味着用的是software rendering,但是所有的software rendering是在client application里完成的,所以 X server是空閑的,可以為其他application的requests提供service

正如你所看到的,關於 direct/indirect 和 software/hardware rendering 有4種可能的組合。從性能的角度看,direct + hardware rendering是最快的,indirect + hardware rendring 次之,而基本上software rendering總是最慢的。

 

Troubleshooting options

如果你發現系統用的是 software rendering 而不知道為什么會這樣,你可以run LIBGL_DEBUG=verbose glxinfo 來獲得額外的debug output(實際上你可以用這個環境變量debug任何OpenGL的application),將會有類似下面的輸出

libGL: OpenDriver: trying /usr/lib/dri/tls/r300_dri.so
libGL: OpenDriver: trying /usr/lib/dri/r300_dri.so

這些輸出的行前后會有一些additional messages指示錯誤的原因。如果driver沒有在提到的path里被找到,那么OpenGL將會fall back到一個叫 swrast_dri.so的software renderer。這意味着DRI drivers沒有被正確的install。

 

Source code and availability

glxinfo一般是被默認安裝的,你也可以用 sudo install mesa-utils安裝. glxinfo是Mesa的一部分,參考source code可以去demos/src/xdemos/glxinfo.c.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM