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).
- Transmettez D3D12_FEATURE_ARCHITECTURE et D3D12_FEATURE_DATA_ARCHITECTURE.
- Transmettez D3D12_FEATURE_ARCHITECTURE1 et D3D12_FEATURE_DATA_ARCHITECTURE1.
- Transmettez D3D12_FEATURE_COMMAND_QUEUE_PRIORITY et D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY.
- Transmettez D3D12_FEATURE_CROSS_NODE et D3D12_FEATURE_DATA_CROSS_NODE.
- Transmettez D3D12_FEATURE_D3D12_OPTIONS et D3D12_FEATURE_DATA_D3D12_OPTIONS.
- Transmettez D3D12_FEATURE_D3D12_OPTIONS1 et D3D12_FEATURE_DATA_D3D12_OPTIONS1.
- Transmettez D3D12_FEATURE_D3D12_OPTIONS2 et D3D12_FEATURE_DATA_D3D12_OPTIONS2.
- Transmettez D3D12_FEATURE_D3D12_OPTIONS3 et D3D12_FEATURE_DATA_D3D12_OPTIONS3.
- Transmettez D3D12_FEATURE_D3D12_OPTIONS4 et D3D12_FEATURE_DATA_D3D12_OPTIONS4.
- Transmettez D3D12_FEATURE_D3D12_OPTIONS5 et D3D12_FEATURE_DATA_D3D12_OPTIONS5.
- Transmettez D3D12_FEATURE_EXISTING_HEAPS et D3D12_FEATURE_DATA_EXISTING_HEAPS.
- Transmettez D3D12_FEATURE_FEATURE_LEVELS et D3D12_FEATURE_DATA_FEATURE_LEVELS.
- Transmettez D3D12_FEATURE_FORMAT_INFO et D3D12_FEATURE_DATA_FORMAT_INFO.
- Transmettez D3D12_FEATURE_FORMAT_SUPPORT et D3D12_FEATURE_DATA_FORMAT_SUPPORT.
- Transmettez D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT et D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT.
- Transmettez D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS et D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS.
- Transmettez D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT et D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT.
- Transmettez D3D12_FEATURE_ROOT_SIGNATURE et D3D12_FEATURE_DATA_ROOT_SIGNATURE.
- Transmettez D3D12_FEATURE_SERIALIZATION et D3D12_FEATURE_DATA_SERIALIZATION.
- Transmettez D3D12_FEATURE_SHADER_CACHE et D3D12_FEATURE_DATA_SHADER_CACHE.
- Transmettez D3D12_FEATURE_SHADER_MODEL et D3D12_FEATURE_DATA_SHADER_MODEL.
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.
- 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 pour les formats Direct3D 10Level9
- Prise en charge du matériel pour les formats Direct3D 10,1
- Prise en charge matérielle pour les formats Direct3D 10