Interrogation des fonctionnalités

Votre application peut découvrir le niveau de prise en charge de la liaison de ressources (ainsi que le niveau de prise en charge pour de nombreuses autres fonctionnalités), avec un appel à ID3D12Device :: CheckFeatureSupport.

Comment interroger le niveau de liaison de ressources

Ce premier exemple se concentre sur la liaison de ressources. Chaque niveau de liaison de ressource est un sur-ensemble de niveaux inférieurs dans les fonctionnalités, de sorte que le code qui fonctionne sur un niveau donné fonctionne sans modification sur un niveau supérieur.

Les couches de liaison de ressources sont des constantes dans l’énumération D3D12_RESOURCE_BINDING_TIER .

Pour interroger le niveau de liaison de ressources, utilisez un code tel que celui-ci. Cet exemple de code illustre le modèle général pour l’interrogation de l’un des différents types de prise en charge des fonctionnalités.

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

Notez que toute constante énumérée que vous transmettez (D3D12_FEATURE_D3D12_OPTIONS, dans ce cas) possède une structure de données correspondante qui reçoit des informations sur cette fonctionnalité ou un ensemble de fonctionnalités (D3D12_FEATURE_DATA_D3D12_OPTIONS, dans le cas présent). Transmettez toujours un pointeur vers la structure qui correspond à la constante énumérée que vous transmettez.

Comment interroger un niveau de fonctionnalité

Outre le niveau de liaison de ressources, il existe de nombreuses autres fonctionnalités dont le niveau de prise en charge vous permet d’interroger en utilisant le même modèle que celui indiqué dans l’exemple de code ci-dessus. Vous transmettez simplement une constante différente de l’énumération D3D12_FEATURE à ID3D12Device :: CheckFeatureSupport (pour indiquer à l’API la fonctionnalité qui doit demander des informations de support) et vous transmettez un pointeur vers une instance de la structure correspondante (dans laquelle recevoir les informations demandées).

Prise en charge du matériel pour les formats DXGI

Pour afficher les tableaux des formats de DXGI et des fonctionnalités matérielles, reportez-vous à ces rubriques.