为什么从GPU到CPU的数据传输速度很慢?

时间:2013-02-21 18:37:54

标签: performance opengl-es embedded gpu

今天我发现了让我感到奇怪的事情。我有三星Exynos 4412 ARM9 CPU,它有一个GPU400(QuadCore)。我尝试通过所有已知方法从GPU到CPU获得纹理,并且它非常慢。在PC平台的现代CPU和GPU中也会出现相同的情况和低速。我想知道这是怎么发生的,三星Exynos是一个SoC,它们都有相同的内存,我不应该关心总线。 为什么会这样?

从GPU到CPU的数据通过许多方法传输,我尝试过glReadpixels,gltexSubImage2D,gltexImage2d,FBO。 在使用任何这些方法时,帧速率从40FPS降至7FP或7FPS,纹理1024 * 1024 24位。

1 个答案:

答案 0 :(得分:1)

可能的答案taken from the OpenGL forums

  • 延迟:读取命令需要一段时间才能到达硬件。
  • OpenGL命令缓冲:读取数据需要OpenGL驱动程序来完成所有未完成的命令。
  • 硬件缓冲:在进行回读之前,硬件必须清空所有GPU核心管道。

可能的解决方案:   - 将GPU内部的数据复制到另一个位置,并在计算后将其读回一定数量的帧。在您尝试阅读之前,这应该允许写入该位置的所有内容都已完成。