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
- ID3D12Device::CheckFeatureSupport
- ID3D12Device::CopyDescriptors
- ID3D12Device::CopyDescriptorsSimple
- ID3D12Device::CreateCommandAllocator
- ID3D12Device::CreateCommandList
- ID3D12Device::CreateCommandQueue
- ID3D12Device::CreateCommandSignature
- ID3D12Device::CreateCommittedResource
- ID3D12Device::CreateComputePipelineState
- ID3D12Device::CreateConstantBufferView
- ID3D12Device::CreateDescriptorHeap
- ID3D12Device::CreateFence
- ID3D12Device::CreateHeap
- ID3D12Device::CreatePlacedResource
- ID3D12Device::CreateQueryHeap
- ID3D12Device::CreateRootSignature
- ID3D12Device::CreateShaderResourceView
- ID3D12Device::CreateSharedHandle
- ID3D12Device::CreateUnorderedAccessView
- ID3D12Device::Evict
- ID3D12Device::GetAdapterLuid
- ID3D12Device::GetCopyableFootprints
- ID3D12Device::GetCustomHeapProperties
- ID3D12Device::GetDescriptorHandleIncrementSize
- ID3D12Device::GetDeviceRemovedReason
- ID3D12Device::GetNodeCount
- ID3D12Device::GetResourceAllocationInfo
- ID3D12Device::MakeResident
- ID3D12Device::OpenSharedHandle
- ID3D12Device::OpenSharedHandleByName
- ID3D12Device::SetStablePowerState
Metode ID3D12Device1
- ID3D12Device1::CreatePipelineLibrary
- ID3D12Device1::SetEventOnMultipleFenceCompletion
- ID3D12Device1::SetResidencySetEventOnMultipleFenceCompletionPriority
Metode ID3D12Device2
Metode ID3D12Device3
- ID3D12Device3::OpenExistingHeapFromAddress
- ID3D12Device3::OpenExistingHeapFromFileMapping
- ID3D12Device3::EnqueueMakeResident
Metode ID3D12Device4
Metode ID3D12Device5
- ID3D12Device5::CreateMetaCommand
- ID3D12Device5::CreateStateObject
- ID3D12Device5::EnumerateMetaCommandParameters
- ID3D12Device5::EnumerateMetaCommands
- ID3D12Device5::RemoveDevice
Metode ID3D12CommandQueue
- ID3D12CommandQueue::BeginEvent
- ID3D12CommandQueue::EndEvent
- ID3D12CommandQueue::ExecuteCommandLists
- ID3D12CommandQueue::GetClockCalibration
- ID3D12CommandQueue::GetDesc
- ID3D12CommandQueue::GetTimestampFrequency
- ID3D12CommandQueue::SetMarker
- ID3D12CommandQueue::Signal
- ID3D12CommandQueue::Wait
Metode ID3D12CommandList
Metode ID3D12GraphicsCommandList
- ID3D12GraphicsCommandList::BeginEvent
- ID3D12GraphicsCommandList::BeginQuery
- ID3D12GraphicsCommandList::ClearState
- ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat
- ID3D12GraphicsCommandList::ClearUnorderedAccessViewUint
- ID3D12GraphicsCommandList::Close
- ID3D12GraphicsCommandList::CopyBufferRegion
- ID3D12GraphicsCommandList::CopyResource
- ID3D12GraphicsCommandList::CopyTextureRegion
- ID3D12GraphicsCommandList::D ispatch
- ID3D12GraphicsCommandList::EndEvent
- ID3D12GraphicsCommandList::EndQuery
- ID3D12GraphicsCommandList::Reset
- ID3D12GraphicsCommandList::ResolveQueryData
- ID3D12GraphicsCommandList::ResourceBarrier
- ID3D12GraphicsCommandList::SetComputeRoot32BitConstant
- ID3D12GraphicsCommandList::SetComputeRoot32BitConstants
- ID3D12GraphicsCommandList::SetComputeRootConstantBufferView
- ID3D12GraphicsCommandList::SetComputeRootDescriptorTable
- ID3D12GraphicsCommandList::SetComputeRootShaderResourceView
- ID3D12GraphicsCommandList::SetComputeRootSignature
- ID3D12GraphicsCommandList::SetComputeRootUnorderedAccessView
- ID3D12GraphicsCommandList::SetDescriptorHeaps
- ID3D12GraphicsCommandList::SetMarker
- ID3D12GraphicsCommandList::SetPipelineState
- ID3D12GraphicsCommandList::SetPredication
Metode ID3D12GraphicsCommandList1
Metode ID3D12GraphicsCommandList2
Metode ID3D12GraphicsCommandList4
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk