有没有对移动平台的glReadPixels之类的命令进行特殊优化?

Is there any special optimization for commands like glReadPixels on the mobile platform?

glReadPixels 从位于显存中的帧缓冲区读取数据到主存。在 PC 端,性能受限于 PCI-E 带宽。然而,在一些移动平台上,主内存和显存共享同一个物理内存。是不是说从显存读数据到主存的命令在移动平台上速度更快?移动端有没有这样的优化?

参考:https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glReadPixels.xhtml

glReadPixels 通常非常慢的主要原因是它引入了一个 CPU/GPU 同步点。在 GPU 完成渲染之前,glReadPixels 函数通常无法在 CPU 上完成。无论内存架构如何,GPU 管道都非常深,因此等待时间可能很长。

修复方法是使用异步读取 PBO,如此处所述:Android OpenGL ES 3.0 PBO instead of glReadPixels()。然而,加速来自删除 CPU/GPU 同步点,而不是与内存架构有很大关系。