Bagikan melalui


enumerasi D3D12_STATE_OBJECT_FLAGS (d3d12.h)

Menentukan batasan untuk objek status. Gunakan nilai dari enumerasi ini dalam struktur D3D12_STATE_OBJECT_CONFIG .

Sintaks

typedef enum D3D12_STATE_OBJECT_FLAGS {
  D3D12_STATE_OBJECT_FLAG_NONE = 0,
  D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
  D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
  D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS
} ;

Konstanta

 
D3D12_STATE_OBJECT_FLAG_NONE
Nilai: 0
Tidak ada batasan objek status.
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS
Nilai: 0x1
Bendera ini hanya berlaku untuk objek status koleksi jenis. Jika tidak, bendera ini diabaikan.

Ekspor dari koleksi ini diizinkan untuk memiliki referensi (dependensi) yang belum terselesaikan yang harus diselesaikan (ditentukan) ketika koleksi disertakan dalam objek status yang berisi, seperti objek status alur raytracing (RTPSO). Ini termasuk tergantung pada asosiasi subobjek yang ditentukan secara eksternal untuk mengaitkan subobject eksternal (misalnya tanda tangan akar) ke ekspor lokal.

Dengan tidak adanya bendera ini, semua ekspor dalam koleksi ini harus menyelesaikan dependensinya sepenuhnya secara lokal, termasuk asosiasi subobjek yang diperlukan yang didefinisikan secara lokal. Implementasi/driver tingkat lanjut akan memiliki informasi yang cukup untuk mengkompilasi kode dalam koleksi dan tidak perlu menyimpan kode yang tidak dikompilasi (kecuali bendera D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS diatur), sehingga ketika koleksi digunakan dalam objek status yang berisi (misalnya RTPSO), pekerjaan minimal perlu dilakukan oleh driver, idealnya tautan "murah" paling banyak.
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS
Nilai: 0x2
Bendera ini hanya berlaku untuk objek status koleksi jenis. Jika tidak, bendera ini diabaikan.

Jika koleksi ini disertakan dalam objek status lain (misalnya RTPSO), shader/fungsi di sisa objek status yang berisi diizinkan untuk bergantung pada ekspor (misalnya panggilan) dari koleksi ini.

Dengan tidak adanya bendera ini (default), ekspor dari koleksi ini tidak dapat langsung dirujuk oleh bagian lain dari berisi objek status (misalnya RTPSO). Ini dapat mengurangi jejak memori untuk koleksi sedikit karena driver tidak perlu menyimpan kode yang tidak dikompilasi dalam koleksi pada kesempatan bahwa mungkin dipanggil oleh beberapa fungsi eksternal yang kemudian akan mengkompilasi semua kode bersama-sama. Yang mengatakan, jika tidak semua asosiasi subobjek yang diperlukan telah didefinisikan secara lokal untuk kode dalam koleksi ini, driver mungkin belum dapat mengkompilasi kode shader dan mungkin masih perlu menyimpan kode yang tidak dikompilasi.

Asosiasi subobject yang ditentukan secara eksternal yang mengaitkan subobject eksternal ke ekspor lokal tidak dihitung sebagai dependensi eksternal pada definisi lokal, sehingga kehadiran atau tidak adanya bendera ini tidak memengaruhi apakah asosiasi diizinkan atau tidak. Di sisi lain jika koleksi saat ini mendefinisikan asosiasi subobject untuk subobject yang ditentukan secara lokal ke ekspor eksternal (misalnya shader), yang dihitung sebagai dependensi eksternal pada definisi lokal dan bendera ini harus diatur.

Terlepas dari keberadaan atau tidak adanya bendera ini, titik masuk shader (seperti grup temuan atau shader yang terlewat) dalam koleksi terlihat sebagai titik masuk ke objek status yang berisi (misalnya RTPSO) jika diekspor olehnya. Dalam kasus RTPSO, titik masuk yang diekspor dapat digunakan dalam tabel shader untuk raytracing.

Persyaratan

Persyaratan Nilai
Header d3d12.h