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 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 ressources est un sur-ensemble de niveaux inférieurs de fonctionnalités, de sorte que le code qui fonctionne sur un niveau donné fonctionne comme inchangé sur n’importe quel niveau supérieur.
Les niveaux 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 d’interrogation pour 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 passez (D3D12_FEATURE_D3D12_OPTIONS, dans ce cas) a une structure de données correspondante qui reçoit des informations sur cette fonctionnalité ou cet ensemble de fonctionnalités (D3D12_FEATURE_DATA_D3D12_OPTIONS, dans ce cas). Passez toujours un pointeur vers la structure qui correspond à la constante énumérée que vous passez.
Comment interroger n’importe quel niveau de fonctionnalité
En plus du niveau de liaison de ressources, il existe de nombreuses autres fonctionnalités dont vous pouvez interroger le niveau de prise en charge en utilisant le même modèle que celui indiqué dans l’exemple de code ci-dessus. Vous passez simplement une constante différente de l’énumération D3D12_FEATURE à ID3D12Device::CheckFeatureSupport (pour indiquer à l’API la fonctionnalité sur laquelle demander des informations de support), et vous passez un pointeur vers un instance de la structure correspondante (dans laquelle recevoir les informations demandées).
- Passez D3D12_FEATURE_ARCHITECTURE et D3D12_FEATURE_DATA_ARCHITECTURE.
- Passez D3D12_FEATURE_ARCHITECTURE1 et D3D12_FEATURE_DATA_ARCHITECTURE1.
- Passez D3D12_FEATURE_COMMAND_QUEUE_PRIORITY et D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY.
- Passez D3D12_FEATURE_CROSS_NODE et D3D12_FEATURE_DATA_CROSS_NODE.
- Passez D3D12_FEATURE_D3D12_OPTIONS et D3D12_FEATURE_DATA_D3D12_OPTIONS.
- Passez D3D12_FEATURE_D3D12_OPTIONS1 et D3D12_FEATURE_DATA_D3D12_OPTIONS1.
- Passez D3D12_FEATURE_D3D12_OPTIONS2 et D3D12_FEATURE_DATA_D3D12_OPTIONS2.
- Passez D3D12_FEATURE_D3D12_OPTIONS3 et D3D12_FEATURE_DATA_D3D12_OPTIONS3.
- Passez D3D12_FEATURE_D3D12_OPTIONS4 et D3D12_FEATURE_DATA_D3D12_OPTIONS4.
- Passez D3D12_FEATURE_D3D12_OPTIONS5 et D3D12_FEATURE_DATA_D3D12_OPTIONS5.
- Passez D3D12_FEATURE_EXISTING_HEAPS et D3D12_FEATURE_DATA_EXISTING_HEAPS.
- Passez D3D12_FEATURE_FEATURE_LEVELS et D3D12_FEATURE_DATA_FEATURE_LEVELS.
- Passez D3D12_FEATURE_FORMAT_INFO et D3D12_FEATURE_DATA_FORMAT_INFO.
- Passez D3D12_FEATURE_FORMAT_SUPPORT et D3D12_FEATURE_DATA_FORMAT_SUPPORT.
- Passez D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT et D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT.
- Passez D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS et D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS.
- Passez D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT et D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT.
- Passez D3D12_FEATURE_ROOT_SIGNATURE et D3D12_FEATURE_DATA_ROOT_SIGNATURE.
- Passez D3D12_FEATURE_SERIALIZATION et D3D12_FEATURE_DATA_SERIALIZATION.
- Passez D3D12_FEATURE_SHADER_CACHE et D3D12_FEATURE_DATA_SHADER_CACHE.
- Passez D3D12_FEATURE_SHADER_MODEL et D3D12_FEATURE_DATA_SHADER_MODEL.
Prise en charge matérielle des formats DXGI
Pour afficher les tables des formats DXGI et des fonctionnalités matérielles, reportez-vous à ces rubriques.
- Prise en charge du format DXGI pour le matériel de niveau de fonctionnalité Direct3D 12.1
- Prise en charge du format DXGI pour le matériel de niveau de fonctionnalité Direct3D 12.0
- Prise en charge du format DXGI pour le matériel de niveau de fonctionnalité Direct3D 11.1
- Prise en charge du format DXGI pour le matériel de niveau de fonctionnalité Direct3D 11.0
- Prise en charge matérielle des formats Direct3D 10Level9
- Prise en charge matérielle des formats Direct3D 10.1
- Prise en charge matérielle des formats Direct3D 10