Esecuzione di query sulle funzionalità
L'applicazione può individuare il livello di supporto per l'associazione di risorse (nonché il livello di supporto per molte altre funzionalità), con una chiamata a ID3D12Device::CheckFeatureSupport.
Come eseguire una query per il livello di associazione di risorse
Questo primo esempio è incentrato sull'associazione di risorse. Ogni livello di associazione di risorse è un superset di livelli inferiori nella funzionalità, quindi il codice che funziona su un determinato livello funziona invariato in qualsiasi livello superiore.
I livelli di associazione delle risorse sono costanti nell'enumerazione D3D12_RESOURCE_BINDING_TIER.
Per eseguire una query per il livello di associazione di risorse, usare codice come questo. Questo esempio di codice illustra il modello generale per l'esecuzione di query per uno dei vari tipi di supporto delle funzionalità.
D3D12_RESOURCE_BINDING_TIER get_resource_binding_tier(::ID3D12Device* pIDevice)
{
D3D12_FEATURE_DATA_D3D12_OPTIONS featureSupport{};
winrt::check_hresult(
pIDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &featureSupport, sizeof(featureSupport))
);
switch (featureSupport.ResourceBindingTier)
{
case D3D12_RESOURCE_BINDING_TIER_1:
// Tier 1 is supported.
break;
case D3D12_RESOURCE_BINDING_TIER_2:
// Tiers 1 and 2 are supported.
break;
case D3D12_RESOURCE_BINDING_TIER_3:
// Tiers 1, 2, and 3 are supported.
break;
}
return featureSupport.ResourceBindingTier;
}
Si noti che qualsiasi costante enumerata che si passa (D3D12_FEATURE_D3D12_OPTIONS, in questo caso) ha una struttura dati corrispondente che riceve informazioni su quella funzionalità o set di funzionalità (D3D12_FEATURE_DATA_D3D12_OPTIONS, in questo caso). Passare sempre un puntatore alla struttura che corrisponde alla costante enumerata passata.
Come eseguire query per qualsiasi livello di funzionalità
Oltre al livello di associazione di risorse, sono disponibili molte altre funzionalità il cui livello di supporto può essere richiesto usando lo stesso modello illustrato nell'esempio di codice precedente. È sufficiente passare una costante diversa dall'enumerazione D3D12_FEATURE a ID3D12Device::CheckFeatureSupport (per indicare all'API quale funzionalità richiedere informazioni di supporto) e si passa un puntatore a un'istanza della struttura corrispondente (in cui ricevere le informazioni richieste).
- Passare D3D12_FEATURE_ARCHITECTURE e D3D12_FEATURE_DATA_ARCHITECTURE.
- Passare D3D12_FEATURE_ARCHITECTURE1 e D3D12_FEATURE_DATA_ARCHITECTURE1.
- Passare D3D12_FEATURE_COMMAND_QUEUE_PRIORITY e D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY.
- Passare D3D12_FEATURE_CROSS_NODE e D3D12_FEATURE_DATA_CROSS_NODE.
- Passare D3D12_FEATURE_D3D12_OPTIONS e D3D12_FEATURE_DATA_D3D12_OPTIONS.
- Passare D3D12_FEATURE_D3D12_OPTIONS1 e D3D12_FEATURE_DATA_D3D12_OPTIONS1.
- Passare D3D12_FEATURE_D3D12_OPTIONS2 e D3D12_FEATURE_DATA_D3D12_OPTIONS2.
- Passare D3D12_FEATURE_D3D12_OPTIONS3 e D3D12_FEATURE_DATA_D3D12_OPTIONS3.
- Passare D3D12_FEATURE_D3D12_OPTIONS4 e D3D12_FEATURE_DATA_D3D12_OPTIONS4.
- Passare D3D12_FEATURE_D3D12_OPTIONS5 e D3D12_FEATURE_DATA_D3D12_OPTIONS5.
- Passare D3D12_FEATURE_EXISTING_HEAPS e D3D12_FEATURE_DATA_EXISTING_HEAPS.
- Passare D3D12_FEATURE_FEATURE_LEVELS e D3D12_FEATURE_DATA_FEATURE_LEVELS.
- Passare D3D12_FEATURE_FORMAT_INFO e D3D12_FEATURE_DATA_FORMAT_INFO.
- Utilizzare D3D12_FEATURE_FORMAT_SUPPORT e D3D12_FEATURE_DATA_FORMAT_SUPPORT.
- Passare D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT e D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT.
- Passare D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS e D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS.
- Passare D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT e D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT.
- Inserisci D3D12_FEATURE_ROOT_SIGNATURE e D3D12_FEATURE_DATA_ROOT_SIGNATURE.
- Passare D3D12_FEATURE_SERIALIZATION e D3D12_FEATURE_DATA_SERIALIZATION.
- Passare D3D12_FEATURE_SHADER_CACHE e D3D12_FEATURE_DATA_SHADER_CACHE.
- Passare D3D12_FEATURE_SHADER_MODEL e D3D12_FEATURE_DATA_SHADER_MODEL.
Supporto hardware per i formati DXGI
Per visualizzare le tabelle dei formati DXGI e delle funzionalità hardware, fare riferimento a questi argomenti.
- Supporto del formato DXGI per hardware Direct3D livello funzionale 12.1
- Supporto del formato DXGI per hardware di livello di funzionalità Direct3D 12.0
- Supporto per il formato DXGI per l'Hardware Direct3D livello di funzionalità 11.1
- supporto del formato DXGI per hardware direct3D livello di funzionalità 11.0
- supporto hardware per formati Direct3D 10Level9
- supporto hardware per formati Direct3D 10.1
- supporto hardware per formati Direct3D 10