• 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.打开PVRTuneWindows_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
  • 相关阅读:
    U盘量产体验
    syn/ack攻击
    [转]Moment of inertia of a uniform hollow cylinder
    [转]从技术角度分析星际2
    [转]SCI绝不能抄袭别人的工作
    利用代数方法进行相交检测
    【原创】凝思磐石Linux操作系统,X桌面打开方法
    【原创】Oracle数据库逻辑迁移步骤
    【原创】sybase IQ数据库启动参数——START_ASIQ参数列表
    【原创】ORACLE数据库管理方法学习总结
  • 原文地址:https://www.cnblogs.com/lexuele/p/5039304.html
Copyright © 2020-2023  润新知