é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 |