1. 程式人生 > >Adreno Profiler分析高通GPU上Shader效能

Adreno Profiler分析高通GPU上Shader效能

    前面的文章有所過在Mali的GPU上採用DS-5 Streamline分析Shader在Mali T860上的執行效能。現在遇到一個問題在高通GPU上GLSL 從ES2.0升級到ES3.0以後就出現Shader效能的明顯下降。在高通GPU上選擇Adreno Profiler作為效能分析工具。

環境配置:

連線終端:

    確保adb可以正確connect上裝置以後,點選Adreno Profilter左上角Connect按鈕,執行待測試的目標應用程式。Connect對話方塊將出現如下狀態:

    選擇目標應用,進行Connect連線。

分析Shader:

    由於我們是要進行Shader的效能分析,因此是把目標機器作為一個Online的Compiler,高通沒有提供類似ARM malisc那樣的Offline Compiler,因此目前情況下必須通過Adreno Profiler連線真機作為Compiler。

    確保應用程式GPU在執行狀態,點選Shader Analyzer,輸入Vertex和Fragment Shader程式碼,程式碼下方就會列出當前Shader執行在目標機器上所需要的指令執行情況。

OpenGLES2.0 Vs OpenGLES3.0:

    由於ES3.0由於texelFetch可以直接採用目標x,y座標取紋理操作,不用歸一化到0.0-1.0的scale區間,因此可以避免大影象下去紋理的浮點數失真導致的誤差。理論上也可以減少一次歸一化的乘法操作。然而執行以後發現在高通的GPU上效能不升反降了。採用如上方法分析指令如下:

ES2.0:

ES3.0:

   分析發現在ES3.0上總體指令數量較ES2.0少了3個,算術ALU指令出現明顯減少,和預期一致。但是No-Op Instructions出現明顯增多。