Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Cada tabela de descritores armazena descritores de um ou mais tipos — SRVs, UAVs, CBVs e amostradores. Uma tabela de descritores não é uma alocação de memória; é simplesmente um deslocamento e comprimento em uma pilha de descritores.
Referenciando tabelas de descritores
O pipeline de gráficos, por meio da assinatura raiz, ganha acesso aos recursos fazendo referência a tabelas de descritores por índice.
Uma tabela de descritores é, na verdade, apenas um subintervalo de uma pilha de descritores. As pilhas de descritores representam a alocação subjacente de memória para uma coleção de descritores. Como a alocação de memória é uma propriedade da criação de um heap de descritor, definir uma tabela de descritores a partir de um é garantido ser tão barato quanto identificar uma região no heap para o hardware. As tabelas de descritores não precisam ser criadas ou destruídas no nível da API – elas são meramente identificadas pelos drivers como um deslocamento e tamanho de uma pilha sempre que referenciadas.
É certamente possível para um aplicativo definir tabelas de descritores muito grandes quando seus sombreadores querem a liberdade de selecionar a partir de um vasto conjunto de descritores disponíveis (muitas vezes referenciando texturas) em tempo real (talvez impulsionado por dados materiais).
Assinatura Raiz refere-se à entrada da tabela de descritores com uma referência ao heap, à posição inicial da tabela (um deslocamento do início do heap) e ao comprimento (em entradas) da tabela. A imagem abaixo mostra estes conceitos: os ponteiros da tabela de descritores da Assinatura Raiz e os descritores dentro da pilha de descritores que fazem referência à textura completa ou aos dados de buffer numa pilha (no caso de uma textura, a pilha padrão).