Compartir a través de


enumeración D3D12_HEAP_FLAGS (d3d12.h)

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

Sintaxis

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 montón compartido.
D3D12_HEAP_FLAG_DENY_BUFFERS
Valor: 0x4
No se permite que el montón contenga 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 montón compartido. 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) ni 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
Sin fundamento. No use.
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 que puedan 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_DEFAULTy el montón puede estar visible en varios nodos, pero el dispositivo no admite D3D12_CROSS_NODE_SHARING_TIER_3.
- El montón es visible para la CPU, pero el tipo de montón es noD3D12_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 paso final de la creación del montón es hacer que el montón resida, por lo que esta marca omite este paso y permite que la aplicación decida cuándo hacerlo.
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED
Valor: 0x1000
Permite que el sistema operativo no sea cero en el montón creado. De forma predeterminada, los recursos confirmados y los montones casi siempre están ceros 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 estar cero 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.

Observaciones

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

Las siguientes marcas de montón deben usarse con ID3D12Device::CreateHeap, pero se establecerán automáticamente para los montones implícitos creados por ID3D12Device::CreateCommittedResource. Los adaptadores que solo admiten nivel de montón 1 deben establecer dos de las tres marcas siguientes.
Valor Descripción
D3D12_HEAP_FLAG_DENY_BUFFERS No se permite que el montón contenga recursos con D3D12_RESOURCE_DIMENSION_BUFFER (que es una constante de enumeración D3D12_RESOURCE_DIMENSION).
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES No se permite que el montón contenga 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 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 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET y D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL estén ausentes.

Alias de

Además, los adaptadores que admiten 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 alias siguientes, 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 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 pueden mostrar se especifican con el miembro D3D12_HEAP_FLAG_ALLOW_DISPLAY de la enumeración D3D12_HEAP_FLAGS.

Las aplicaciones pueden crear montones visibles fuera de una cadena de intercambio; pero no pueden presentarse realmente con ellos. Esta marca no es compatible con CreateHeap 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.
  • dimensión debe estar D3D12_RESOURCE_DIMENSION_TEXTURE2D.
  • de 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.
  • de diseño debe estar D3D12_TEXTURE_LAYOUT_UNKNOWN.
  • D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL y D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER no son marcas no válidas.

Requisitos

Requisito Valor
encabezado de d3d12.h

Consulte también

CD3DX12_HEAP_DESC

enumeraciones de Core

montón de descriptores de