0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用GPU渲染模式分析工具进行分析

jf_78858299 来源:北洋洋洋 作者:北洋 2023-02-09 16:47 次阅读
  • 每个竖条都是一次VSync的时间16.6ms,如果竖条宽度变宽且透明则代表超出16.6ms绘制的帧
  • 每个Vsync信号来临前都会做工作(Choreographer中的postFrameCallback函数),按照顺序依次处理: 「INPUT 输入处理」「Animation动画处理」「Traversal 最终会调用到perfor的measure,layout,draw方法」
  • 每个竖条中的不同颜色代表的上面每个步骤的处理时间

颜色区分

图片

image.png

从下到上说明

INPUT 输入处理

表示应用执行输入事件回调中的代码所花的时间。如果此区段很大,表示应用花太多时间处理用户输入。不妨考虑将此类处理任务分流到其他线程。

建议:

其实就是处理输入事件开始到结束的时间,如果竖条中此颜色高度过高代表输入事件应放到其他线程去做

Animation动画处理

表示评估运行 「该帧的所有动画程序所花的时间」 。如果此区段很大,表示您的应用可能在使用性能欠佳的自定义动画程序,或因更新属性而导致一些意料之外的工作。

建议:

该帧内运行的动画比较多

Measure,Layhout

表示在视图层次结构中 onLayout 和 onMeasure回调上所花的时间。大区段表示处理视图层次结构需要很长时间。

Measure用来确定View的宽高,当View为ViewGroup的时候还需要遍历子View,Layout在进行遍历摆放到正确的位置,当View嵌套层级变多或者自定义View时复写这两个方法时也要考虑这种情况。

Draw

表示用于创建和更新视图显示列表的时间。如果竖条的此部分很高,表明可能有许多自定义视图绘制,或 onDraw 方法执行的工作很多。

上篇文章 Vsync信号和View绘制流程的关系中说到:draw方法其实并没有进行真正的绘制,而是把绘制的内容放入到了DisplayList中接着同步到RenderThread中。放入到DisplayList的命令其实就是对canvas的操作转换而来的,该列表命令过多有两种情况:1.可用的渲染数据失效。2.canvas的操作过多

将对Canvas的操作转换成Bitmap同步至GPU

表示将位图信息上传到 GPU 所花的时间。大区段表示应用花费大量的时间加载大量图形。

draw方法调用完成后,会进行释放这块内存区域并交给RenderThread去处理渲染数据。(释放的操作在native层对应的处理是把这块内存区域变成一个Bitmap交由RenderThread去渲染) 「帧的所有资源都必须位于 GPU 内存中才能用来绘制帧」 ,因此需要上传到GPU中缓存起来

要减小该值,可以采用以下技巧:

  • 确保位图的分辨率不会比位图的显示尺寸大很多。应避免将 1024x1024 的图片显示为 48x48 的图片。
  • 利用 prepareToDraw() 在下一个同步阶段之前异步预上传位图。

RenderThread进行调用Opengl渲染

这个显示列表就是DisplayList

表示 Android 的 2D 渲染程序向 OpenGL 发出绘制和重新绘制显示列表的命令所花的时间。此竖条的高度与执行每个显示列表所花的时间的总和成正比。显示列表越多,红色竖条就越高。

发出将显示列表绘制到屏幕上所需的全部命令所需的时间

RenderThread会执行一个DrawFrameTask的Task,里面核心方法是DrawFrame。通过OpenGl和一些库将渲染数据通知给SurefaceFliger去做图层合成。将渲染数据放入到阻塞队列中。

这个和上面的要区分开,官方文档我没看太明白,我以我的理解阐述一下吧:

绘制的耗时不代表对canvas的操作复杂,可能仅仅是逻辑处理,但是调用OpenGl渲染反映的是对canvas的操作复杂,所以一个是说OnDraw复杂,一个是说对canvas操作的复杂,在加上其实Android会进行缓存。

在某些情况下,滚动、转换或动画会要求系统重新发送显示列表,但不必实际重新构建它(即重新捕获绘制命令)。因此,您可能会看到“发出命令”条较高,但“绘制命令”条并不高。

交换缓冲区

表示 CPU 等待 GPU 完成其工作的时间。如果此竖条升高,表示应用在 GPU 上执行太多工作。

当 Android 将其所有显示列表提交给 GPU 后,系统会发出最后一条命令,告诉图形驱动程序它已完成当前帧的处理。此时,驱动程序即可将更新后的图像显示到屏幕上。

GPU提交数据给SuraceFliger让其显示,接着CPU在吧数据给到GPU进行处理,这个区间就是CPU给到GPU的时间

最后给出官方的解析:

如果 CPU 发出命令的速度快于 GPU 处理命令的速度,这两个处理器之间的通信队列就会被占满。出现这种情况时,CPU 会阻塞并等待,直到队列中有位置来放置下一个命令。这种队列占满状态通常出现在“交换缓冲区”阶段,因为此时已提交了整个帧的命令。缓解此问题的关键是降低 GPU 工作的复杂度

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4417

    浏览量

    126705
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61309
  • 渲染
    +关注

    关注

    0

    文章

    60

    浏览量

    10752
