Subalocação dentro de buffers
Os buffers têm todos os recursos necessários na D3D12 para que os aplicativos transfiram uma grande variedade de dados transitórios da CPU para a GPU. Esta seção aborda quatro cenários comuns para o uso e o gerenciamento de recursos e buffers.
Semelhante ao D3D11, os aplicativos em D3D12 ainda precisam declarar o uso de memória ao alocar buffers em D3D12 em comparação com recursos dinâmicos/de preparo em D3D11, mas na D3D12, os desenvolvedores têm mais flexibilidade e controle mais rígido sobre o uso da memória. Os buffers, por meio da subalocação, têm todos os recursos necessários para o gerenciamento de memória de baixo nível.
Nesta seção
Tópico | Descrição |
---|---|
carregando diferentes tipos de recursos |
Mostra como usar um buffer para carregar dados de buffer constantes e dados de buffer de vértice para a GPU e como subalocar e colocar dados corretamente dentro de buffers. O uso de um único buffer aumenta a flexibilidade de uso da memória e fornece aos aplicativos um controle mais rigoroso do uso de memória. Também mostra as diferenças entre os modelos D3D11 e D3D12 para carregar diferentes tipos de recursos. |
carregando dados de textura por meio de buffers |
Carregar dados de textura 2D ou 3D é semelhante ao carregamento de dados 1D, exceto pelo fato de que os aplicativos precisam prestar mais atenção ao alinhamento de dados relacionado ao pitch de linha. Os buffers podem ser usados de forma ortogonal e simultânea de várias partes do pipeline gráfico e são muito flexíveis. |
Ler dados de volta por meio de um buffer |
A leitura de dados da GPU, como a captura de uma captura de tela, envolve o uso do heap de readback. |
Fence-Based de Gerenciamento de Recursos |
Mostra como gerenciar o tempo de vida dos dados de recursos acompanhando o progresso da GPU por meio de cercas. A memória pode ser efetivamente reutilização com cercas que gerenciam cuidadosamente a disponibilidade de espaço livre na memória, como em uma implementação de buffer de anel para um heap de upload. |