Consulta de funcionalidade

Seu aplicativo pode descobrir o nível de suporte para associação de recursos (bem como o nível de suporte para muitos outros recursos), com uma chamada para ID3D12Device::CheckFeatureSupport.

Como consultar a camada de associação de recursos

Este primeiro exemplo se concentra na associação de recursos. Cada camada de associação de recursos é um superconjunto de camadas inferiores na funcionalidade, portanto, o código que funciona em uma determinada camada funciona inalterado em qualquer camada mais alta.

As camadas de associação de recursos são constantes na enumeração D3D12_RESOURCE_BINDING_TIER .

Para consultar a camada de associação de recursos, use um código como este. Este exemplo de código demonstra o padrão geral para consultar qualquer um dos vários tipos de suporte a recursos.

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;
}

Observe que qualquer constante enumerada que você passa (D3D12_FEATURE_D3D12_OPTIONS, nesse caso) tem uma estrutura de dados correspondente que recebe informações sobre esse recurso ou conjunto de recursos (D3D12_FEATURE_DATA_D3D12_OPTIONS, nesse caso). Sempre passe um ponteiro para a estrutura que corresponde à constante enumerada que você passa.

Como consultar qualquer nível de recurso

Além da camada de associação de recursos, há muitos outros recursos cujo nível de suporte você pode consultar para usar o mesmo padrão mostrado no exemplo de código acima. Basta passar uma constante diferente da enumeração D3D12_FEATURE para ID3D12Device::CheckFeatureSupport (para informar à API em qual recurso solicitar informações de suporte) e passar um ponteiro para uma instância da estrutura correspondente (na qual receber as informações solicitadas).

Suporte de hardware para formatos DXGI

Para exibir tabelas de formatos DXGI e recursos de hardware, consulte estes tópicos.