Cara: Periksa Dukungan Driver

Topik ini menunjukkan cara menentukan apakah fitur multithreading (termasuk pembuatan sumber daya dan daftar perintah) didukung untuk akselerasi perangkat keras.

Sebaiknya aplikasi memeriksa dukungan perangkat keras grafis multithreading. Jika perangkat keras driver dan grafis tidak mendukung pembuatan objek multithreaded, performa dapat dibatasi dengan cara berikut:

  • Membuat beberapa objek (bahkan dari jenis yang berbeda) pada saat yang sama mungkin terbatas.
  • Membuat objek saat merender perintah grafis dengan menggunakan konteks langsung mungkin terbatas. Misalnya, jika perangkat keras tidak mendukung multithreading, aplikasi harus menghindari pembuatan pada utas latar belakang objek yang membutuhkan waktu yang sangat lama untuk dibuat. Operasi buat yang membutuhkan waktu sangat lama dapat memblokir penyajian konteks langsung dan meningkatkan risiko gagap kecepatan bingkai visual.

Runtime mendukung multithreading dan daftar perintah terlepas dari dukungan driver dan perangkat keras; jika tidak ada dukungan driver dan perangkat keras untuk multithread atau daftar perintah, runtime akan meniru fungsionalitas. Untuk informasi selengkapnya tentang multithreading, lihat Pengantar Multithreading di Direct3D 11.

Untuk memeriksa dukungan driver untuk multithreading:

  1. Menginisialisasi objek antarmuka ID3D11Device . Secara default, multithreading diaktifkan.
  2. Panggil ID3D11Device::CheckFeatureSupport. Teruskan nilai D3D11_FEATURE_THREADING ke parameter Fitur , teruskan struktur D3D11_FEATURE_DATA_THREADING ke parameter pFeatureSupportData , dan teruskan ukuran struktur D3D11_FEATURE_DATA_THREADING ke parameter FeatureSupportDataSize .
  3. Jika metode ID3D11Device::CheckFeatureSupport berhasil, struktur D3D11_FEATURE_DATA_THREADING yang Anda lewati di langkah sebelumnya akan diinisialisasi dengan informasi tentang dukungan multithreading.
    • Jika DriverConcurrentCreatesTRUE, driver dapat membuat lebih dari satu sumber daya secara bersamaan (bersamaan) pada utas yang berbeda.

      Jika DriverCommandListsTRUE, driver mendukung daftar perintah. Artinya, perintah penyajian yang dikeluarkan oleh konteks langsung dapat bersamaan dengan pembuatan objek pada utas terpisah dengan risiko rendah gagap kecepatan bingkai.

    • Jika DriverConcurrentCreatesFALSE, driver tidak mendukung pembuatan bersamaan, yang berarti jumlah konkurensi yang mungkin sangat terbatas. Perangkat keras grafis tidak dapat membuat objek dari berbagai jenis pada utas yang berbeda secara bersamaan. Selain itu, perangkat keras grafis tidak dapat menggunakan konteks langsung untuk mengeluarkan perintah render saat perangkat keras grafis mencoba membuat sumber daya di utas lain.

Cara Menggunakan Direct3D 11

Multiutas