英文原文:https://developer.arm.com/documentation/101545/0511/?lang=en

5. 分析你的捕获

  了解不同的方式,你可以更详细地分析你的捕获。

5.1 分析过度绘制

  过度绘制发生在图形应用程序中,在这些应用程序中,场景是使用多层对象重叠建立的,并以从后到前的顺序进行渲染。高水平的过度绘制可能会导致某些设备上的性能不佳,因为像素被不必要地多次着色。图形分析器显示场景中的过度绘制水平,以帮助你诊断渲染顺序问题,并找到优化性能的机会。

关于这项任务

  当 Graphics Analyzer 在启用过度绘制模式的情况下捕获一个帧时,目标应用程序中的片段着色器会被替换成一个几乎透明的白色片段着色器。每当一个像素被渲染到帧缓冲区时,alpha值就会使用加法混合的方式增加。因此,当一个区域发生越多的超绘时,最终的图像就越白。
  使用overdraw模式来检查不透明的物体是否以前后顺序被渲染。这种顺序使Mali GPU能够使用早期的ZS测试来禁用被更靠近摄像机的物体或模板遮罩所隐藏的物体的碎片着色。
  如果场景使用了透明度,预计会有一定程度的过度绘制,因为对象必须从后往前渲染。在移动应用程序中谨慎使用透明度,因为多层着色的性能成本可能很高。

流程

  1. 按照 "开始使用图形分析器 "中的描述,将图形分析器连接到您设备上的应用程序,并开始捕获。
  2. 在设备上的应用程序中执行你的测试场景。要找到正确的帧,就在你进入你想分析的场景之前,使用暂停和步骤按钮。

图5-1: 暂停和Step按钮

3. 点击 "切换 overdraw 模式 "图标,启用超绘模式,然后点击 "捕捉 "图标,捕捉下一帧。
4. 当你捕捉到你需要的数据后,点击停止追踪图标。这些帧会被列在跟踪大纲视图中。任何您已经捕捉到的超标帧都会以图标的形式显示出来。
5. 展开一个帧来查看其中的渲染通道和绘制调用。通过绘制调用,评估帧缓冲区的输出,看看每个绘制的对象是如何影响场景中的过度绘制程度的。将鼠标悬停在场景的不同区域,以查看该点的过度绘制程度。

图5-2:过度绘制的程度

6. 查看直方图,看看在场景中每个级别的过度绘制中被遮蔽的像素数量。

图5-3: 阴影像素的数量

下一步工作

  当你确定了场景中一个具有高透支的区域后,请参考以下主题,以获得如何减少透支的建议。

  • 关于Arm开发者网站上的高 overdraw 的优化建议,见高 overdraw 的优化建议。
  • 关于Mali GPU最佳实践指南中的混合建议,见Mali GPU的混合建议。

5.2 分析着色器贴图

  图形分析器可以给一个场景使用的每个着色器程序提供不同的纯色。

  在实时捕捉过程中,点击切换捕捉模式。当这种捕获模式被启用时,当图形分析器捕获一个帧时,它会跟踪场景中每个对象使用的着色器。然后它将每个着色器映射到一个纯色。这种映射允许检测任何错误的着色器分配可能导致的错误。这里显示了这个功能的一个例子。

图5-4:原始图像

图5-5:打开着色器Map功能的图像

  有100种独特的颜色,图形分析器可以分配给着色器程序,之后的程序有重复的颜色。你可以通过把光标放在以着色器贴图模式捕获的帧缓冲图像上,来确定每种颜色对应的程序。活动的着色器会在图像上方被识别。

任何打开着色器贴图模式的帧都在Trace Outline视图中具有该图标。

5.3 分析 fragment 计数

  Graphics Analyzer 可以计算着色器每次绘制调用所处理的 fragment 数量。如果深度测试被启用,并且一个 fragment 会因此而被排除,那么这个 fragment 就不包括在计数中。

  要切换这个功能,请点击 。当启用该捕获模式时捕获一个帧,每个绘制调用都会增加用于绘制该帧的片段着色器的片段字段。fragment 计数表示在当前帧中用选定的着色器渲染的片段数量,直到并包括当前选定的绘制调用。比如说。

图5-6: fragment 计数分析

  Total cycles 字段是用给定着色器的平均周期数乘以处理的片段数计算的。

  fragment 和Total cycles 栏只适用于那些要求进行片段计数分析的帧。这些栏目对其他帧表示N/A(不可用)。

任何开启了 fragment 计数模式的帧,在Trace Outline视图中都有这个图标。

  • 你不能在采集帧缓冲区内容的同时也采集 fragment 着色器的统计数据。
  • 一次绘制调用可能需要几秒钟才能完成。此外,目标设备屏幕只显示一帧中的最后一次绘图调用,而帧捕获功能并不显示任何可用的信息。

5.6 比较函数调用之间的状态

  在调查一个应用程序的捕获时,你可以生成一个差异报告来比较两个函数调用之间的API状态,以检查什么发生了变化。

流程

  1. 要比较捕获的两个函数之间的状态变化,请使用Ctrl键(Windows或Linux主机)或Cmd键(OS X主机)任选一个。

    • 在跟踪视图中,选择两个函数调用。
    • 在Trace Outline视图中,选择两个绘图调用
  2. 在选定的调用上点击右键,然后从弹出的菜单中选择生成差异。该报告显示了两个选定函数调用的状态差异。它是两个函数之间不同的,或在某个时间点发生变化的项目的表格。

