2016-10-04 5 views
6

FPSでの問題のトラブルシューティングを試みています。メタルフラッシュはレンダリング時間の大部分を占めることがわかります。それはいいことですか?SceneKitの統計情報表示で「Metal Flush」とは何ですか?

SceneKit stats display

+0

あなたはそれを把握しましたか? – ColdSteel

+0

並べ替え...私は、テクスチャのサイズと解像度を減らすことで、その部門の劇的な改善を得ました。だから私は、 "メタルフラッシュ"はメインメモリからビデオメモリなどへの画像データの転送であると結論づけることができます。 –

+0

でも、何もない黒い場面でも5〜6msかかります。 – ColdSteel

答えて

5

Appleは「金属フラッシュ」はどこにでもある、まさに文書化されているようには見えませんが、私はOpenGLと以前の経験に基づいてお答えしますので、私は、このことについてわからない午前:

GPU搭載アプリケーションの実行サイクル中、CPUはデータをGPUにプッシュし、GPUがこのデータで動作を完了するのを待って(その間に他の作業を行う可能性がある)、GPUが完了するとすぐにより多くのデータをプッシュし、より多くの操作を要求します。通常、「フラッシング」とは、CPUがGPUを待って操作を終了する(古いデータをフラッシュする)ことで、GPUにさらにデータをプッシュできるようにすることです。

私の解釈が正しいとすれば、それはCPUがビデオメモリを待つのに費やす時間を測定し、より多くのデータをプッシュしてGPUに要求することができることを意味します。その場合、それは良いことでも悪いことでもよいでしょう:

CPUとGPUの間には常に通信オーバーヘッドが存在するため、レンダリング時間のほとんどが「Metal Flush」によって占有されている場合は、アプリケーション間の遅延のほとんどが通信オーバーヘッドにすぎないほど速く実行されていることを意味する可能性があります。その場合、それは良いことになるでしょう。

一方、多くのデータをGPUにプッシュすると、データをコピーして処理が遅れている可能性があります。その場合、それは悪いことです。

ここで重要なことは、FPSが確実に高くなるようにすることです。あなたのFPSが "Metal Flush"のために落ちている場合は、テクスチャをチャンクに保存したり、低解像度のテクスチャを使用するなど、データ転送のスペースを取ってみてください。

関連する問題