MTK平台 GPU 相關知識


一.什么是Render script,以及mtk平台GPU support情況

[DESCRIPTION]

1.什么是RenderScript ?

2.RenderScript 干什么?

3.MTK平台GPU support狀況?

 
[SOLUTION]

1.什么是RenderScript

 

RenderScript 是一種低級的高性能編程語言,提供了一套API,封裝了着色器語言的使用和配置, 用於3D渲染和處理密集型計算

 

 

2.RenderScript 干什么?

 

a. 幫助書寫更加高效的OpenGL程序

 

b.利用GPU的計算能力 ,可以讓APP使用到GPU來做一些數學運算並加速,因為GPU的並行運算能力會比CPU 高。GPU和CPU的浮點計算能力差異的原因是:GPU是特別為計算密集,高並行度計算設計的,因此將有更多晶體管用於數據處理而不是數據緩存和流量控制

 

 

3.MTK平台GPU support狀況?

 

MT6572 Mali-400 / MT6582 Mali-400 MP2 / MT6588, MT6592 Mali-450 MP4 均不support,

power VR也之后95/K2平台才有support該選項

 

二. 如何使用pvr tune工具分析GPU性能

 
【Tool】
 
首先到下列網址下載相應的安裝檔(SDK):
 
 
【How to use】
 
安裝相應的SDK后,會發現兩個目錄:PVRPerfServer 和 PVRTune。
 
請按照以下步驟進行錄取pvrtune檔案:
 
1. PVRTuneDeveloper裡有個APK: PVRPerfServer/Android_armeabi_armeabi-v7a_x86_mips/PVRPerfServerDeveloper.apk, 安裝這個apk在手機上,然后點擊進
入,他會提示輸入command,不用理會,直接點擊ok即可。

2.在pc端口啟用cmd命令行模式,輸入:adb forward tcp:6520 tcp:6520

3.打開\PVRTune\Windows_x86_32下面的PVRTuneDeveloper.exe在connect to:
 
后面輸入localhost 點擊Go。即可連上手機並進入新的頁面。在新頁面的左邊的Counter
 
Table 如下圖所示:

選擇常用的:
0 CPU load;
9 SGX task load: 3D core
10 SGX task load: TA core
都拖到中間的view 0窗口中,就會有相應的線條顯示。
 
4.開始在手機模擬現象,當出現卡頓或是變慢現象后,點擊file --save 就可以將錄取的
結果保存成一個xxx.pvrtune的文件提供給MTK分析。
 
【Analysis】
 
對xxx.pvrtune初步的分析方法:參照下圖為例.
 
A: 彩條部分表示GPU正在工作時候的狀態,從右邊的框圖可以看到當時3D處於BUSY狀態,而且可以
 
看到當時處理的是那個進程(GPU處理進程為PID8513),並且當時CPU的load處於76.6%。左圖中彩條
 
間隔部分為GPU處於idle狀態,表示當時GPU並不忙碌。
 

B:紅線框出來的部分表示當時的PID 8513的frame rate為50.並且一直處於變化之中。

 

三.在開發者選項中,什么是4x MSAA和如何使用GPU呈現模式分析

 

4x MSAA: 多重取樣抗鋸齒模式,處理模型最外層的多邊形單元,對邊緣進行4倍的放大處理,然后進行邊緣模糊過渡算法,有效改善邊緣鋸齒作用。

 

GPU呈現模式分析:

 

以launcher為例:勾選了上述“GPU呈現模式分析”之后,輸入如下命令

 

adb shell kill -9 pid_of_launcher

 

這時launcher會重啟,重啟完了之后,你就開始滑動桌面,操作幾次之后,再下如下命令

 

 

 

adb shell dumpsys gfxinfo pid_of_launcher >launcher_gfxinfo.txt

 

 

 

打開launcher_gfxinfo.txt,如下所示:

 

Profile data in ms:

 

Draw Process Execute

 

25.00 15.70 8.53

 

......

 

 

 

 

這些數據就是GPU呈現時間:

 

 

draw: view system draw所耗費的時間,主要是在遍歷view tree,跑每個view的onDraw方法所用的時間。

 

 

 

Process:HWUI 去 draw view tree的所有displaylist所用的時間 。

 

 

 

Execute:eglSwapBuffer所耗費的時間,這個可以理解成GPU繪制所用的時間

四.什么是OpenCL以及mtk平台支持情況

 

OpenCL (Open Computing Language,開放計算語言) 是一個為異構平台編寫程序的框架,此異構平台

 

 

 

可由CPU,GPU或其他類型的處理器組成,說的通俗易懂一點,OpenCL是一套利用處理器(CPU,GPU,或者

 

 

 

其他處理器)並行運算能力來進行開發的API標准(到目前為止,CPU的並行處理能力跟GPU的並行處理能

 

 

 

力是無法相提並論的,簡單來說,是因為CPU每個核有只有一個計算單元,但是GPU一個核卻有多達成

 

 

 

百上千個計算單元)。

 

 

 

以目前mtk所使用的GPU來說,因為缺少相關的DDK以及驅動,所以目前還沒有support該框架編程。
 

 

五.GPU參數理解:

SGX544, 286MHz

50.05M tri/sec and max. 572M pixel/sec

 

SGX544: Imagination Technologies PowerVR SGX Serial GPU

286MHz: GPU Frequency

D/s or tri/sec: Triangle fill rate /Texel fill rate, 多邊形填充率/紋理填充率

Pixel/s: Pixel fill rate,像素填充率

Note1:多邊形生成率即3D GPU每秒能畫出多少骨架(三角形),由於3D貼圖,效果渲染都需要在這些骨架上進行。所以多邊形生成率越高,3D芯片/卡能提供的畫面越細膩;

Note2:像素填充率, 即每秒鍾GPU能在輸出的畫面上畫出的點的數量

舉例來,如果你將屏幕分辯率高在800X600。則在屏幕上構成每幅圖像均需800X600=480000像素。再以每項秒鍾屏幕刷新60次算,在此分辯率下所需的最小像素填充率即為60X800X600=兩千八百八十萬像素/秒。

 

可以通過adb獲取gpu一些信息.

adb shell cat /proc/gpufreq/gpufreq_opp_dump

 

六.在分析畫面異常問題時,有時需要抓取OpenGLES log,以便分析送給GPU的指令流是怎么樣的?

進入Settings->developer options->Enable OpenGL trace,勾選logcat
然后手機連接usb至電腦,執行如下命令:
adb shell stop
adb shell start
然后再開啟mobile log,抓取復現過程的log

 

 


免責聲明!

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



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