D3D12_HEAP_TYPE enumeração (d3d12.h)
Especifica o tipo de heap. Quando residentes, os heaps residem em um pool de memória física específico com determinadas propriedades de cache de CPU.
Sintaxe
typedef enum D3D12_HEAP_TYPE {
D3D12_HEAP_TYPE_DEFAULT = 1,
D3D12_HEAP_TYPE_UPLOAD = 2,
D3D12_HEAP_TYPE_READBACK = 3,
D3D12_HEAP_TYPE_CUSTOM = 4,
D3D12_HEAP_TYPE_GPU_UPLOAD
} ;
Constantes
D3D12_HEAP_TYPE_DEFAULT Valor: 1 Especifica o heap padrão. Esse tipo de heap experimenta a maior largura de banda para a GPU, mas não pode fornecer acesso à CPU. A GPU pode ler e gravar na memória desse pool e as barreiras de transição de recurso podem ser alteradas. Espera-se que a maioria dos heaps e recursos esteja localizada aqui e normalmente seja preenchida por meio de recursos em heaps de upload. |
D3D12_HEAP_TYPE_UPLOAD Valor: 2 Especifica um heap usado para carregamento. Esse tipo de heap tem acesso à CPU otimizado para carregar na GPU, mas não experimenta a quantidade máxima de largura de banda para a GPU. Esse tipo de heap é melhor para dados CPU-write-once, GPU-read-once; mas gpu-read-once é mais rigoroso do que o necessário. GPU-read-once-or-from-cache é um caso de uso aceitável para os dados; mas esses usos são difíceis de julgar devido a diferentes tamanhos e designs de cache de GPU. Em caso de dúvida, mantenha a definição gpu-read-once ou crie o perfil da diferença em muitas GPUs entre copiar os dados para um heap de _DEFAULT versus ler os dados de um heap de _UPLOAD. Os recursos neste heap devem ser criados com D3D12_RESOURCE_STATE_GENERIC_READ e não podem ser alterados para longe disso. O endereço da CPU para esses heaps geralmente não é eficiente para leituras de CPU. Veja a seguir os usos típicos para heaps de _UPLOAD:
Os seguintes provavelmente não são bons usos para heaps de _UPLOAD:
|
D3D12_HEAP_TYPE_READBACK Valor: 3 Especifica um heap usado para leitura de volta. Esse tipo de heap tem acesso à CPU otimizado para ler dados de volta da GPU, mas não experimenta a quantidade máxima de largura de banda para a GPU. Esse tipo de heap é melhor para dados legíveis por CPU e gpu-write-once. O comportamento do cache de CPU é write-back, que é propício para várias leituras de CPU de subconsulta. Os recursos neste heap devem ser criados com D3D12_RESOURCE_STATE_COPY_DEST e não podem ser alterados para longe disso. |
D3D12_HEAP_TYPE_CUSTOM Valor: 4 Especifica um heap personalizado. O aplicativo pode especificar diretamente as propriedades do pool de memória e do cache da CPU, o que pode ser útil para otimizações de UMA, multi-engine, multi-adaptador ou outros casos especiais. Para fazer isso, espera-se que o aplicativo entenda a arquitetura do adaptador para fazer a escolha certa. Para obter mais detalhes, consulte D3D12_FEATURE_ARCHITECTURE, D3D12_FEATURE_DATA_ARCHITECTUREe GetCustomHeapProperties |
Observações
Essa enumeração é usada pelos seguintes itens de API:
- D3D12_HEAP_DESC
- D3D12_HEAP_PROPERTIES
- GetCustomHeapProperties
Veja a seguir os tipos de heap abstraídos:
- D3D12_HEAP_TYPE_DEFAULT
- D3D12_HEAP_TYPE_UPLOAD
- D3D12_HEAP_TYPE_READBACK
- D3D12_HEAP_TYPE_CUSTOM
Observe que texturas (ao contrário dos buffers) não podem ser upload ou READBACK do tipo heap.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | d3d12.h |