Niveau de fonctionnalité Direct3D 12 Core 1.0

Le niveau de fonctionnalité principal 1,0 est un sous-ensemble de l’ensemble de fonctionnalités Direct3D 12 complet. Le niveau de fonctionnalité principal 1,0 peut être exposé par une catégorie d’appareils appelés appareils de calcul uniquement. Le modèle de pilote global pour les appareils de calcul uniquement est le modèle de pilote de calcul Microsoft (MCDM). MCDM est un homologue mis à l’échelle de Windows modèle de pilote de périphérique (WDDM), qui a une plus grande portée.

Un appareil qui prend uniquement en charge les fonctionnalités au sein d’un niveau de fonctionnalité principal est appelé appareil principal.

Notes

L’appareil de calcul uniquement, l’appareil MCDM, l' appareil de niveau de fonctionnalité principal et l' appareil de base ont tous la même signification. Nous préférerons l' appareil de base pour des raisons de simplicité.

Création d’un périphérique principal

En général, pour créer un appareil Direct3D 12, vous appelez la fonction D3D12CreateDevice et spécifiez un niveau de fonctionnalité minimal.

Si vous spécifiez un niveau de fonctionnalité de 9 à 12, l’appareil retourné est un appareil riche en fonctionnalités, tel qu’un GPU traditionnel (qui prend en charge un sur-ensemble de la fonctionnalité d’un appareil principal). Un appareil principal n’est jamais retourné pour cette plage de niveaux de fonctionnalité.

En revanche, si vous spécifiez un niveau de fonctionnalité principal (par exemple, D3D_FEATURE_LEVEL ::D 3D_FEATURE_LEVEL_1_0_CORE), l’appareil retourné peut être riche en fonctionnalités, ou il peut s’agir d’un appareil de base.

// d3dcommon.h
D3D_FEATURE_LEVEL_1_0_CORE = 0x1000

Si vous spécifiez un _CORE niveau de fonctionnalité, la couche Runtime/Debug vérifie que les fonctionnalités utilisées par votre application sont autorisées par ce _CORE niveau de fonctionnalité. Cet ensemble de fonctionnalités est défini plus loin dans cette rubrique.

Modèle de nuanceur pour les périphériques centraux

Un périphérique de base prend en charge le modèle de nuanceur 5.0 +.

Le Runtime effectue la conversion des modèles de nuanceur 5. x non DXIL en 6,0 DXIL. Ainsi, le pilote doit uniquement prendre en charge 6. x.

Modèle de gestion des ressources pour les périphériques de base

  • Dimensions de ressources prises en charge : mémoires tampons brutes et structurées uniquement (aucune mémoire tampon typée, texture1d/2D, etc.)
  • Aucune prise en charge des ressources réservées (en mosaïque)
  • Aucune prise en charge des tas personnalisés
  • Aucun de ces indicateurs de tas n’est pris en charge :
    • D3D12_HEAP_FLAG_HARDWARE_PROTECTED
    • D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
    • D3D12_HEAP_FLAG_ALLOW_DISPLAY
    • D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS (Notez que le nuanceur atomiques est obligatoire, cet indicateur est destiné à une autre fonctionnalité, à des atomices d’adaptateurs croisés)

Modèle de liaison de ressources pour les périphériques centraux

  • Prise en charge du niveau de liaison de ressources 1 uniquement
  • Exceptions :
    • Pas de prise en charge des échantillonneurs de texture
    • Prise en charge de 64 UAVs comme niveau de fonctionnalité 11.1 + (contrairement à 8 uniquement)
    • Les implémentations n’ont pas besoin d’implémenter la vérification des limites sur les accès du nuanceur aux ressources par le biais de descripteurs, les accès hors limites produisent un comportement indéfini.
      • En tant que sous-ensemble, l’indicateur de plage de descripteurs D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS dans les signatures racines n’est pas pris en charge.
  • Les descripteurs UAV/CBV ne peuvent être créés que sur des ressources à partir de tas par défaut (aucun tas upload/readback). Cela oblige votre application à effectuer des copies pour récupérer des données sur le processeur< >GPU.
  • Bien qu’il s’agit du niveau de capacité de liaison le plus bas, il existe toujours des fonctionnalités requises, même dans ce niveau qui mérite d’être appelé :
    • Les tas de descripteurs peuvent être mis à jour après l’enregistrement des listes de commandes (voir D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE dans les spécifications de liaison de ressources)
    • Les descripteurs racine sont fondamentalement des pointeurs GPUVA
      • Même s’il n’y a pas de prise en charge de MMU/VA, le SAV de mémoire tampon utilisé dans les descripteurs racine peut être émulé par les implémentations en procédant à une mise à jour corrective des adresses.

Restrictions de mémoire tampon structurées

Les mémoires tampons structurées doivent avoir une adresse de base qui est alignée sur 4 octets et STRIDE doit être 2 ou un multiple de 4. Le cas d’une Stride de 2 est destiné aux applications avec des données 16 bits, en particulier en raison de l’absence de prise en charge des mémoires tampons typées dans D3D_FEATURE_LEVEL_1_0_CORE.

La Stride spécifiée dans les descripteurs doit correspondre au Stride spécifié en HLSL.

Prise en charge des files d’attente de commandes pour les périphériques principaux

Calculez et copiez les files d’attente uniquement (aucune file d’attente 3D, vidéo, etc.).

Prise en charge des nuanceurs pour les périphériques centraux

Les nuanceurs de calcul uniquement, aucun nuanceur de graphiques (vertex, nuanceurs de pixels, etc.) ou toutes les fonctionnalités associées, telles que les cibles de rendu, les chaînes de permutation, l’assembleur d’entrée.

Précision arithmétique

Les périphériques centraux n’ont pas besoin de prendre en charge les dénormes pour les opérations à virgule flottante 16 bits.

API prises en charge pour les périphériques centraux

La liste ci-dessous représente le sous-ensemble pris en charge de l’interface de programmation d’applications complète (les API qui ne sont pas prises en charge dans le niveau de fonctionnalité Core 1,0 ne sont pas répertoriées).

Méthodes ID3D12Device

Méthodes ID3D12Device1

Méthodes ID3D12Device2

Méthodes ID3D12Device3

Méthodes ID3D12Device4

Méthodes ID3D12Device5

Méthodes ID3D12CommandQueue

Méthodes ID3D12CommandList

Méthodes ID3D12GraphicsCommandList

Méthodes ID3D12GraphicsCommandList1

Méthodes ID3D12GraphicsCommandList2

Méthodes ID3D12GraphicsCommandList4