énumération D3D12_HEAP_FLAGS (d3d12.h)

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

Syntax

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 à Tas 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 à Tas partagés. Une session protégée ne peut pas être mixte avec des ressources partagées entre les adaptateurs.
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
Valeur : 0x40
Le tas n’est pas autorisé à stocker des textures de cible de rendu (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 des D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET ou des D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL sont présents. Reportez-vous aux D3D12_RESOURCE_DIMENSION et D3D12_RESOURCE_FLAGS.
D3D12_HEAP_FLAG_HARDWARE_PROTECTED
Valeur : 0x100
Non prise en charge. Ne pas utiliser.
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
Valeur : 0x200
Le tas prend en charge MEM_WRITE_WATCH fonctionnalité, ce qui oblige le système à 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. Il est déconseillé aux applications d’utiliser cet indicateur eux-mêmes, car il empêche 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 ou l’autre de ces conditions.
- Le type de tas est D3D12_HEAP_TYPE_DEFAULT et le tas peut être visible sur plusieurs nœuds, mais l’appareil ne prend pas en charge les D3D12_CROSS_NODE_SHARING_TIER_3.
- Le tas est visible par le processeur, 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 rendu résident à l’aide de ID3D12Device ::MakeResident ou ID3D12Device3 ::EnqueueMakeResident.

Par défaut, la dernière étape de création du tas consiste à rendre le tas résident. Cet indicateur ignore donc 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 mis à zéro lors de la création. Cet indicateur permet d’éliminer cela dans certains scénarios. Toutefois, cela ne le garantit pas. Par exemple, la mémoire provenant d’autres processus doit toujours être mise à zéro pour la protection des données et l’isolation des processus. Cela peut réduire la surcharge liée à la 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 des 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 le 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 le 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 ne penser qu’aux ressources prises en charge.

Les alias suivants existent. Soyez donc prudent lorsque vous effectuez des manipulations de bits :

  • D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0 et est uniquement pris en charge sur le 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

Tas affichables

Les tas affichables sont le plus souvent 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 présenter avec eux. 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 également pour l’analyse. Reportez-vous à l’utilisation du membre D3D12_FORMAT_SUPPORT1_DISPLAY de D3D12_FORMAT_SUPPORT1.
  • La dimension doit être D3D12_RESOURCE_DIMENSION_TEXTURE2D.
  • L’alignement doit être 0.
  • ArraySize peut avoir la valeur 1 ou 2.
  • MipLevels doit avoir la valeur 1.
  • SampleDesc doit avoir Count défini sur 1 et Qualité défini sur 0.
  • La disposition doit être D3D12_TEXTURE_LAYOUT_UNKNOWN.
  • D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL et D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER ne sont pas des indicateurs non valides.

Configuration requise

Condition requise Valeur
En-tête d3d12.h

Voir aussi

CD3DX12_HEAP_DESC

Énumérations principales

Tas de descripteurs