游戏性能新手测试入门指南(2)

发表于:2023-10-12 09:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:BOWU    来源:CSDN

  1.2.以Mali GPU为例解读GPU指标
  1.2.1 Mail GPU performance counters
  Job:=GPU实际执行的单位,存在两种类型:
  Non-fragment job:vertex shading,tiling,compute shading
  Fragment job:fragment shading
  Job manager有两个job slots:可以同时处理non-fragment & fragment job
  GPU active即GPU time。
  GPU performence指标解读:
  下图为Mali-G77 perf.counter
  Fragment Front-end
  当Primitive rasterize后,会产生许多以2*2fragment为单位的Quads。
  shader内dFdx,dFdy的计算便是依赖quad的结构。
  partial quad:=该quad有人一个fragment不在primitive内部。在符合某些条件下(no discard:alpha to coverage,no depth write in shader,no blending)。
  FPK(mali架构特有):Forward Pixel Kill
  在render opaque fragments的情况下,当quad在FPK buffer排队等待进入Execution core执行时,会再根据新进quad的ZS状态剔除前面排队的quad。(类似于HSR,即不透明绘制时绘制最后进入quad的内容。)
  接着每4个quads(数量依架构不同),会在组成一个warp,排进queque等待执行。此时一个warp内有16个单元会进行平行运算,概念上可视为16 threads,每个thread在同一时间是执行一样的指令,但是处理的资料会不同。
  在执行fragment shader时,每个thread对应一个fragment,且同一warp内的fragments不一定都来自于同一个primitive,在执行vertex shader时,每个thread则是对应于一个vertex。
  Warp的排程与执行:
  假设
  1.我们一次只能执行一个instruction stream
  2.根据shader registers的用量,目前只能分配给4 active warps使用,
  若shader使用过多registers,能同时执行的thread数量会降低,active warps数量会降低,遇到stall时,可替换的选择性变少,hide latency能力降低
  (若Mail-G77shader使用超过32registers,thread数量会从1024降成512(64to32warps)。
  Execution core:
  1.2.2 Fragment指标
  1.2.3 Tiling指标
  Tiler culling的单位是Primitive
  Facing test culling在一般3D rendering大约会在50%。
  Micro geotmetry problem:sample_test_culled rate 超过10%
  当primitive在image Plane所投影之范围未包含任何一个Pixel sample时,会遭到剔除。
  当此问题发生时,建议制作geometry LOD 或是CPU software object culling。
  注意:请留意每个pipeline stage处理单位:Tiler culling:primitive;Early-ZS culling:quad;Execution core:warp
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号