收藏 人收藏

    评论

    相关推荐

    如何使用SIwizard的功能进行眼图分析

    SIwizard是SIwave的一项功能,它可以使用Designer/Nexxim的IBIS模型对PCB分析网络进行波形分析。 按照以往的仿真模式, 需要先提取PCB通道的S参数后在
    的头像 发表于 12-28 16:57 889次阅读
    如何使用SIwizard的功能<b class='flag-5'>进行</b>眼图<b class='flag-5'>分析</b>

    鸿蒙开发-DevEco Studio Profiler工具进行帧率分析

    Frame Profiler概述 DevEco Studio内置Profiler分析调优工具,其中Frame分析调优功能,用于录制GPU数据信息,录制完成展开之后的子泳道对应录制过程中
    发表于 01-16 19:34

    赛昉科技VisionFiv2上的GPU渲染测试,平均60帧每秒,非常丝滑

    gpu渲染
    xusiwei1236
    发布于 :2023年12月24日 21:23:11

    使用Trepn Profiler工具分析Dragonboard410c的功耗和性能

    性能图可以通过图表显示,cpu使用情况监控配置则可以通过列表显示等,所有配置都可以通过悬浮叠加显示。除了这预设的六个配置,还可以进入高级模式高级模式中,可以对系统性能进行分析监控,也可
    发表于 09-25 16:09

    使用Snapdragon Profiler工具分析Dragonboard410c

    之前简单介绍了一下Snapdragon Profiler工具,现在我们实际用它来分析一下Dragonboard410c。启动和配置1、我的系统是ubuntu16.04,直接在Terminal进入
    发表于 09-25 16:14

    基于OpenHarmony的Graphic标准子系统能力分析

        说明:GPU渲染时,获取buffer没有经过render service server,而是在client端用skia完成,在用egl做完显示窗口的初始化动作后,开始绘制图像。  源码分析  启动
    发表于 03-18 13:45

    如何使用RT-Thread上的SystemView分析工具

    用户进行系统调试和分析的强大工具,能够显著缩短开发和调试时间,提高开发效率。本文的目的在于帮助大家在 RT-Thread 上使用 SystemView 工具对系统
    发表于 10-26 15:38

    缺少VGlite字体渲染api文档,求分享

    我试图使用 vglite api 在 MIMXRT1166/1176 上使用 verisilicon gpu 渲染图形,并且特别缺乏关于此的文档。 我能够很好地初始化 GPU渲染
    发表于 04-24 06:42

    基于磁贴的GPU架构优缺点

    本指南介绍了基于磁贴的GPU架构的优缺点。它还将ARM马里基于瓷砖的GPU架构设计与台式PC或控制台中常见的更传统的即时模式GPU进行了比较
    发表于 08-02 12:54

    Mali GPU性能分析工具

    本文档描述了马里GPU性能分析工具2.2版中的已知勘误表。 这是一个贯穿整个产品生命周期的工作文档,因此,随着新信息的发现,其内容可能会被修改。 本文中包含的信息是ARM有限公司的财产,对错误或遗漏
    发表于 09-05 07:08

    什么是强制gpu渲染_强制渲染gpu有什么用

    本文主要介绍了gpu的定义、gpu工作原理、gpu功能作用及手机的强制进行GPU渲染的详细解释,
    发表于 01-05 17:13 7285次阅读

    手机要不要强制gpu渲染_强制gpu渲染能省电吗_长期开着强制gpu渲染影响及利弊分析

    强制进行GPU渲染会充分利用手机的GPU,提高手机运行以及一些应用运行的流畅度,但是也是提高手机的功耗。因此我们在没有一些特殊需求(如:玩游戏、看电影等)的时候,建议还是谨慎选择,当然
    发表于 01-08 09:54 5.4w次阅读

    GPU原理 GPU渲染流程

    GPU渲染流水线,是硬件真正体现渲染概念的操作过程,也是最终将图元画到2D屏幕上的阶段。GPU管线涵盖了渲染流程的几何阶段和光栅化阶段,但对
    发表于 04-27 11:33 9107次阅读
    <b class='flag-5'>GPU</b>原理 <b class='flag-5'>GPU</b><b class='flag-5'>渲染</b>流程

    GPU渲染过程的几个阶段

    GPU渲染流水线的主要任务是完成3D模型到图像的渲染工作。常用的图形学API编程模型中的渲染过程被分为几个可以并行处理的阶段,分别由GPU
    的头像 发表于 02-02 11:38 8277次阅读
    <b class='flag-5'>GPU</b><b class='flag-5'>渲染</b>过程的几个阶段

    一文详解CPU渲染GPU渲染之间的优劣

    CPU 渲染利用计算机的 CPU 来执行场景并将其渲染到接近完美。这也是执行渲染的更传统方式。然而,随着 GPU 的出现,基于 GPU
    的头像 发表于 03-08 14:50 1574次阅读