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
enumeraciones de
montón de descriptores de