D3D12_HEAP_FLAGS enumeração (d3d12.h)
Especifica opções de heap, como se o heap pode conter texturas e se os recursos são compartilhados entre adaptadores.
Sintaxe
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 Nenhuma opção é especificada. |
D3D12_HEAP_FLAG_SHARED Valor: 0x1 O heap é compartilhado. Consulte heaps compartilhados. |
D3D12_HEAP_FLAG_DENY_BUFFERS Valor: 0x4 O heap não tem permissão para conter buffers. |
D3D12_HEAP_FLAG_ALLOW_DISPLAY Valor: 0x8 O heap tem permissão para conter superfícies de cadeia de troca. |
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER Valor: 0x20 O heap tem permissão para compartilhar recursos entre adaptadores. Consulte heaps compartilhados. Uma sessão protegida não pode ser misturada com recursos compartilhados entre adaptadores. |
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES Valor: 0x40 O heap não tem permissão para armazenar as texturas RT (Destino de Renderização) e/ou Depth-Stencil (DS). |
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES Valor: 0x80 O heap não tem permissão para conter recursos com D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D ou D3D12_RESOURCE_DIMENSION_TEXTURE3D, a menos que D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET ou D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL estejam presentes. Consulte D3D12_RESOURCE_DIMENSION e D3D12_RESOURCE_FLAGS. |
D3D12_HEAP_FLAG_HARDWARE_PROTECTED Valor: 0x100 Unsupported. Não use. |
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH Valor: 0x200 O heap dá suporte à funcionalidade MEM_WRITE_WATCH, o que faz com que o sistema acompanhe as páginas gravadas na região de memória confirmada. Esse sinalizador não pode ser combinado com os sinalizadores D3D12_HEAP_TYPE_DEFAULT ou D3D12_CPU_PAGE_PROPERTY_UNKNOWN. Os aplicativos são desencorajados a usar esse sinalizador por conta própria, pois impedem que as ferramentas usem essa funcionalidade. |
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS Valor: 0x400 Garante que as operações atômicas serão atômicas na memória desse heap, de acordo com componentes capazes de ver a memória. A criação de um heap com esse sinalizador falhará em qualquer uma dessas condições. - O tipo de heap é D3D12_HEAP_TYPE_DEFAULTe o heap pode estar visível em vários nós, mas o dispositivo não suporte D3D12_CROSS_NODE_SHARING_TIER_3. - O heap é visível para CPU, mas o tipo de heap não éD3D12_HEAP_TYPE_CUSTOM. Observe que heaps com esse sinalizador podem ser um recurso limitado em alguns sistemas. |
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT Valor: 0x800 O heap é criado em um estado não residente e deve ser feito residente usando ID3D12Device::MakeResident ou ID3D12Device3::EnqueueMakeResident. Por padrão, a etapa final da criação do heap é tornar o heap residente, portanto, esse sinalizador ignora essa etapa e permite que o aplicativo decida quando fazê-lo. |
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED Valor: 0x1000 Permite que o sistema operacional não zero o heap criado. Por padrão, os heaps e os recursos confirmados são quase sempre zerados após a criação. Esse sinalizador permite que isso seja ignorado em alguns cenários. No entanto, isso não garante. Por exemplo, a memória proveniente de outros processos ainda precisa ser zerado para proteção de dados e isolamento do processo. Isso pode diminuir a sobrecarga da criação do heap. |
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES Valor: 0 O heap tem permissão para armazenar todos os tipos de buffers e/ou texturas. Este é um alias; para obter mais detalhes, consulte "Aliases" na seção Comentários. |
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS Valor: 0xc0 O heap só tem permissão para armazenar buffers. Este é um alias; para obter mais detalhes, consulte "Aliases" na seção Comentários. |
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES Valor: 0x44 O heap só tem permissão para armazenar texturas não RT, não DS. Este é um alias; para obter mais detalhes, consulte "Aliases" na seção Comentários. |
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES Valor: 0x84 O heap só tem permissão para armazenar texturas RT e/ou DS. Este é um alias; para obter mais detalhes, consulte "Aliases" na seção Comentários. |
Observações
Essa enumeração é usada pelos seguintes itens de API:
Os seguintes sinalizadores de heap devem ser usados com ID3D12Device::CreateHeap, mas serão definidos automaticamente para heaps implícitos criados por ID3D12Device::CreateCommittedResource. Os adaptadores que dão suporte apenas a camada de heap 1 devem definir dois dos três sinalizadores a seguir.Valor | Descrição |
---|---|
D3D12_HEAP_FLAG_DENY_BUFFERS | O heap não tem permissão para conter recursos com D3D12_RESOURCE_DIMENSION_BUFFER (que é uma constante de enumeração D3D12_RESOURCE_DIMENSION). |
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES | O heap não tem permissão para conter recursos com D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D ou D3D12_RESOURCE_DIMENSION_TEXTURE3D junto com D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET ou D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL. (Os dois últimos itens são D3D12_RESOURCE_FLAGS constantes de enumeração.) |
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES | O heap não tem permissão para conter recursos com D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D ou D3D12_RESOURCE_DIMENSION_TEXTURE3D, a menos que D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET e D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL estejam ausentes. |
Aliases
Adaptadores que dão suporte a camada de heap 2 ou superior também têm permissão para definir nenhum dos sinalizadores acima. Os aliases para esses sinalizadores estão disponíveis para aplicativos que preferem pensar apenas em quais recursos têm suporte.Os aliases a seguir existem, portanto, tenha cuidado ao fazer manipulações de bits:
- D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0 e só tem suporte em camada de heap 2 e maior.
- 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
heaps exibicionáveis
Os heaps exibicionáveis são mais comumente criados pela cadeia de troca para apresentação, para habilitar a verificação em um monitor.Heaps exibicionáveis são especificados com o membro D3D12_HEAP_FLAG_ALLOW_DISPLAY da enumeração D3D12_HEAP_FLAGS.
Os aplicativos podem criar heaps exibicionáveis fora de uma cadeia de troca; mas não pode realmente apresentar com eles. Esse sinalizador não tem suporte CreateHeap e só pode ser usado com CreateCommittedResource com D3D12_HEAP_TYPE_DEFAULT.
Restrições adicionais à D3D12_RESOURCE_DESC se aplicam ao recurso criado com heaps exibiveis.
- O formato não só deve ser compatível com o dispositivo, mas deve ter suporte para verificação. Consulte o uso do membro D3D12_FORMAT_SUPPORT1_DISPLAY do D3D12_FORMAT_SUPPORT1.
- dimensionar deve ser D3D12_RESOURCE_DIMENSION_TEXTURE2D.
- alinhamento deve ser 0.
- ArraySize pode ser 1 ou 2.
- MipLevels deve ser 1.
- SampleDesc deve ter Count definido como 1 e Quality definido como 0.
- Layout deve ser D3D12_TEXTURE_LAYOUT_UNKNOWN.
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL e D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER são sinalizadores inválidos.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | d3d12.h |