Direct3D 12 Core 1.0 功能層級
Core 1.0 功能層級是完整 Direct3D 12 功能集的子集。 核心 1.0 功能層級可由稱為 僅限計算裝置的裝置類別公開。 僅限計算裝置的整體驅動程式模型是Microsoft計算驅動程式模型 (MCDM)。 MCDM 是 Windows 設備驅動器模型 (WDDM) 的相應減少對等,其範圍較大。
僅支援核心功能層級內功能的裝置稱為核心裝置。
注意
僅限計算裝置、MCDM 裝置、核心功能等級裝置和核心裝置全都表示相同。 為了簡單起見,我們偏好 使用核心裝置 。
建立核心裝置
一般而言,若要建立 Direct3D 12 裝置,您可以呼叫 D3D12CreateDevice 函式,並指定最小功能層級。
如果您指定功能層級 9 到 12,則傳回的裝置是功能豐富的裝置,例如傳統 GPU(其支援核心裝置功能的超集)。 核心裝置永遠不會針對該功能層級範圍傳回。
另一方面,如果您指定核心功能層級(例如 ,D3D_FEATURE_LEVEL::D 3D_FEATURE_LEVEL_1_0_CORE),則傳回的裝置可能會功能豐富,或可能是核心裝置。
// d3dcommon.h
D3D_FEATURE_LEVEL_1_0_CORE = 0x1000
如果您指定 _CORE
功能層級,則運行時間/偵錯層會驗證應用程式使用的功能是否由該功能 _CORE
層級允許。 本主題稍後會定義一組功能。
核心裝置的著色器模型
核心裝置支援著色器模型 5.0+。
運行時間會將 5.x 非 DXIL 著色器模型轉換成 6.0 DXIL。 因此驅動程式只需要支援 6.x。
核心裝置的資源管理模型
- 支援的資源維度:僅限原始和結構化緩衝區(無具類型緩衝區、texture1d/2D 等)
- 不支援保留的資源(並排顯示) 資源
- 不支援自定義堆積
- 不支援下列任何堆積旗標:
- D3D12_HEAP_FLAG_HARDWARE_PROTECTED
- D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
- D3D12_HEAP_FLAG_ALLOW_DISPLAY
- D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS(請注意著色器不可部分完成,此旗標適用於另一個功能,交叉配接器不可部分完成)
核心裝置的資源系結模型
- 僅支援資源系結第1層
- 異常:
- 不支援紋理取樣器
- 支援 64 個UAV,例如功能層級 11.1+ (而不是只有 8 個)
- 實作不需要透過描述項實作著色器存取資源的界限檢查,界限外存取會產生未定義的行為。
- 作為副產品,不支援根簽章中的描述元範圍旗標D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS。
- UAV/CBV 描述元只能在預設堆積的資源上建立(因此不會上傳/讀取回寫堆積)。 這會強制您的應用程式執行複本,以跨 CPU-GPU<> 取得數據。
- 儘管是最低的系結功能層級,但仍需要一些功能,即使在此層中仍值得呼叫:
- 記錄命令清單之後,即可更新描述元堆積(請參閱資源系結規格中的D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE)
- 根描述元基本上是 GPUVA 指標
- 即使沒有MMU/VA支援,但根描述元中使用的緩衝區VA可以藉由執行位址修補來仿真實作。
結構化緩衝區限制
結構化緩衝區必須有 4 個字節對齊的基位址,而步幅必須是 2 或 4 的倍數。 步幅為 2 的案例適用於具有 16 位數據的應用程式,特別是假設在 D3D_FEATURE_LEVEL_1_0_CORE 中不支援具類型的緩衝區。
描述元中指定的 Stride 必須符合 HLSL 中指定的步幅。
核心裝置的命令佇列支援
僅計算和複製佇列(無 3D、視訊等佇列)。
核心裝置的著色器支援
僅限計算著色器、沒有圖形著色器(頂點、圖元著色器等)也沒有任何相關功能,例如轉譯目標、交換鏈結、輸入組合器。
算術精確度
核心裝置不需要支援16位浮點運算的反數。
核心裝置支援的 API
下列清單代表完整應用程式開發介面的支援子集(未列出Core 1.0功能層級中不支援的API)。
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
ID3D12Device1 方法
- ID3D12Device1::CreatePipelineLibrary
- ID3D12Device1::SetEventOnMultipleFenceCompletion
- ID3D12Device1::SetResidencySetEventOnMultipleFenceCompletionPriority
ID3D12Device2 方法
ID3D12Device3 方法
- ID3D12Device3::OpenExistingHeapFromAddress
- ID3D12Device3::OpenExistingHeapFromFileMapping
- ID3D12Device3::EnqueueMakeResident
ID3D12Device4 方法
ID3D12Device5 方法
- ID3D12Device5::CreateMetaCommand
- ID3D12Device5::CreateStateObject
- ID3D12Device5::EnumerateMetaCommandParameters
- ID3D12Device5::EnumerateMetaCommands
- ID3D12Device5::RemoveDevice
ID3D12CommandQueue 方法
- ID3D12CommandQueue::BeginEvent
- ID3D12CommandQueue::EndEvent
- ID3D12CommandQueue::ExecuteCommandLists
- ID3D12CommandQueue::GetClockCalibration
- ID3D12CommandQueue::GetDesc
- ID3D12CommandQueue::GetTimestampFrequency
- ID3D12CommandQueue::SetMarker
- ID3D12CommandQueue::Signal
- ID3D12CommandQueue::Wait
ID3D12CommandList 方法
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