現代のディスプレイリストに相当するものは何ですか?


9

表示リストはOpenGLの機能であり、理論的には、後で使用できるようにコマンドのグループを保存することにより、APIのあらゆる部分を高速化できます。私の理解では、これはドライバーのオーバーヘッドを削減するための現在の取り組みに関しては非常に理にかなっています。

ただし、表示リストはバージョン3.1で廃止されました。最新のAPIと同等のものは何ですか?DirectXは同様の機能を公開していますか?そのような機能がなくなった場合、その根拠は何ですか?

回答:


12

Nvidiaには、最新のGLでコマンドバッファーを作成するため拡張機能があります。

同様の機能が欠如している理由は、レンダリング方法や表示リストがさまざまな状態の影響を受けることに関して、多くの状態が関係しているためです。たとえば、ブレンド状態を変更するには、一部のハードウェアでフラグメントシェーダーにパッチを適用する必要があります。

NVidiaは、すべての状態をキャプチャし、ディスパッチ後の状態にリセットすることで解決しました。

1)設計の動機は何ですか?

主な目的は、事前検証済みのコマンドバッファを再利用できるようにすることです。他のAPIや提案では、コマンドリストや状態オブジェクトのさまざまな具体化によってこれに対処していますが、繰り返し発生する問題は、パイプラインのさまざまなステージ間の相互作用がこの事前検証と再利用を妨げることです。これらの相互作用は、多くの場合、ハードウェア固有であり(ベンダーごと、または世代ごとに異なります)、事前検証スキームが提案されたときに想像もできなかった新しい機能によって、新しい相互作用が導入されます。

パイプラインの状態全体を(ほぼ)網羅するモノリシック状態オブジェクトを持つことで、これに対処しようとします。これにより、すべての実装が必要な相互検証を実行するための十分な情報が提供されます。新しいAPIフットプリントを最小限に抑える方法でこれらを作成しようとします。すべての状態(将来追加されるものも含む)が必要なため、コンテキストの現在の状態からキャプチャするだけです。

[...]

23)ディスパッチ呼び出しの後に、トークンによって変更された状態が残っていますか?

解決済み:状態がリセットされる。

(上記にリンクされている拡張テキストから)

ただし、真の後継者はDX12およびvulkanのコマンドバッファ機能です。また、すべてのレンダリング状態を1つのオブジェクトにキャプチャして、コマンドバッファを作成して埋めるときに使用します。NVidia拡張機能は、Vulkan設計へのNVidiaの関与の結果として、そのアーキテクチャに基づいています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.