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

英文原文: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: 阴影像素的数量
在这里插入图片描述
下一步工作

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

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追踪视图中查看和操作书签。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值