抗锯齿,内存和带宽要求高,消耗大量性能。tile架构的gpu不像平台设计的那样后处理抗锯齿。
Adreno gpu有扩展,帮助多采样抗锯齿(MSAA),经有采样层上的限制。你可以做2x msaa不需要导致大量渲染消耗,但比2x更高的,就会消耗大了。
msaa的后处理抗锯齿方法。
尽管有效,但涉及到blit rt A到贴图B,blit在移动gpu上消耗较大。
下面是消耗较小的blit:
Adreno gpu可以在GMEM上执行多采样,然后GMEM store到一个单采样贴图,用glFramebufferTexture2DMultisampleEXT。bin数量和2x msaa在renderbuffer的一样,resolve到tile到主存的时候,进行滤波。
看到是glBlitFramebuffer调用,导致了blit。
为了实现第二种工作流的方式,替换为glFramebufferTexture2DMultisampleEXT:
看到blit消失了。bin和msaa没有变化:
渲染时间缩短了。
不是所有blit都是这帧原因。mipmap有时候在gpu生成、blit阶段。blit也可能是通过更新当前在用的贴图导致的。
参考:https://developer.qualcomm.com/software/snapdragon-profiler/app-notes/anti-aliasing-with-adreno
最新评论