énumération D3D12_HEAP_FLAGS (d3d12.h)

Spécifie les options de tas, telles que si le tas peut contenir des textures et si les ressources sont partagées entre les adaptateurs.

Syntaxe

typedef enum D3D12_HEAP_FLAGS {
  D3D12_HEAP_FLAG_NONE = 0,
  D3D12_HEAP_FLAG_SHARED = 0x1,
  D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
  D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
  D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
  D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
  D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
  D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
  D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
  D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
  D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
  D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
  D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING,
  D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
  D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
  D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
  D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
} ;

Constantes

 
D3D12_HEAP_FLAG_NONE
Valeur : 0
Aucune option n’est spécifiée.
D3D12_HEAP_FLAG_SHARED
Valeur : 0x1
Le tas est partagé. Reportez-vous à segments partagés.
D3D12_HEAP_FLAG_DENY_BUFFERS
Valeur : 0x4
Le tas n’est pas autorisé à contenir des mémoires tampons.
D3D12_HEAP_FLAG_ALLOW_DISPLAY
Valeur : 0x8
Le tas est autorisé à contenir des surfaces de chaîne d’échange.
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER
Valeur : 0x20
Le tas est autorisé à partager des ressources entre les adaptateurs. Reportez-vous à segments partagés. Une session protégée ne peut pas être mélangée à des ressources partagées entre les adaptateurs.
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
Valeur : 0x40
Le tas n’est pas autorisé à stocker les textures render Target (RT) et/ou Depth-Stencil (DS).
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
Valeur : 0x80
Le tas n’est pas autorisé à contenir des ressources avec D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D ou D3D12_RESOURCE_DIMENSION_TEXTURE3D, sauf si D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET ou D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL sont présents. Reportez-vous à D3D12_RESOURCE_DIMENSION et D3D12_RESOURCE_FLAGS.
D3D12_HEAP_FLAG_HARDWARE_PROTECTED
Valeur : 0x100
Unsupported. N’utilisez pas.
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
Valeur : 0x200
Le tas prend en charge MEM_WRITE_WATCH fonctionnalité, ce qui permet au système de suivre les pages écrites dans la région de mémoire validée. Cet indicateur ne peut pas être combiné avec les indicateurs D3D12_HEAP_TYPE_DEFAULT ou D3D12_CPU_PAGE_PROPERTY_UNKNOWN. Les applications sont déconseillées d’utiliser cet indicateur eux-mêmes, car elles empêchent les outils d’utiliser cette fonctionnalité.
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS
Valeur : 0x400
Garantit que les opérations atomiques seront atomiques sur la mémoire de ce tas, en fonction des composants capables de voir la mémoire.

La création d’un tas avec cet indicateur échoue dans l’une de ces conditions.
- Le type de tas est D3D12_HEAP_TYPE_DEFAULTet le tas peut être visible sur plusieurs nœuds, mais l’appareil n'pas prise en charge D3D12_CROSS_NODE_SHARING_TIER_3.
- Le tas est visible par l’UC, mais le type de tas n’est pasD3D12_HEAP_TYPE_CUSTOM.

Notez que les tas avec cet indicateur peuvent être une ressource limitée sur certains systèmes.
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT
Valeur : 0x800
Le tas est créé dans un état non résident et doit être fait résident à l’aide de ID3D12Device ::MakeResident ou ID3D12Device3 ::EnqueueMakeResident.

Par défaut, l’étape finale de la création du tas consiste à rendre le tas résident. Par conséquent, cet indicateur ignore cette étape et permet à l’application de décider quand le faire.
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED
Valeur : 0x1000
Permet au système d’exploitation de ne pas zéro le tas créé. Par défaut, les ressources validées et les tas sont presque toujours zéro lors de la création. Cet indicateur permet d’être supprimé dans certains scénarios. Toutefois, elle ne le garantit pas. Par exemple, la mémoire provenant d’autres processus doit toujours être zéro pour la protection des données et l’isolation des processus. Cela peut réduire la surcharge de création du tas.
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES
Valeur : 0
Le tas est autorisé à stocker tous les types de mémoires tampons et/ou de textures. Il s’agit d’un alias ; Pour plus d’informations, consultez « Alias » dans la section Remarques.
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS
Valeur : 0xc0
Le tas est uniquement autorisé à stocker des mémoires tampons. Il s’agit d’un alias ; Pour plus d’informations, consultez « Alias » dans la section Remarques.
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES
Valeur : 0x44
Le tas est uniquement autorisé à stocker des textures non RT, non DS. Il s’agit d’un alias ; Pour plus d’informations, consultez « Alias » dans la section Remarques.
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES
Valeur : 0x84
Le tas est uniquement autorisé à stocker les textures RT et/ou DS. Il s’agit d’un alias ; Pour plus d’informations, consultez « Alias » dans la section Remarques.

