Apakah yang setara dengan daftar tampilan modern?

9

Daftar tampilan adalah fitur OpenGL yang, secara teori, dapat mempercepat bagian apa pun dari API dengan menyimpan sekelompok perintah untuk digunakan nanti. Dalam pemahaman saya, ini sangat masuk akal sehubungan dengan upaya saat ini untuk mengurangi overhead pengemudi.

Daftar tampilan tidak digunakan lagi dalam versi 3.1. Apa yang setara dengan API modern dan apakah DirectX memaparkan fitur serupa? Jika tidak ada fungsi seperti itu lagi, apa alasannya?

Julien Guertault
sumber

Jawaban:

12

Nvidia memiliki ekstensi untuk membuat buffer perintah di GL modern .

Alasan kurangnya fungsionalitas yang serupa adalah bahwa ada banyak keadaan yang terlibat mengenai cara membuat dan daftar tampilan dipengaruhi oleh banyak keadaan yang berbeda. Misalnya mengubah keadaan campuran memerlukan menambal shader fragmen pada beberapa perangkat keras.

NVidia menyelesaikannya dengan menangkap semua status dan mengatur ulang ke status setelah pengiriman:

1) Apa yang memotivasi desain?

Tujuan utamanya adalah untuk dapat menggunakan kembali perintah buffer yang telah divalidasi. API dan proposal lain telah membahas hal ini dengan berbagai inkarnasi daftar perintah atau objek negara, tetapi masalah yang berulang adalah bahwa interaksi antara berbagai tahap pipa mencegah penyebaran dan penggunaan kembali ini. Interaksi ini sering kali khusus perangkat keras (dan berbeda dari vendor ke vendor atau bahkan generasi ke generasi) dan interaksi baru diperkenalkan oleh fitur-fitur baru yang tidak dibayangkan ketika skema prevalensi diusulkan.

Kami berusaha untuk mengatasi ini dengan memiliki objek keadaan monolitik yang mencakup (hampir) seluruh keadaan pipa. Ini harus menyediakan informasi yang cukup untuk semua implementasi untuk melakukan validasi silang yang diperlukan. Kami mencoba membuat ini dengan cara yang meminimalkan jejak API baru - karena kami ingin SEMUA keadaan (termasuk yang ditambahkan di masa depan), kami hanya menangkapnya dari konteks saat ini.

[...]

23) Dalam kondisi apa keadaan tersisa, yang dimodifikasi oleh token, setelah panggilan pengiriman?

DILAKUKAN: status diatur ulang.

(dari teks ekstensi yang ditautkan di atas)

Namun penerus sebenarnya adalah fungsi buffer perintah di DX12 dan vulkan. Itu juga akan menangkap semua status render menjadi satu objek untuk digunakan saat membuat dan mengisi buffer perintah. Perpanjangan NVidia didasarkan pada arsitektur itu sebagai hasil dari keterlibatan NVidia dalam desain Vulkan.

aneh ratchet
sumber