1

今日、私は本当に不思議に思う何かを見つけました。GPU400(QuadCore)を搭載したSamsung Exynos 4412ARM9CPUを使用しています。既知のすべての方法でGPUからCPUにテクスチャを取得しようとしましたが、非常に低速でした。同じシナリオと低速は、PCプラットフォームの最新のCPUとGPUでも発生します。私の疑問は、それがどのように発生するかであり、Samsung ExynosはSoCであり、両方とも同じメモリを備えているため、バスについては気にする必要はありません。なぜそれが起こるのですか?

GPUからCPUへのデータは、glReadpixels、gltexSubImage2D、gltexImage2d、FBOを試した多くの方法で転送されます。テクスチャ1024*1024 24ビットで、これらの方法のいずれかを使用している間、フレームレートは40FPSから7FPsまたは7FPSに低下します。

4

1 に答える 1

2

OpenGL フォーラムからの可能な回答:

  • 待ち時間: 読み取りコマンドがハードウェアに到達するまでに時間がかかります。
  • OpenGL コマンドのバッファリング: データを読み取るには、未処理のコマンドをすべて完了するために OpenGL ドライバーが必要です。
  • ハードウェア バッファリング: リードバックを実行する前に、ハードウェアはすべての GPU コア パイプラインを空にする必要があります。

考えられる解決策: - データを GPU の内部で別の場所にコピーし、計算後にいくつかのフレームを読み戻します。これにより、読み取りを試みる前に、その場所へのすべての書き込みが完了するはずです。

于 2013-02-21T18:56:03.007 に答える