Esecuzione di query sulle funzionalità

L'applicazione può individuare il livello di supporto per l'associazione di risorse (oltre al 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 nelle 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. In questo esempio di codice viene illustrato 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 passata (D3D12_FEATURE_D3D12_OPTIONS, in questo caso) ha una struttura di dati corrispondente che riceve informazioni su tale funzionalità o set di funzionalità (D3D12_FEATURE_DATA_D3D12_OPTIONS, in questo caso). Passare sempre un puntatore alla struttura corrispondente alla costante enumerata passata.

Come eseguire una query per qualsiasi livello di funzionalità

Oltre al livello di associazione di risorse, sono disponibili molte altre funzionalità il cui livello di supporto consente di eseguire query 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 la funzionalità per richiedere informazioni di supporto) e si passa un puntatore a un'istanza della struttura corrispondente (in cui ricevere le informazioni richieste).

Supporto hardware per i formati DXGI

Per visualizzare le tabelle dei formati DXGI e delle funzionalità hardware, fare riferimento a questi argomenti.