é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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour