【问题标题】:Why the data transfer is slow from GPU to CPU?为什么从 GPU 到 CPU 的数据传输很慢?
【发布时间】:2013-02-07 05:23:02
【问题描述】:

今天我发现了一件让我很疑惑的事情。我有三星 Exynos 4412 ARM9 CPU,它有一个 GPU400(四核)。我试图通过所有已知的方法从 GPU 到 CPU 获取纹理,它真的很慢。 PC 平台的现代 CPU 和 GPU 也会出现相同的情况和缓慢的速度。我想知道这是怎么发生的,三星 Exynos 是一个 SoC,它们都有相同的内存,我不应该关心总线。 为什么会这样?

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

【问题讨论】:

标签: performance opengl-es embedded gpu


【解决方案1】:

可能的答案taken from the OpenGL forums:

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

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

【讨论】:

    猜你喜欢
    • 2018-10-22
    • 2022-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2012-08-17
    • 1970-01-01
    相关资源
    最近更新 更多