代码之家  ›  专栏  ›  技术社区  ›  Brad Larson Code Synthesis

在iPhone OpenGL ES仪器中,Tiler利用率统计意味着什么?

  •  25
  • Brad Larson Code Synthesis  · 技术社区  · 15 年前

    我一直在尝试执行一些OpenGL的性能优化,试图提高我在iPhone应用程序中每秒可以呈现的三角形数,但我遇到了困难。我尝试将OpenGL ES数据类型从固定转换为浮点(根据 Apple's recommendation ,交错顶点缓冲区对象,并最小化绘图状态的更改,但这些更改都不会影响渲染速度。不管怎样,在运行3.0操作系统的iPhone3G上,我的应用程序的速度似乎无法超过32万个三角形/秒。根据 this benchmark 我应该能够在这个硬件上达到687000个三角形/秒,使用平滑的阴影。

    在我的测试中,当我在运行设备的仪器中运行OpenGL ES性能工具时,我看到在呈现我的基准时统计的“tiler利用率”接近100%,而“renderer利用率”仅接近30%。这可能为显示过程中的瓶颈提供了线索,但我不知道这些值的含义,也没有找到任何相关文档。有人能很好地描述iPhoneOpenGLESInstrument中这个和其他统计数据的含义吗?我知道iPhone3G中的powervr mbx-lite是 tile-based deferred renderer 但是我不知道渲染器和蒂勒在这个体系结构中有什么区别。

    如果它有任何帮助,则此应用程序的(BSD许可)源代码 is available 如果你想自己下载和测试它。在当前配置中,每次加载新的分子结构并将三角形/s输出到控制台时,它都会启动一个小基准。

    2 回复  |  直到 9 年前
        1
  •  26
  •   Pivot    15 年前

    蒂勒利用率和渲染器利用率分别测量顶点和片段处理硬件的工作周期。在MBX上,tiler利用率通常随发送到GPU的顶点数据量(根据每个顶点发送的顶点数量和属性大小)而变化,碎片利用率通常随透支和纹理采样而增加。

    在您的情况下,最好的方法是减小您要发送的每个顶点的大小。首先,我试着把你的原子和键按颜色分类,然后用一个恒定的颜色而不是一个数组来发送每个箱子。i_d还建议考虑到适当的比例,调查短裤是否适合您的位置和正常值。在这种情况下,如果为了提供足够的精度而调整的短裤不能覆盖您需要的范围,那么您可能还需要按位置装箱。这些类型的技术可能需要额外的draw调用,但我怀疑顶点吞吐量的提高将超过额外的per-draw调用CPU开销。

    请注意,确保每个顶点属性从32位边界开始(在mbx和其他地方)通常是有益的,这意味着如果将它们切换为short,您应该将位置和法线填充到4个组件。MBX平台的特性也使您希望在本例中实际包含对glvertexpointer调用中位置的w组件。

    您还可以考虑为多边形数据(尤其是球体)使用其他照明方法(如dot3),但这需要特别注意,以确保不会使渲染片段绑定,或者无意中发送比以前更多的顶点数据。

        2
  •  6
  •   Rose Perrone    9 年前

    回答得很好,@pivot!供参考, this Apple doc 定义这些术语:

    • 渲染器利用率% . GPU用于执行片段处理的时间百分比。
    • 耕耘机利用率% . GPU用于执行顶点处理和平铺的时间百分比。
    • 设备利用率% . GPU执行任何平铺或渲染工作所花费的时间百分比。