利用Adreno抗锯齿
避免昂贵的后处理。
抗锯齿技术可减少3D场景中线条和边缘的锯齿状外观,GPU上的工作负载最终成为一种控制模糊,以消除锯齿状外观。
我们可以将GMEM比作GPU高速L1缓存。将任何内容加载到缓存中的代价都很昂贵,除非确有必要,否则我们应该竭力避免。同样,将缓存中的任何内容存储到非平铺内存中的代价也很高,因此,除非确有必要,否则应该避免。
抗锯齿是内存和带宽密集型任务,需要消耗大量功率。通常,具有平铺架构的移动GPU不具有和PC和游戏机GPU相同的抗锯齿后处理能力。
Qualcomm® Adreno™ GPU具有有助于多重采样抗锯齿(MSAA)的扩展,虽然采样水平存在限制。您可以执行2x级别的MSAA,而不会在渲染管道中产生任何显著的额外成本,但是超出这个级别,代价可能会变得非常高。
以下流程图说明了使用MSAA的后处理抗锯齿方法:
虽然有效,但涉及到将渲染缓冲区A 传送(blitting)到纹理B中,而在移动GPU上传送的代价太高。
下面的流程图显示了一种低成本的传送替代方法:
Adreno GPU在GMEM中执行多次采样,然后解析(GMEM存储)到使用glFramebufferTexture2DMultisampleEXT的单采样纹理。图元的数量与渲染缓存中的2xMSAA相同。将图元解析到主内存时进行过滤。
在Snapdragon Profiler中使用“跟踪捕获”模式,可以利用“渲染阶段”衡量标准。在以下截图中,传送出现在底部轨迹中:
Snapdragon Profiler可以显示消除锯齿级别,作为曲面渲染块的MSAA属性:
使用快照模式,有助于识别传送(blit)的来源,我们可以确定,在本例中,是由一个glBlitFramebuffer调用生成的,如上面第一个流程图所示。
要实现第二个流程图中描述的替代技术,我们可以使用glFramebufferTexture2DMultisampleEXT替代调用。现在,渲染阶段视图中就不存在传送(blit)轨迹了:
虽然避免了传送(blit),但表面块属性显示图元数量仍为30,MSAA级别仍为2:
而且,表面渲染时间从10.55ms降至10.01ms,提高了5%。
注意:并非所有传送(blit)都需要警告,或者在分析时作为一个根本原因。在传送阶段,有时会在GPU中生成贴图细化(Mipmap)。此外,传送也可能是更新使用中的纹理而引起的。
Qualcomm 开发者专区是 Qualcomm 联合CSDN 共同打造的面向中国开发者的技术专区。致力于通过提供全球最新资讯和最多元的技术资源及支持,为开发者们打造全面一流的开发环境。本专区将以嵌入式、物联网、游戏开发、Qualcomm® 骁龙™处理器的软件优化等技术为核心,打造全面的开发者技术服务社区,为下一代高性能体验和设计带来更多的想法和灵感。
加入 Qualcomm 开发者专区