Tingkat fitur Direct3D 12 Core 1.0

Tingkat Fitur Core 1.0 adalah subset dari set fitur Direct3D 12 lengkap. Tingkat Fitur Core 1.0 dapat diekspos oleh kategori perangkat yang dikenal sebagai perangkat khusus komputasi. Model driver keseluruhan untuk perangkat khusus komputasi adalah Microsoft Compute Driver Model (MCDM). MCDM adalah peer yang diturunkan skalanya dari Windows Device Driver Model (WDDM), yang memiliki cakupan yang lebih besar.

Perangkat yang hanya mendukung fitur dalam Core Feature Level dikenal sebagai perangkat Core.

Catatan

Perangkat khusus komputasi, perangkat MCDM, perangkat Tingkat Fitur Inti, dan perangkat Core semuanya memiliki arti yang sama. Kami akan lebih memilih perangkat Core untuk kesederhanaan.

Membuat perangkat Core

Secara umum, untuk membuat perangkat Direct3D 12, Anda memanggil fungsi D3D12CreateDevice , dan menentukan tingkat fitur minimum.

Jika Anda menentukan tingkat fitur 9 hingga 12, maka perangkat yang dikembalikan adalah perangkat kaya fitur, seperti GPU tradisional (yang mendukung superset fungsionalitas perangkat Core). Perangkat Inti tidak pernah dikembalikan untuk rentang tingkat fitur tersebut.

Di sisi lain, jika Anda menentukan tingkat fitur Core (misalnya, D3D_FEATURE_LEVEL::D 3D_FEATURE_LEVEL_1_0_CORE), maka perangkat yang dikembalikan bisa kaya fitur, atau bisa menjadi perangkat Core.

// d3dcommon.h
D3D_FEATURE_LEVEL_1_0_CORE = 0x1000

Jika Anda menentukan _CORE tingkat fitur, maka lapisan runtime/debug memvalidasi bahwa fitur yang digunakan aplikasi Anda diizinkan oleh _CORE tingkat fitur tersebut. Kumpulan fitur tersebut didefinisikan nanti dalam topik ini.

Model shader untuk perangkat Core

Perangkat Core mendukung Shader Model 5.0+.

Runtime melakukan konversi model shader non DXIL 5.x ke 6.0 DXIL. Jadi driver hanya perlu mendukung 6.x.

Model manajemen sumber daya untuk perangkat Core

  • Dimensi sumber daya yang didukung: buffer mentah dan terstruktur saja (tidak ada buffer yang diketik, texture1d/2D, dll.)
  • Tidak ada dukungan untuk sumber daya yang dicadangkan (ubin)
  • Tidak ada dukungan untuk timbunan kustom
  • Tidak ada dukungan untuk salah satu bendera timbunan ini:
    • D3D12_HEAP_FLAG_HARDWARE_PROTECTED
    • D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
    • D3D12_HEAP_FLAG_ALLOW_DISPLAY
    • D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS (atom shader catatan diperlukan, bendera ini untuk fitur lain, atom adaptor silang)

Model pengikatan sumber daya untuk perangkat Core

  • Dukungan untuk pengikatan sumber daya tingkat 1 saja
  • Pengecualian:
    • Tidak ada dukungan untuk sampel tekstur
    • Dukungan untuk 64 UAV seperti Feature Level 11.1+ (dibandingkan hanya 8)
    • Implementasi tidak harus menerapkan pemeriksaan batas pada akses shader ke sumber daya melalui deskriptor, akses di luar batas menghasilkan perilaku yang tidak ditentukan.
      • Sebagai produk byproduct, bendera rentang deskriptor D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS di tanda tangan akar tidak didukung.
  • Deskriptor UAV/CBV hanya dapat dibuat pada sumber daya dari timbunan default (jadi tidak ada timbunan pengunggahan/baca balik). Ini memaksa aplikasi Anda untuk melakukan salinan untuk mendapatkan data di seluruh CPU-GPU<>.
  • Meskipun merupakan tingkat kemampuan pengikatan terendah, masih ada beberapa fitur yang diperlukan bahkan dalam tingkat ini layak dipanggil:
    • Tumpukan deskriptor dapat diperbarui setelah daftar perintah direkam (lihat D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE dalam spesifikasi pengikatan sumber daya)
    • Deskriptor akar pada dasarnya adalah penunjuk GPUVA
      • Meskipun tidak ada dukungan MMU / VA, buffer VAs yang digunakan dalam deskriptor root dapat ditiru oleh implementasi dengan melakukan patching alamat.

Pembatasan buffer terstruktur

Buffer terstruktur harus memiliki alamat dasar yang selaras 4 byte, dan langkah harus 2 atau kelipatan 4. Kasus untuk langkah 2 adalah untuk aplikasi dengan data 16 bit, terutama mengingat tidak ada dukungan untuk buffer yang diketik di D3D_FEATURE_LEVEL_1_0_CORE.

Stride yang ditentukan dalam deskriptor harus cocok dengan langkah yang ditentukan dalam HLSL.

Dukungan antrean perintah untuk perangkat Core

Hanya komputasi dan salin antrean (tanpa 3D, video, dll. antrean).

Dukungan shader untuk perangkat Core

Hanya shader komputasi, tidak ada shader grafis (Vertex, Pixel Shaders, dll.) atau fungsionalitas terkait seperti target render, rantai pertukaran, perakitan input.

Presisi aritmatika

Perangkat inti tidak perlu mendukung denorm untuk operasi floating point 16 bit.

API yang didukung untuk perangkat Core

Daftar di bawah ini mewakili subset yang didukung dari antarmuka pemrograman aplikasi lengkap (API yang tidak didukung di Tingkat Fitur Core 1.0 tidak tercantum).

Metode ID3D12Device

Metode ID3D12Device1

Metode ID3D12Device2

Metode ID3D12Device3

Metode ID3D12Device4

Metode ID3D12Device5

Metode ID3D12CommandQueue

Metode ID3D12CommandList

Metode ID3D12GraphicsCommandList

Metode ID3D12GraphicsCommandList1

Metode ID3D12GraphicsCommandList2

Metode ID3D12GraphicsCommandList4