图5-9:差异报告视图

  • 已经改变但后来又恢复到原值的数值用浅蓝色突出显示。
  • 两个函数之间不同的值用红色标出。
  • 如果状态值是由多个组件组成的,例如GL_VIEWPORT,子组件会被单独突出显示。在这种情况下,任何没有变化的子组件都会以灰色文本显示。
  1. 报告的最后一列,标记为相关函数,列出了追踪中修改特定状态项的函数调用的数字ID。右键点击其中一行,然后选择跳转到相关函数,从上下文菜单中选择一个相关函数。

  2. 为了手动比较变化集,你可以一次打开多个差异报告。状态比较的结果是持久的,直到窗口关闭。

5.7 书签

  图形分析器包含一个书签功能,允许你对特定的函数调用进行书签,并可以选择在书签上添加注释。

  这些书签可以被保存下来,并与捕获的内容一起加载。你可以使用这个功能,例如,在一个看起来可能是优化的候选函数调用上做书签,作为提醒。

  可以在第74页的6.19书签视图和第52页的6.2追踪视图中查看和操作书签。

[Render] Arm Graphics Analyzer 用户指南 [4] - 分析你的捕获相关推荐

  1. arm workbench ide 用户指南_ARM_异常和中断

    ARM_异常和中断 问题1.中断向量表为于存储器的什么位置? ARM7系列,除ARM720T可以放高端地址,ARM9或更高都放高端地址上. 2.FIQ或IRQ异常返回指令是什么? 答案见下面.... ...

  2. tween.js 用户指南 - 与 Three.js 配合使用的补间动画库

    tween.js 用户指南 - 与 Three.js 配合使用的补间动画库 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途- ...

  3. i.MX Yocto项目用户指南 -- 下

    i.MX Yocto项目用户指南 – 下 5映像构建 本节提供了构建映像的详细信息和过程. 5.1构建配置 i. MX提供了一个脚本fsl-setup-release.sh,它简化了i.MX机器的设置 ...

  4. 《UML用户指南第二版》再次温读笔记(一)(downmoon)

    前言:最近,花点时间重读(也不知道是第几遍了)<UML用户指南第二版>这本书,感觉虽然对WEB程序开发而言,UML的应用是一个极大的挑战,然而,其中蕴含的基本原理和指导性却是历久弥新,耐人 ...

  5. Vivado Design Suite用户指南之约束的使用第二部分(约束方法论)

    Constraints Methodology(约束方法论) 关于约束方法论 设计约束定义了编译流程必须满足的要求,以使设计在板上起作用. 并非所有步骤都使用所有约束 在编译流程中. 例如,物理约束仅 ...

  6. [转]HDFS用户指南(中文版)

    目的 本文档可以作为使用Hadoop分布式文件系统用户的起点,无论是将HDFS应用在一个Hadoop集群中还是作为一个单独的分布式文件系统使用.HDFS被设计成可以马上在许多环境中工作起来,那么一些H ...

  7. mplab x ide 中文使用手册_中文文档:MPLAB ICD 4在线调试器用户指南

    MPLAB® ICD 4在线调试器 用户指南 MPLAB® ICD 4在线调试器(DV164045)是Microchip最快且最经济高效的调试和编程工具,适用于Microchip PIC®.dsPIC ...

  8. Android官方技术文档翻译——Gradle 插件用户指南(5)

    昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...

  9. 摘要-Amira用户指南

    第1章 介绍 Amira是一款3D数据可视化,分析和建模系统.它使您能够从各种应用领域可视化科学数据集,例如医学,生物学,生物化学,显微学,生物医学,生物工程.三维数据可以快速探索,分析,比较和量化. ...

最新文章

  1. oracle测试环境表空间清理
  2. 使用分层实现业务处理(二)
  3. 动态规划面试常考:最短路径和
  4. 修改input的text 通过jquery的html获取值 未变化
  5. Prototype Pattern(原型模式)
  6. 福特新CEO“泼冷水”,给自动驾驶设立商业化节点是否真的有必要?
  7. 解决ubuntu的firefox上网速度慢[转]
  8. 在线数据链路跟踪的平台化发展及思考
  9. ELK 日志分析系统
  10. 百善孝为先,万恶淫为首
  11. 用Asp.net 就能轻松实现铁道部的订票系统
  12. 当贝D5X和极米Z6XPro画质对比 当贝D5X和极米Z6XPro选哪个
  13. 关于本号,你想看的都在这里
  14. 微信小程序实现一些优惠券/卡券
  15. 1小时1篇文学会用python进行AI修复!
  16. php相同数据合并单元格,jQuery_基于jQuery的合并表格中相同文本的相邻单元格的代码,ONE 已经生成的数据表格大致 - phpStudy...
  17. HTML5期末大作业:电商购物网站设计——红色的服装商城B2C网站(40页) HTML+CSS+JavaScript 电商购物功能齐全 dw网页设计 大学生商城购物网站
  18. WinForm,可能是Windows上手最快的图形框架了
  19. oj1979: C语言实验——用*号输出字母C的图案
  20. [Unity workflows] Unity 5.6.1f1 与 Docker 和 Bitrise 的持续集成

热门文章

  1. day3:多元统计模型
  2. 前端学习与工作中常用网站推荐
  3. DMZ network
  4. 【零基础小白的华丽蜕变】Oracle WebLogic Server 14c(14.1.1.0)下载及安装
  5. Win11 如何开启休眠功能
  6. IntelliJ IDEA自动去掉行尾空格
  7. Common块和Bss段的区别
  8. Java 小练习(简单)—合集
  9. USB插座外壳接地的处理和emi,esd考虑
  10. 数据库分类,市场上常见数据库