Perf Primer CPU, GPU and your Android game - 1501080017
Last updated
Was this helpful?
Last updated
Was this helpful?
视频发布时间
2014年6月12日
视频介绍
Quickly finding your games' performance bottleneck is critical to address development issues before they become a problem. In this talk, we'll cover 4 simple steps to follow in order to determine what part of your CPU / GPU pipeline that your game is currently choking on. Find the problem, fix it quick, and be on your way.
视频推介语
暂无,待补充。
翻译
润稿
终审
原始链接
中文字幕
翻译流水号
加入字幕组
——
——
——
1501080017
让我们来举个例子 你得到了某些非常棒的
有着几十万下载量的Android游戏
但是看起来你不能打破这种已经有百万用户做过的标记
理由是
用户们对你的游戏的性能非常的不满意
你看 用户注意到了在你的游戏中其他的部分
比如说项目状态或者是UI界面或者是
任何的其他的功能都没有非常糟糕的性能更加突出
或者换句话说 你的字符之一在三级层面上
事实上是在说克林贡语
然后你猜怎么了
用户对于游戏性能非常糟糕的问题给出了中差评的比例
高于你的游戏出现的其他的问题而导致的中差评
你真的想要拥有百万以上的用户量
所以你一定要解决你的游戏的性能问题
对于现代的Android游戏而言
你应该开始理解它们有一种紧密的联系
例如探戈舞 如果在你的游戏中
CPU和GPU可以相互协作
则会对性能产生极大的影响
这种原理与CPU和GPU协作是有相似之处的
现代的图形API不允许
CPU直接和GPU硬件建立连接
相反的 它有一个中间的过程
是我们所熟知的图形驱动程序
来处理CPU与GPU之间的通信
从CPU中取出的请求会被缓存在
硬件驱动中作为一个消息队列
当GPU硬件已经准备好接收任务的时候
它会从相同的资源开始执行命令
并在GPU上面开始执行它
在驱动程序的消息队列中存在
意味着CPU可以以不同的速度
推送信息到驱动
GPU在从队列中读取消息
与此同时 你的GPU可以假设处理
并且在CPU之后绘制
大约1到2帧的数据
现在 即使报警 也不需要担心
这其实是典型的现代的硬件体系架构
但是要记住这一点
了解你的游戏一旦达到了60帧的帧率
那么就要求你的CPU和GPU的帧数
都在16毫秒内完成了它们所有的工作
当这两个系统中开始同步的时候
需要更长的时间
你的帧速率将变得更加糟糕
举个例子 如果你的GPU
比CPU做了更多的工作呢
这说明你的CPU提交的已经处理过的帧数
到驱动中以一个比GPU更快的频率工作
实际上是GPU将浪费掉更多的资源
最终 驱动队列会被填满
之后在任意一段时间内
CPU想要去发送一个硬件调用指令
它就会停下来 等待GPU的相应
并且去按照顺序清理掉一些指令
释放一些空间去保证CPU可以
继续的向硬件驱动队列发送它的新指令
另一方面 如果你的CPU被绑定了
然后你向GPU的工作线路中插入新的任务
每次CPU发送一帧的数据
GPU会立刻使用它并进行处理
然后等待下一帧的数据
它就可以继续工作了
要解决这个问题的最直接的办法就是
让CPU做更少的工作
但是在这种情况下 可能会出现
GPU没有足够多的工作去做并且正确的动作是
实际上是有序的给它更多的工作
以最大限度的发挥GPU的数据吞吐量
对于设计者来说这是一个很好的机会
在屏幕上放置200多个僵尸
你可以估计你的问题所在
去认真的研究一下CPU在几秒钟的模拟时间里的
帧数数据
举个例子 如果你的CPU帧数处理时间
大约在16毫秒
那么你的游戏会运行的非常棒
现在 你的目标是去保持帧数数据
的处理时间在16毫秒以下 某些帧数
随CPU加载而变化 你还希望时间有一些小差异
然而 如果你的帧数突然开始飙升
你的CPU数据运算结果还没有加载完成
那么你将不能在屏幕上放置200个僵尸
有很大的可能是由于GPU
做了备份 强迫CPU在驱动程序中
去拖延时间
这些高峰实际上是说大概在11-15毫秒的时间
GPU到底需要多长的
时间去进行冲洗帧操作
为了发现真正的罪魁祸首是什么
是时候坐下来然后
熟练掌握移动数据分析工具了
一些GPU性能的细微差距
需要特殊的工具去发现它
值得庆幸的是 每一个Android芯片制造商
都提供了一套非常强大的工具包
给了你更多的信息并告诉你们
如何针对他们的硬件去优化你的游戏
理解和调整CPU和GPU之间的协作的第一步
是最大化你的游戏的性能
当然 这样的结果会使用户们更加高兴
游戏则会有更好的购买量
这才是最重要的 不是吗
所以 静下来 像往常一样去测试你的代码
一定要记住性能是非常重要的