gpu渲染性能调优

本文探讨了Android设备中Profile GPU Rendering功能,用于分析GPU渲染帧时间,帮助开发者识别性能瓶颈。蓝色部分表示Java层创建和更新display list的时间,红色表示OpenGL执行时间,橙色代表GPU处理时间。当这些部分时间过高时,可能意味着过度重绘、复杂视图或GPU负担过重。现代图形API通过图形驱动层使CPU与GPU间通信,GPU渲染队列处理来自CPU的display list指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

Android开发者选项中提供了Profile GPU Rendering功能,用于在屏幕上实时显示GPU渲染每一帧图像花费的时间(单位:ms)。
小米手机。 开发者选项——gpu呈现模式分析——在屏幕上显示为条形图

渲染时间用柱状图表示,上面的绿线代表16ms,也就是要尽量保证所有柱状图都在这条线下方。每一条柱状图都由3部分组成,蓝色、红色和黄色,代表渲染的3个不同的阶段,通过分析这三个阶段的时间就可以找到渲染时的性能瓶颈。

蓝色部分表示绘制时间或者在Java层创建和更新display list的时间。在一个View 实际被渲染前,它需要先转换为GPU能识别的格式。简单来说可能就是几个绘制命令,复杂一点,我们可能在嵌入了一条从canvas获取的自定义路径。这一步完成之后,输出结果就会被系统作为display list缓存起来。

蓝色部分记录了这一帧对所有需要更新的view完成这两步(转化成gpu识别的格式 作为display list 缓存)花费的时间。当它很高的时候,说明有很多view突然被作废无效(invalidate)重绘了,或者是有几个自定义view在onDraw函数中做了特别复杂的绘制逻辑。

红色部分代表执行时间,也就是Android 2D渲染引擎(OpenGL)执行display list的时间。为了将变化绘制在屏幕上,Android需要使用OpenGL ES API来绘制这些display list信息,OpenGL最终将数据传给了GPU,然后GPU渲染到屏幕上。View越复杂,OpenGL绘制所需要的命令也越复杂。如果红色这一段比较

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值