Bagikan melalui


Menggunakan data fitur Direct3D 11 untuk melengkapi tingkat fitur Direct3D

Cari tahu cara memeriksa dukungan perangkat untuk fitur opsional, termasuk fitur yang ditambahkan dalam versi Windows terbaru.

Tingkat fitur Direct3D menunjukkan serangkaian fungsionalitas GPU yang terdefinisi dengan baik yang kira-kira sesuai dengan berbagai generasi perangkat keras grafis. Ini sangat menyederhanakan tugas memeriksa kapasitas perangkat keras, dan juga memberikan pengalaman yang konsisten di berbagai perangkat yang berbeda.

Untuk mempertimbangan beberapa varians di berbagai implementasi perangkat keras - termasuk perangkat keras warisan, perangkat keras seluler, dan perangkat keras modern - beberapa fitur dianggap opsional. Dukungan untuk fitur-fitur ini dapat ditentukan dengan memanggil ID3D11Device::CheckFeatureSupport dan menyediakan struktur D3D11_FEATURE_DATA_* yang relevan. Topik ini menjelaskan berbagai fitur Direct3D 11 opsional, cara beberapa di antaranya bekerja sama, dan bagaimana Anda dapat menghindari pemeriksaan untuk setiap fitur opsional.

Cara memeriksa dukungan fitur opsional

Panggil ID3D11Device::CheckFeatureSupport, menyediakan struktur yang mewakili fitur opsional yang ingin Anda gunakan. Jika metode mengembalikan S_OK, itu berarti Anda menggunakan versi runtime Direct3D yang mendukung fitur opsional. Jika mengembalikan E_INVALIDARG, itu berarti Anda menggunakan versi runtime Direct3D 11 dari sebelum fitur opsional ditambahkan - ini berarti fitur opsional tidak tersedia, bersama dengan fitur opsional lainnya yang diperkenalkan dalam versi Direct3D 11 yang sama atau yang lebih baru.

Dapatkah saya meminimalkan pekerjaan yang diperlukan untuk pemeriksaan dukungan fitur?

Selain memiliki runtime Direct3D 11 yang tepat (biasanya terkait dengan versi Windows) driver grafis juga harus cukup baru untuk mendukung fitur opsional. Spesifikasi WDDM memerlukan fitur opsional untuk didukung jika perangkat keras dapat mendukungnya. Jadi ketika driver grafis mendukung salah satu fitur opsional yang ditambahkan dalam versi Windows tertentu, biasanya berarti bahwa driver grafis mendukung fitur lain yang ditambahkan dalam versi Windows tersebut. Misalnya, jika driver perangkat mendukung bayangan pada fitur tingkat 9, maka Anda tahu driver perangkat setidaknya WDDM 1.2.

Catatan Jika perangkat Microsoft Direct3D mendukung fitur tingkat 11.1, semua fitur opsional yang ditunjukkan oleh D3D11_FEATURE_DATA_D3D11_OPTIONS didukung secara otomatis kecuali SAD4ShaderInstructions dan ExtendedDoublesShaderInstructions.

Runtime selalu mengatur pengelompokan anggota berikut secara identik. Artinya, semua nilai dalam pengelompokan adalah TRUE atau FALSE bersama-sama:

  • BuangAPIsSeenByDriver dan FlagsForUpdateAndCopySeenByDriver
  • ClearView, CopyWithOverlap, ConstantBufferPartialUpdate, ConstantBufferOffsetting, dan MapNoOverwriteOnDynamicConstantBuffer
  • MapNoOverwriteOnDynamicBufferSRV dan MultisampleRTVWithForcedSampleCountOne

Opsi tingkat fitur 11.2 (D3D11_FEATURE_D3D11_OPTIONS1): Fitur opsional yang ditunjukkan oleh bidang ini independen dan harus diperiksa satu per satu.

Dukungan fitur pada perangkat Windows RT 8.1 dan Windows Phone 8.1

Windows RT perangkat tablet dapat mendukung berbagai tingkat fitur dan fitur opsional, dioptimalkan untuk mengurangi konsumsi daya, dan menggunakan grafik terintegrasi alih-alih GPU diskrit. Aplikasi Windows Store untuk perangkat ARM harus mendukung tingkat fitur 9.1. Aplikasi DirectX untuk Windows RT harus memanfaatkan fitur opsional yang dapat menghemat daya dan siklus - seperti instancing sederhana - saat tersedia.

Windows Phone 8 perangkat seluler mendukung fitur tingkat 9.3 dengan fitur opsional tertentu. Lihat Fitur Direct3D tingkat 9_3 untuk Windows Phone 8.

Apa saja fitur opsional Direct3D 11?

Sisa artikel ini menjelaskan fitur opsional yang tersedia di Direct3D 11.2. Fitur dijelaskan dalam urutan kronologis pada saat ditambahkan sehingga Anda bisa memahami fitur apa yang ada dalam versi Direct3D 11 yang berbeda.

