Heaps de descritores não visíveis do sombreador

Alguns heaps de descritor não podem ser referenciados por sombreadores por meio de tabelas de descritor, mas existem para ajudar o aplicativo a preparar os descritores antes de gravar uma lista de comandos ou porque nenhum heap visível para sombreador é necessário.

Exibições não visíveis

Todos os heaps de descritor, incluindo os heaps de descritor acessíveis do sombreador descritos anteriormente, podem ser manipulados pela CPU e/ou pelas listas de comandos, dependendo do pool de memória e das propriedades de acesso à CPU que o aplicativo seleciona para um heap de descritor.

Para heaps de descritor visível de sombreador, o motivo óbvio para negar o acesso de sombreador a esses heaps de descritor é enquanto eles estão sendo preparados. Em seguida, esses heaps são tornados visíveis para sombreador e acessados por meio de tabelas de descritor na execução da lista de comandos. No entanto, não há nenhum requisito para preparar heaps visíveis para sombreadores, eles podem ser preenchidos diretamente.

Outros descritores são associados ao pipeline fazendo com que seu conteúdo seja registrado diretamente na lista de comandos. Esses descritores servem apenas para traduzir os parâmetros de exibição no tempo de registro da lista de comandos. Esses heaps são sempre visíveis sem sombreador e contêm o seguinte.

  • Renderizar rtvs (exibições de destino)
  • Exibições de estêncil de profundidade (DSVs)

As EXIBIções de Buffer de Índice (IBVs), VBVs (Exibições de Buffer de Vértice) e SOVs (Exibições de Saída de Fluxo) são passadas diretamente para métodos de API, não têm tipos de heap específicos.

Depois de gravar na lista de comandos (com uma chamada como OMSetRenderTargets, por exemplo), a memória usada para manter os descritores dessa chamada estará imediatamente disponível para reutilização após a chamada.

Até mesmo tabelas de descritor têm opções em que um aplicativo pode permitir que a implementação opte por gravar o conteúdo da tabela na gravação da lista de comandos (em vez de desreferenciar o ponteiro da tabela na execução).

Resumo

Sombreador visível, somente gravação de CPU Sem sombreador visível, leitura/gravação da CPU
CBV, SRV, UAV sim sim
SAMPLER sim sim
DAF não sim
DSV não sim

 

Heaps de descritores