一.什么是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

MTK平台 GPU 相关知识的更多相关文章

  1. 关于MTK平台CC相关的Log查询

    关于MTK平台CC相关的Log查询 在外场问题中,经常会出现通话相关的故障.这里简单总结一下通话相关log的分析点: 主叫方:主叫方,是指主动发起通话的一方. 初步定位问题, 用户发起通话时,AP端的 ...

  2. MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率

    1,MTK 平台如何查询当前使用的是哪颗摄像头及相关的模组信息? 在该目录下可以查到当前平台及相关项目的配置文件 ProjectConfig.mk \ALPS.JB.MP.V1_W_20120919\ ...

  3. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  4. 引用 字库编码Unicode相关知识

    引用 weifeng.shen 的 字库编码Unicode相关知识 1.      各地编码 首先说明一下现在常用的一些编码方案: 1.         在中国,大陆最常用的就是GBK18030编码, ...

  5. 关于MTK平台SIM-ME Lock的配置方案

    针对一些运营商的锁网需求,MTK平台已经对其有很好的支持.绝大多数的海外需求可以通过直接配置相关文件来完成.这里简单描述一下配置方法,不做原理分析. 相关数据结构分析: Modem中与SML锁网配置相 ...

  6. MTK平台Android项目APK预置方案

    项目开发中,通常需要向系统中预置一些APK,这里简单介绍一下MTK平台预置APK的方法. 需要预置的apk可以放置在目录:vendor/mediate/${Project}/artifacts/out ...

  7. LDA模型了解及相关知识

    什么是LDA? LDA是基于贝叶斯模型的,涉及到贝叶斯模型离不开“先验分布”,“数据(似然)”和"后验分布"三块.贝叶斯相关知识:先验分布 + 数据(似然)= 后验分布. 贝叶斯模 ...

  8. podSpec文件相关知识整理

    上一篇文章整理了我用SVN创建私有库的过程,本文将整理一下有关podSpec文件的相关知识. podSpec中spec的全称是“Specification”,说明书的意思.顾名思义,这是用来描述你这个 ...

  9. X86 寻址方式、AT&T 汇编语言相关知识、AT&T 与 Intel 汇编语言的比较、gcc 嵌入式汇编

    注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...

随机推荐

  1. 动态规划:最大连续子序列乘积 分类: c/c++ 算法 2014-09-30 17:03 656人阅读 评论(0) 收藏

    题目描述: 给定一个浮点数序列(可能有正数.0和负数),求出一个最大的连续子序列乘积. 分析:若暴力求解,需要O(n^3)时间,太低效,故使用动态规划. 设data[i]:第i个数据,dp[i]:以第 ...

  2. egrep命令的实现 分类: 编译原理 2014-06-01 23:41 329人阅读 评论(0) 收藏

    本程序实现了egrep命令,首先将正则表达式转换为NFA,并实现模拟NFA的算法. 本程序使用flex实现词法分析,bison实现语法分析 若给定的一行字符串中存在一个字串能被该NFA接受,则输出整行 ...

  3. C#中的list的System.Predicate<in T>和System.Comparison<in T>的应用

    public class Data { ; ; ; ; public Data() { count++; ma = count; } } //一句话删除满足要求的集合 Asm.RemoveAll((D ...

  4. 424 Longest Repeating Character Replacement 替换后的最长重复字符

    给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度.注意:字符串长度 和 k 不会超过 104. ...

  5. T4869 某种数列问题 (jx.cpp/c/pas) 1000MS 256MB

    题目描述 众所周知,chenzeyu97有无数的妹子(阿掉!>_<),而且他还有很多恶趣味的问题,继上次纠结于一排妹子的排法以后,今天他有非(chi)常(bao)认(cheng)真(zhe ...

  6. R in action读书笔记(4)-第六章:基本图形(下)

    6.3直方图 hist() 其中的x是一个由数据值组成的数值向量.参数freq=FALSE表示根据概率密度而不是频数绘制图形.参数breaks用于控制组的数量.在定义直方图中的单元时,默认将生成等距切 ...

  7. MySQL性能优化之max_connections配置

    MySQL的最大连接数,增加该值增加mysqld 要求的文件描述符的数量.如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于M ...

  8. jQuery 点击 星星评分

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 6-Java-C(打印大X)

    题目描述: 小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度. 为了便于比对空格,所有的空白位置都以句点符来代替. 要求输入两个整数m n,表示笔的宽度,X的高度.用空格分开 ...

  10. eclipse中同步代码PULL报错checkout conflict with files的解决方法

    1.Team--->Synchronize Workspace 2.在同步窗口找到冲突文件,把自己本地修改的复制出来 3.在文件上右键选择 Overwrite----->Yes , 4.再 ...