Remarques

Cette énumération est utilisée par les éléments d’API suivants :

Les indicateurs de tas suivants doivent être utilisés avec ID3D12Device ::CreateHeap, mais seront définis automatiquement pour les tas implicites créés par ID3D12Device ::CreateCommittedResource. Les adaptateurs qui prennent uniquement en charge segment de mémoire de niveau 1 doivent définir deux des trois indicateurs suivants.
Valeur Description
D3D12_HEAP_FLAG_DENY_BUFFERS Le tas n’est pas autorisé à contenir des ressources avec D3D12_RESOURCE_DIMENSION_BUFFER (qui est une constante d’énumération D3D12_RESOURCE_DIMENSION).
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES Le tas n’est pas autorisé à contenir des ressources avec D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D ou D3D12_RESOURCE_DIMENSION_TEXTURE3D avec D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET ou D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL. (Les deux derniers éléments sont D3D12_RESOURCE_FLAGS constantes d’énumération.)
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES Le tas n’est pas autorisé à contenir des ressources avec D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D ou D3D12_RESOURCE_DIMENSION_TEXTURE3D, sauf si D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET et D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL sont absents.

alias

Les adaptateurs qui prennent en charge segment de mémoire de niveau 2 ou supérieur sont également autorisés à définir aucun des indicateurs ci-dessus. Les alias de ces indicateurs sont disponibles pour les applications qui préfèrent penser uniquement aux ressources prises en charge.

Les alias suivants existent. Veillez donc à effectuer des manipulations de bits :

  • D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0 et n’est pris en charge que sur segment de mémoire de niveau 2 et supérieur.
  • D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES | D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
  • D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = D3D12_HEAP_FLAG_DENY_BUFFERS | D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
  • D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = D3D12_HEAP_FLAG_DENY_BUFFERS | D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES

segments de mémoire affichables

Les tas affichables sont les plus couramment créés par la chaîne d’échange pour la présentation, afin d’activer l’analyse sur un moniteur.

Les tas affichables sont spécifiés avec le membre D3D12_HEAP_FLAG_ALLOW_DISPLAY de l’énumération D3D12_HEAP_FLAGS.

Les applications peuvent créer des tas affichables en dehors d’une chaîne d’échange ; mais ne peut pas réellement les présenter. Cet indicateur n’est pas pris en charge par CreateHeap et ne peut être utilisé qu’avec CreateCommittedResource avec D3D12_HEAP_TYPE_DEFAULT.

Des restrictions supplémentaires à l'D3D12_RESOURCE_DESC s’appliquent à la ressource créée avec des tas affichables.

  • Le format doit non seulement être pris en charge par l’appareil, mais doit être pris en charge pour l’analyse. Reportez-vous à l’utilisation du membre D3D12_FORMAT_SUPPORT1_DISPLAY de D3D12_FORMAT_SUPPORT1.
  • dimension doit être D3D12_RESOURCE_DIMENSION_TEXTURE2D.
  • d’alignement doit être 0.
  • ArraySize peut être 1 ou 2.
  • MipLevels doit être 1.
  • SampleDesc doit avoir Count défini sur 1 et Qualité défini sur 0.
  • disposition doit être D3D12_TEXTURE_LAYOUT_UNKNOWN.
  • D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL et D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER sont des indicateurs non valides.

Exigences

Exigence Valeur
d’en-tête d3d12.h

Voir aussi

CD3DX12_HEAP_DESC

principales énumérations

segments de mémoire de descripteur