enumeración D3D12_HEAP_FLAGS (d3d12.h)

Especifica las opciones del montón, como si el montón puede contener texturas y si los recursos se comparten entre adaptadores.

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
Valor: 0
No se especifican opciones.
D3D12_HEAP_FLAG_SHARED
Valor: 0x1
El montón se comparte. Consulte Montones compartidos.
D3D12_HEAP_FLAG_DENY_BUFFERS
Valor: 0x4
El montón no puede contener búferes.
D3D12_HEAP_FLAG_ALLOW_DISPLAY
Valor: 0x8
El montón puede contener superficies de cadena de intercambio.
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER
Valor: 0x20
El montón puede compartir recursos entre adaptadores. Consulte Montones compartidos. Una sesión protegida no se puede mezclar con recursos compartidos entre adaptadores.
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
Valor: 0x40
El montón no puede almacenar texturas de destino de representación (RT) o Depth-Stencil (DS).
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
Valor: 0x80
No se permite que el montón contenga recursos con D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D o D3D12_RESOURCE_DIMENSION_TEXTURE3D a menos que estén presentes D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET o D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL. Consulte D3D12_RESOURCE_DIMENSION y D3D12_RESOURCE_FLAGS.
D3D12_HEAP_FLAG_HARDWARE_PROTECTED
Valor: 0x100
No compatible. No debe usarse.
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH
Valor: 0x200
El montón admite MEM_WRITE_WATCH funcionalidad, lo que hace que el sistema realice un seguimiento de las páginas escritas en la región de memoria confirmada. Esta marca no se puede combinar con las marcas D3D12_HEAP_TYPE_DEFAULT o D3D12_CPU_PAGE_PROPERTY_UNKNOWN. No se recomienda usar esta marca porque impide que las herramientas usen esta funcionalidad.
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS
Valor: 0x400
Garantiza que las operaciones atómicas serán atómicas en la memoria de este montón, según los componentes capaces de ver la memoria.

Al crear un montón con esta marca, se producirá un error en cualquiera de estas condiciones.
- El tipo de montón es D3D12_HEAP_TYPE_DEFAULT y el montón puede ser visible en varios nodos, pero el dispositivo no admite D3D12_CROSS_NODE_SHARING_TIER_3.
- El montón es visible para cpu, pero el tipo de montón no es D3D12_HEAP_TYPE_CUSTOM.

Tenga en cuenta que los montones con esta marca pueden ser un recurso limitado en algunos sistemas.
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT
Valor: 0x800
El montón se crea en un estado no residente y se debe hacer residente mediante ID3D12Device::MakeResident o ID3D12Device3::EnqueueMakeResident.

De forma predeterminada, el último paso de creación del montón es hacer que el montón resida, por lo que esta marca omite este paso y permite a la aplicación decidir cuándo hacerlo.
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED
Valor: 0x1000
Permite que el sistema operativo no tenga cero el montón creado. De forma predeterminada, los recursos confirmados y los montones casi siempre se han cero al crearse. Esta marca permite que esto se elide en algunos escenarios. Sin embargo, no lo garantiza. Por ejemplo, la memoria procedente de otros procesos todavía debe tener ceros para la protección de datos y el aislamiento de procesos. Esto puede reducir la sobrecarga de crear el montón.
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES
Valor: 0
El montón puede almacenar todos los tipos de búferes o texturas. Se trata de un alias; para obtener más información, vea "Alias" en la sección Comentarios.
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS
Valor: 0xc0
El montón solo puede almacenar búferes. Se trata de un alias; para obtener más información, vea "Alias" en la sección Comentarios.
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES
Valor: 0x44
El montón solo puede almacenar texturas que no son RT y no DS. Se trata de un alias; para obtener más información, vea "Alias" en la sección Comentarios.
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES
Valor: 0x84
El montón solo puede almacenar texturas RT o DS. Se trata de un alias; para obtener más información, vea "Alias" en la sección Comentarios.

Comentarios

Esta enumeración la usan los siguientes elementos de API:

Las siguientes marcas de montón se deben usar con ID3D12Device::CreateHeap, pero se establecerán automáticamente para los montones implícitos creados por ID3D12Device::CreateCommittedResource. Los adaptadores que solo admiten el nivel de montón 1 deben establecer dos de las tres marcas siguientes.
Valor Descripción
D3D12_HEAP_FLAG_DENY_BUFFERS El montón no puede contener recursos con D3D12_RESOURCE_DIMENSION_BUFFER (que es una constante de enumeración D3D12_RESOURCE_DIMENSION ).
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES El montón no puede contener recursos con D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D o D3D12_RESOURCE_DIMENSION_TEXTURE3D junto con D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET o D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL. (Los dos últimos elementos son D3D12_RESOURCE_FLAGS constantes de enumeración).
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES El montón no puede contener recursos con D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D o D3D12_RESOURCE_DIMENSION_TEXTURE3D a menos que D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET y D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL estén ausentes.

Alias

Además, los adaptadores que admiten el nivel de montón 2 o superior pueden establecer ninguna de las marcas anteriores. Los alias de estas marcas están disponibles para las aplicaciones que prefieren pensar solo en qué recursos se admiten.

Existen los siguientes alias, por lo que debe tener cuidado al realizar manipulaciones de bits:

  • D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0 y solo se admite en el nivel de montón 2 y versiones posteriores.
  • 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

Montones que se pueden mostrar

Los montones que se pueden mostrar se crean normalmente mediante la cadena de intercambio para la presentación, para habilitar el examen en un monitor.

Los montones que se muestran se especifican con el miembro D3D12_HEAP_FLAG_ALLOW_DISPLAY de la enumeración D3D12_HEAP_FLAGS .

Las aplicaciones pueden crear montones que se puedan mostrar fuera de una cadena de intercambio; pero no pueden presentarse realmente con ellos. CreateHeap no admite esta marca y solo se puede usar con CreateCommittedResource con D3D12_HEAP_TYPE_DEFAULT.

Se aplican restricciones adicionales al D3D12_RESOURCE_DESC al recurso creado con montones que se pueden mostrar.

  • El formato no solo debe ser compatible con el dispositivo, sino que debe ser compatible con el examen. Consulte el uso del miembro D3D12_FORMAT_SUPPORT1_DISPLAY de D3D12_FORMAT_SUPPORT1.
  • La dimensión debe ser D3D12_RESOURCE_DIMENSION_TEXTURE2D.
  • La alineación debe ser 0.
  • ArraySize puede ser 1 o 2.
  • MipLevels debe ser 1.
  • SampleDesc debe tener Count establecido en 1 y Quality establecido en 0.
  • El diseño debe ser D3D12_TEXTURE_LAYOUT_UNKNOWN.
  • D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL y D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER son marcas no válidas.

Requisitos

Requisito Valor
Header d3d12.h

Consulte también

CD3DX12_HEAP_DESC

Enumeraciones principales

Montones de descriptores