2013-02-21 143 views
0

今天我想出了一些讓我想知道的事情。我有三星Exynos 4412 ARM9 CPU,它有一個GPU400(QuadCore)。我試圖通過所有已知的方法從GPU獲取紋理到CPU,並且它非常慢。在PC平臺的現代CPU和GPU中也會出現相同的情況和低速。我想知道這是怎麼回事,三星Exynos是一個SoC,它們都具有相同的內存,我不應該關心總線。 這是爲什麼發生?爲什麼從GPU到CPU的數據傳輸速度很慢?

從GPU到CPU的數據通過很多方法傳輸,我嘗試過glReadpixels,gltexSubImage2D,gltexImage2d,FBO。 幀率從40FPS下降到7FP或7FPS,同時使用任何這些方法,紋理1024 * 1024 24位。

+0

[從GPU複製到CPU的速度慢於將CPU複製到GPU](http://stackoverflow.com/questions/13341295/copy-from-gpu-to-cpu-is-slower-than-copying -cpu-to-gpu) – 2013-02-21 18:43:24

+0

@ZanLynx我擁有的GPU沒有CUDA或OpenCL – 2013-02-21 18:45:18

+0

您可以在ms或其他值中定義* slow *嗎?還提供更多信息如何傳輸數據。 – Kimi 2013-02-21 18:45:38

回答

1

可能的答案taken from the OpenGL forums

  • 延遲:它需要時間讀命令到達硬件。
  • OpenGL命令緩衝:讀取數據需要OpenGL驅動程序完成所有未完成的命令。
  • 硬件緩衝:在進行回讀之前,硬件必須清空所有GPU核心管道。

可能的解決方法: - 在GPU內部的數據複製到另一個位置,並計算它之後讀回的幀的一些數字。這應該允許寫入該位置的所有內容在您嘗試閱讀之前完成。

相關問題