私はマルチスレッドレンダリングについて多くのことを読んできました。フレームレートを高速化し、より多くのものをレンダリングするために、スレッドを使用して GPU に作業を送信するためのあらゆる種類の奇妙で素晴らしいスキームを提案してきましたが、私は全体で少し概念的な問題を抱えており、私はあなたがどう思うかを見るために、私はここで教祖によってそれを動かそうと思いました.
私の知る限り、GPU での同時実行の基本単位はワープです。つまり、ジオメトリ サブミッション レベルの上位ではなく、ピクセル レベルで下位にあるということです。したがって、GPU での同時実行の単位がワープであることを考えると、複数のスレッドが互いの送信を台無しにしないように、ドライバーをミューテックスでかなり厳密にロックダウンする必要があります。この場合、D3D または OpenGL マルチスレッド プリミティブにコーディングするメリットがどこにあるのかわかりません。
マルチスレッド シナリオで GPU を使用する最も効率的な方法は、送信する前に行う作業のバッチをまとめて収集する、より高い抽象的なレベルで行うことでしょうか? つまり、複数のスレッドからのコマンドをランダムにインターリーブするのではなく、単一のブロックが複数のスレッドからの作業を受け入れると考えていましたが、レンダラーに送信される前にパフォーマンスを向上させるために物事が順序付けられていることを確認するためのインテリジェンスが内部に少しあります。複数のスレッドで作業したい場合は、はるかに大きな利益が得られます。
では、実際の API での D3D/OpenGL マルチスレッド レンダリングのサポートはどこにあるのでしょうか?
私の混乱を助けてください!