Dukungan shader komputasi opsional untuk tingkat fitur 10

Fitur berikut selalu tersedia untuk perangkat tingkat fitur 10:

D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS: Jika ini TRUE, perangkat mendukung shader komputasi. Ini termasuk dukungan untuk buffer mentah dan terstruktur.

Ketika perangkat tingkat fitur 10_0 atau 10_1 mendukung fitur ini, perangkat tidak dijamin mendukung shader komputasi 4.1. Aplikasi harus disiapkan untuk kembali ke shader komputasi 4.0 jika ID3D11Device::CreateComputeShader memberikan pengecualian dengan program shader komputasi 4.1.

Kemampuan opsional untuk tingkat fitur 9

Fitur berikut ditambahkan untuk tingkat fitur 9 mulai dari Windows 8:

D3D11_FEATURE_DATA_D3D9_OPTIONS: Menunjukkan dukungan untuk pembungkusan tekstur alamat dengan tekstur non-power-of-2. Jika ini didukung, D3D11_TEXTURE_ADDRESS_MODE_WRAP dapat digunakan dengan tekstur tersebut.

D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT: Menunjukkan dukungan untuk sampel perbandingan dalam tingkat fitur model shader 4.0 9_x shader. Ini digunakan untuk pengujian kedalaman dalam shader piksel, memungkinkan dukungan untuk teknik umum seperti pemetaan bayangan dan stensil.

Fitur berikut ditambahkan untuk perangkat tingkat fitur 9 mulai dari Windows 8.1:

D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT: Menunjukkan dukungan untuk fitur instancing sederhana yang mungkin tersedia pada perangkat keras tingkat 9 DirectX. Instancing sederhana berarti bahwa semua anggota InstanceDataStepRate dari struktur D3D11_INPUT_ELEMENT_DESC yang digunakan untuk menentukan tata letak input harus sama dengan 1. Perangkat yang mendukung tingkat fitur 9.3 atau yang lebih tinggi sudah menyertakan dukungan penuh untuk instancing.

Dukungan presisi floating-point opsional untuk program shader

D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT: Bidang dalam struktur ini menunjukkan panjang angka floating-point ketika presisi minimum diaktifkan, atau 0 jika hanya presisi titik mengambang 32-bit penuh yang didukung.

Untuk perangkat tingkat fitur 9, presisi minimum untuk shader vertex dapat berbeda dari shader piksel. Presisi untuk shader vertex ditunjukkan di bidang AllOtherShaderStagesMinPrecision .

D3D11_FEATURE_DATA_DOUBLES: Perangkat tingkat fitur 11 dapat mendukung perhitungan presisi ganda dalam program model shader 5.0. Dukungan untuk perhitungan presisi ganda dalam shader berarti bahwa float dapat dikonversi menjadi ganda dalam program shader komputasi, memberikan manfaat komputasi presisi yang lebih tinggi dalam setiap shader pass. Angka presisi ganda harus dikonversi kembali ke float sebelum ditulis ke buffer output. Perhatikan bahwa pembagian presisi ganda belum tentu didukung.

Kemampuan tambahan untuk Direct3D 11.2

Direct3D 11.2 menambahkan empat fitur opsional baru yang dapat didukung oleh perangkat Direct3D 11. Fitur-fitur ini berada dalam struktur D3D11_FEATURE_DATA_D3D11_OPTIONS1 :

TiledResourcesTier: Menunjukkan dukungan untuk sumber daya berjenjang, dan menunjukkan tingkat tingkat yang didukung.

MinMaxFiltering: Menunjukkan dukungan untuk opsi pemfilteran D3D11_FILTER_MINIMUM_* dan D3D11_FILTER_MAXIMUM_*, yang membandingkan hasil pemfilteran dengan nilai minimum (atau maksimum). Lihat D3D11_FILTER.

ClearViewAlsoSupportsDepthOnlyFormats: Menunjukkan dukungan untuk menghapus tampilan sumber daya buffer kedalaman.

MapOnDefaultBuffers: Menunjukkan dukungan untuk memetakan buffer target render yang dibuat dengan bendera D3D11_USAGE_DEFAULT .

Penyajian berbasis petak peta

D3D11_FEATURE_DATA_ARCHITECTURE_INFO: Menunjukkan apakah perangkat grafis mengumpulkan perintah penyajian, dan melakukan penyajian berbasis petak peta secara default. Ini dapat digunakan sebagai petunjuk untuk pengoptimalan mesin grafis.

Fitur opsional untuk pengembangan dan penelusuran kesalahan

D3D11_FEATURE_DATA_D3D11_OPTIONS::D iscardAPIsSeenByDriver: Anda dapat memantau anggota ini selama pengembangan untuk mengesampingkan driver warisan pada perangkat keras di mana DiscardView dan DiscardResource mungkin bermanfaat.

D3D11_FEATURE_DATA_MARKER_SUPPORT: Ini didukung jika perangkat keras dan driver mendukung penandaan data untuk pembuatan profil GPU.

Perangkat