Bagikan melalui


Secara retroaktif Membutuhkan DDI CalcPrivate Free-Threaded

Direct3D versi 11 secara retroaktif memerlukan fungsi driver tampilan mode pengguna yang dimulai dengan pfnCalcPrivate pada fungsi DDI Direct3D versi 10 yang berulir bebas. Persyaratan retroaktif ini cocok dengan perilaku DDI Direct3D versi 11 agar selalu memerlukan fungsi pfnCalcPrivate* dan pfnCalcDeferredContextHandleSize yang berulir bebas meskipun driver menunjukkan tidak mendukung utas DDI. Untuk informasi selengkapnya tentang bagaimana driver menunjukkan dukungan utas, lihat Alur Pendukung, Daftar Perintah, dan Alur 3-D. Alasan untuk persyaratan retroaktif ini adalah bahwa fungsi tersebut biasanya sangat sederhana karena mereka mengembalikan nilai langsung untuk ukuran. Fungsi yang lebih kompleks memutuskan nilai langsung mana yang akan dikembalikan berdasarkan parameter yang diteruskan ke fungsi. Persyaratan untuk fungsi yang dimulai dengan pfnCalcPrivate untuk benar-benar menulis data apa pun ke tempat selain tumpukan tidak ada. Persyaratan untuk fungsi-fungsi ini untuk membaca data apa pun selain parameter adalah langka. Persyaratan apa pun untuk membaca data tidak menghasilkan masalah ketidakcocokan. Fakta ini memungkinkan API Direct3D versi 11 untuk mengambil pengoptimalan yang sangat diperlukan dan mencegah melakukan sinkronisasi mahal dua kali per buat (misalnya, panggilan apa pun untuk membuat objek seperti panggilan ke CreateResource (D3D10) atau CreateGeometryShader), bukan hanya sekali.

Pengecualian penting untuk persyaratan utas bebas retroaktif ini adalah fungsi CalcPrivateDeviceSize yang digunakan untuk memenuhi pembuatan perangkat tampilan. CalcPrivateDeviceSize terletak pada tabel fungsi adaptor (D3D10_2DDI_ADAPTERFUNCS atau D3D10DDI_ADAPTERFUNCS). CalcPrivateDeviceSize tidak berada di bawah grup fungsi yang mengalami relaksasi dalam model utas. Tidak diperlukan untuk melakukan free-thread pada fungsi CalcPrivateDeviceSize .