Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Beschrijft ondersteuning in Direct3D 12 voor systemen waarop meerdere adapters zijn geïnstalleerd, waarin scenario's worden beschreven waarin uw toepassing expliciet is gericht op meerdere GPU-adapters en scenario's waarbij stuurprogramma's impliciet meerdere GPU-adapters gebruiken namens uw toepassing.
Overzicht van meerdere adapters
Een GPU-adapter kan elke adapter zijn (graphics of compute, discreet of geïntegreerd), van elke fabrikant die Direct3D 12 ondersteunt.
Naar meerdere adapters wordt verwezen als knooppunten. Een aantal elementen, zoals de wachtrijen, zijn van toepassing op elk knooppunt, dus als er twee knooppunten zijn, zijn er twee standaard 3D-wachtrijen. Andere elementen, zoals de pijplijnstatus en basis- en opdrachthandtekeningen, kunnen verwijzen naar een of meer of alle knooppunten, zoals wordt weergegeven in het diagram.
Heaps delen tussen adapters
Zie het onderwerp Gedeelde heaps.
API's voor meerdere adapters en knooppuntmaskers
Net als bij eerdere Direct3D-API's wordt elke set gekoppelde adapters opgesomd als één IDXGIAdapter3-object. Alle uitvoer die is gekoppeld aan een adapter in de koppeling, wordt geïnventariseerd als gekoppeld aan het object met één IDXGIAdapter3.
Uw toepassing kan het aantal fysieke adapters bepalen dat is gekoppeld aan een bepaald apparaat door ID3D12Device::GetNodeCountaan te roepen.
Veel API's in Direct3D 12 accepteren een knooppuntmasker (een bitmasker), wat de set knooppunten aangeeft waarnaar de API-aanroep verwijst. Elk knooppunt heeft een op nul gebaseerde index. Maar in het knooppuntmasker wordt nul omgezet in bit 1; 1 vertaalt zich naar bit 2; enzovoort.
Eén knooppunt
Wanneer u de volgende API's (één knooppunt) aanroept, geeft uw toepassing één knooppunt op waarmee de API-aanroep wordt gekoppeld. Meestal wordt dit opgegeven door een knooppuntmasker. Elke bit in het masker komt overeen met één knooppunt. Voor alle API's die in deze sectie worden beschreven, moet u precies één bit instellen in het knooppuntmasker.
- D3D12_COMMAND_QUEUE_DESC: heeft een NodeMask- lid.
- CreateCommandQueue: maakt een wachtrij op basis van een D3D12_COMMAND_QUEUE_DESC structuur.
- CreateCommandList: gebruikt een nodeMask- parameter.
- D3D12_DESCRIPTOR_HEAP_DESC: heeft een NodeMask- lid.
- CreateDescriptorHeap-: maakt een heap van een descriptor op basis van een D3D12_DESCRIPTOR_HEAP_DESC structuur.
- D3D12_QUERY_HEAP_DESC: heeft een NodeMask lid.
- CreateQueryHeap-: maakt een query heap op basis van een D3D12_QUERY_HEAP_DESC-structuur.
Meerdere knooppunten
Wanneer u de volgende (meerdere knooppunt)API's aanroept, geeft uw toepassing een set knooppunten op waarmee de API-aanroep wordt gekoppeld. U geeft knooppuntaffiniteit op als een knooppuntmasker, mogelijk met meerdere bitsset. Als uw toepassing 0 doorgeeft voor dit bitmasker, converteert het Direct3D 12-stuurprogramma dat naar het bitmasker 1 (waarmee wordt aangegeven dat het object is gekoppeld aan knooppunt 0).
- D3D12_CROSS_NODE_SHARING_TIER: bepaalt de ondersteuning voor delen tussen knooppunten.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : structuur die verwijst naar D3D12_CROSS_NODE_SHARING_TIER.
- D3D12_FEATURE_DATA_ARCHITECTURE: bevat een NodeIndex lid.
- D3D12_GRAPHICS_PIPELINE_STATE_DESC: heeft een NodeMask lid.
- CreateGraphicsPipelineState: maakt een object voor de pijplijnstatus van een grafische pijplijn op basis van een D3D12_GRAPHICS_PIPELINE_STATE_DESC structuur.
- D3D12_COMPUTE_PIPELINE_STATE_DESC: heeft een NodeMask lid.
- CreateComputePipelineState: hiermee maakt u een pijplijnstatusobject van een D3D12_COMPUTE_PIPELINE_STATE_DESC structuur.
- CreateRootSignature-: gebruikt een nodeMask- parameter.
- D3D12_COMMAND_SIGNATURE_DESC: heeft een NodeMask lid.
- CreateCommandSignature: hiermee maakt u een opdrachthandtekeningobject op basis van een D3D12_COMMAND_SIGNATURE_DESC structuur.
API's voor het maken van resources
De volgende API's verwijzen naar knooppuntmaskers.
- D3D12_HEAP_PROPERTIES: heeft zowel CreationNodeMask als VisibleNodeMask leden.
- GetResourceAllocationInfo: heeft een parameter visibleMask.
- GetCustomHeapProperties-: heeft een nodeMask-parameter.
Bij het maken van een gereserveerde resource wordt er geen knooppuntindex of -masker opgegeven. De gereserveerde resource kan worden toegewezen aan een heap op elk knooppunt (volgens de regels voor delen tussen knooppunten).
De methode MakeResident intern werkt met adapterwachtrijen, hoeft uw toepassing hiervoor niets op te geven.
Wanneer u de volgende ID3D12Device API's aanroept, hoeft uw toepassing geen set knooppunten op te geven waaraan de API-aanroep wordt gekoppeld omdat de API-aanroep van toepassing is op alle knooppunten.
- CreateFence-
- GetDescriptorHandleIncrementSize
- SetStablePowerState
- CheckFeatureSupport-
- CreateSampler-
- CopyDescriptors
- CopyDescriptorsSimple-
- CreateSharedHandle-
- OpenSharedHandleByName-
- OpenSharedHandle-: met een omheining als parameter. Met een resource of een heap- als parameters accepteert deze methode geen knooppunten als parameters omdat knooppuntmaskers worden overgenomen van eerder gemaakte objecten.
- CreateCommandAllocator-
- CreateConstantBufferView
- CreateRenderTargetView-
- CreateUnorderedAccessView-
- CreateDepthStencilView-
- CreateShaderResourceView-