Glossário do Direct3D 12

Esses termos são distintos do Direct3D 12.

Ligação

O processo de anexação de memória ao pipeline de gráficos. A associação de recursos, por exemplo, envolve a associação de um recurso, como uma textura para o pipeline, para uso na renderização de um objeto.

Buffer

Um tipo de recurso D3D que é sinônimo de uma alocação de memória contígua.

Pacote

Um buffer de comando que a GPU (unidade de processamento gráfico) pode executar somente diretamente por meio de uma lista de comandos diretos. Um pacote herda todo o estado da GPU (exceto o objeto de estado do pipeline e a topologia primitiva atualmente definidas).

alocador de comandos

As alocações de memória subjacentes nas quais os comandos de GPU são armazenados. O objeto alocador de comando se aplica a listas de comandos diretas e pacotes.

lista de comandos

Uma lista de comandos corresponde a um conjunto de comandos que a GPU executa. Eles incluem comandos como definir estado, desenhar, limpar e copiar. A interface de lista de comandos D3D12 é significativamente diferente da interface de lista de comandos D3D11. A interface de lista de comandos D3D12 contém APIs semelhantes às APIs de renderização de contexto do dispositivo D3D11.

Uma lista de comandos D3D12 não mapeia ou cancela o mapa de recursos, altera mapeamentos de blocos, redimensiona pools de blocos, obtém dados de consulta nem envia comandos implicitamente à GPU para execução.

Ao contrário dos contextos adiados do D3D11, as listas de comandos D3D12 dão suporte apenas a dois níveis de indireção. Uma lista de comandos diretos corresponde a um buffer de comando que a GPU pode executar. Um pacote só pode ser executado diretamente por meio de uma lista de comandos diretos.

Uma lista de comandos diretos não herda nenhum estado de GPU. Um pacote herda todo o estado da GPU (exceto o objeto de estado do pipeline e a topologia primitiva atualmente definidas).

A memória de uma lista de comandos é definida pelo alocador de comandos. A finalidade das listas de comandos é que elas podem ser enviadas para uma GPU como uma única solicitação de renderização.

fila de comandos

Uma fila de comandos lista que a GPU executa sucessivamente. Os aplicativos devem enviar explicitamente listas de comandos para uma fila de comandos para execução. Normalmente, há três filas de comando: gráficos 3D, computação e cópia, correspondentes ao pipeline de gráficos 3D, ao mecanismo de computação e a um ou mais mecanismos de cópia, na GPU.

rasterização conservadora

A rasterização conservadora é um modo de operação para o estágio de rasterizador do pipeline de gráficos Direct3D. Ele desabilita a rasterização baseada em exemplo padrão e, em vez disso, rasterizará um pixel coberto por qualquer quantidade por um primitivo. Uma distinção importante é que, embora qualquer cobertura produza um pixel rasterizado, essa cobertura não pode ser caracterizada pelo hardware, portanto, a cobertura sempre aparece binária para um sombreador de pixels: totalmente coberto ou não coberto. Cabe ao código do sombreador de pixel determinar analíticamente a cobertura real.

A rasterização conservadora pode ajudar com problemas como detecção de colisão e ocorrência, binning e abate de oclusão, em que a cor de um pixel é mais certa e casos de borda podem ser eliminados. Consulte Rasterização conservadora.

Exibição de buffer constante (CBV)

Os buffers constantes contêm dados constantes de sombreador, como uma exibição de câmera, matrizes de projeção e matrizes mundiais. Uma "exibição de buffer constante" é a exibição específica do formato do buffer, conforme visto pelo pipeline de gráficos.

heap padrão

Um heap no modo de usuário focado em dar suporte a tipos de recursos de GPU persistentes, incluindo recursos escritos por GPU.

Descritor

Os descritores são a unidade primária de associação para um único recurso em D3D12. Um descritor é um bloco relativamente pequeno de dados que descreve totalmente um objeto para a GPU, em um formato específico de GPU. Há muitos tipos diferentes de descritores: SRVs (Modos de Exibição de Recurso de Sombreador), UAVs (Exibições de Acesso Não Ordenado), CBVs (Exibições de Buffer Constante) e Exemplos são alguns exemplos.

heap do descritor

Um heap de descritor é uma coleção de alocações contíguas de descritores, uma alocação para cada descritor. O ponto principal de um heap de descritor é abranger a maior parte da alocação de memória necessária para armazenar as especificações do descritor de tipos de objeto que os sombreadores referenciam para o maior número possível de uma janela de renderização (idealmente um quadro inteiro de renderização ou mais).

tabela de descritor

Uma tabela de descritor é logicamente uma matriz de descritores. Cada tabela de descritor armazena descritores de um ou mais tipos, incluindo SRVs, UAVe, CBVs e Samplers. Uma tabela de descritor não é uma alocação de memória, é simplesmente um deslocamento e comprimento em um heap de descritor.

lista de comandos diretos

Um buffer de comando que a GPU pode executar. Uma lista de comandos diretos não herda nenhum estado de GPU.

Cerca

Um mecanismo para sincronizar a GPU e a CPU. A GPU e a CPU podem ser instruídas a aguardar em uma cerca, aguardando em vigor que o outro processador seja atualizado. Consulte Sincronização de vários mecanismos.

hazard, rastreamento de risco

Um risco ocorre quando um recurso é usado para uma finalidade e o aplicativo pretende reutilizá-lo para outra finalidade. Para usar o recurso novamente, os caches intermediários precisarão ser liberados ou invalidados, os requisitos de compactação precisarão ser consistentes com o segundo uso e o recurso deverá estar no estado necessário para evitar a leitura do recurso depois que ele tiver sido gravado e invalidado para a finalidade pretendida.

O processo de manter recursos e evitar esses problemas de sincronização é conhecido como acompanhamento de risco. Se não houver nenhum acompanhamento de risco pelo driver, o aplicativo será responsável por isso. Na maioria das versões anteriores do DirectX, o rastreamento de risco era tratado pelo driver. Para melhorar o desempenho, os métodos sem acompanhamento de riscos estão disponíveis no DirectX 12.

HLSL (Linguagem de Sombreador de Alto Nível)

Uma linguagem de computador, semelhante, mas distinta em muitos aspectos de C, que é usada para escrever código de sombreador. Sombreadores de vértice, pixel, geometria, computação, domínio e casco são todos gravados usando HLSL. Um compilador converte a origem HLSL em um formato binário para a GPU consumir.

multiengine

As diferentes instâncias e tipos de mecanismos em uma única GPU. Os tipos de mecanismos incluem: gráficos, computação e cópia.

MultiGPU

Uma configuração de hardware em que há mais de um adaptador gráfico. Às vezes, os adaptadores separados são chamados de nós. Ter várias GPUs pode tornar a tarefa de sincronizá-las com a CPU e entre si, consideravelmente mais complexa do que com uma única GPU.

Objeto Pipeline State (PSO)

Uma parte significativa do estado da GPU. Esse estado inclui todos os sombreadores definidos no momento e determinados objetos de estado de função fixa. A única maneira de alterar os estados contidos no objeto de pipeline é alterar o objeto de pipeline associado no momento.

pré-indicação

Predication é um recurso que permite que a GPU em vez da CPU determine não desenhar, copiar ou expedir um objeto. Por exemplo, se uma caixa delimitadora de um objeto for totalmente ocluída por outro objeto ou perspectiva tiver reduzido o objeto para menor que o tamanho de um pixel, talvez não haja nenhum ponto na tentativa de desenhar o objeto oculto. Consulte Predication.

ROV (Exibição de Ordem do Rasterizador)

Pipelines gráficos padrão podem ter problemas para compor corretamente várias texturas que contêm transparência. Objetos como cercas de arame, fumaça, fogo, vegetação e vidro colorido usam transparência para obter o efeito desejado. Problemas surgem quando várias texturas que contêm transparência estão alinhadas umas com as outras (fumaça na frente de uma cerca em frente a um prédio de vidro que contém vegetação, como exemplo). Os ROVs (exibições ordenadas por rasterizador) permitem que os algoritmos OIT (Transparência Independente de Ordem) subjacentes usem recursos do hardware para tentar resolve a ordem de transparência corretamente. A transparência é tratada pelo sombreador de pixel.

Os ROVs (exibições ordenadas por rasterizador) permitem que o código de sombreador de pixel marque associações de UAV (Modo de Exibição de Acesso Não Ordenado) com uma declaração que altera os requisitos normais para a ordem dos resultados do pipeline de gráficos para UAVs.

heap de readback

Um heap no modo de usuário focado na transferência de dados da GPU de volta para a CPU.

Recurso

Uma entidade que fornece dados para o pipeline e define o que é renderizado durante sua cena. Os recursos podem ser carregados a partir da mídia de jogo ou criados dinamicamente no momento de execução. Normalmente, os recursos incluem dados de textura, dados de vértice e dados de sombreador. A maioria dos aplicativos Direct3D cria e destrói recursos extensivamente ao longo de sua vida útil.

barreira de recursos

Uma barreira de recursos notifica o driver de que a sincronização de vários acessos a um único recurso pode ser necessária, por exemplo, leitura e gravação na mesma textura.

associação de recursos

A associação de recursos é o processo de vinculação de recursos (texturas, buffers de vértice, buffers de índice e assim por diante), ao pipeline gráfico, permitindo que os sombreadores do pipeline processem o recurso correto.

heaps de recursos

Heaps de recursos é um termo genérico para os heaps que são buffers de memória reservados para manter os recursos à medida que são transferidos de e para a GPU. Uma transferência para a GPU requer um Heap de Upload, da GPU para a CPU requer um Heap de Readback e um heap persistente para a GPU manter em vários quadros de renderização é chamado de Heap Padrão.

assinatura raiz

As assinaturas raiz definem todos os recursos que devem ser associados aos pipelines gráficos ou de computação. Uma assinatura raiz é configurada pelo aplicativo e vincula listas de comandos aos recursos que os sombreadores exigem Normalmente, há um gráfico e uma assinatura raiz de computação por aplicativo.

Sampler

Um sampler é um código que lê de uma textura.

SRV (Modo de Exibição de Recurso de Sombreador)

Uma maneira específica de analisar os dados em um recurso de sombreador, como uma textura.

heap estático

Um heap de modo de usuário que se concentra em vários recursos somente leitura de GPU que normalmente são usados ao mesmo tempo e não são alterados com frequência.

cadeia de troca

As cadeias de troca controlam a rotação do buffer traseiro, formando a base da animação gráfica. As cadeias de troca são tratadas pelo DXGI de conjunto de API de baixo nível (consulte Visão geral do DXGI).

swizzle

Uma técnica de localizar dados multidimensionais na memória, de modo que os dados de dimensionalidade próxima tendem a ter endereços próximos. Em particular, todos os dados de uma linha não estão localizados contíguamente antes dos dados da próxima linha. Um "Swizzle parametrizado" descreve uma maneira padronizada de descrever padrões de swizzle.

Textura

Um tipo de recurso D3D que é multidimensional e tem um layout de memória otimizado para acesso multidimensional da GPU. As texturas geralmente contêm a imagem bruta necessária para renderizar em uma superfície, antes que a iluminação e a mesclagem ocorram, mas podem conter outras formas de dados, como gradientes de cor e cores de referência. O Direct3D 12 dá suporte a uma, duas e três texturas tridimensionais.

Telha

Uma página de memória de vídeo, semelhante a uma página de memória de CPU/sistema. A notação de bloco ajuda a distinguir o subsistema de memória virtual de GPU do subsistema de memória virtual da CPU. As GPUs fornecem recursos de memória virtual semelhantes aos da memória virtual do sistema. Algumas GPUs têm recursos de memória virtual compartilhados, que permitem o compartilhamento de algumas páginas do subsistema de memória virtual com a CPU e a GPU.

recursos lado a lado

Os recursos lado a lado são necessários para que menos memória de GPU seja desperdiçada armazenando regiões de superfícies que o aplicativo sabe que não serão acessadas e o hardware pode entender como filtrar entre blocos adjacentes. Os recursos lado a lado são recursos lógicos grandes, mas exigem pequenas quantidades de memória física.

Modo de Exibição de Acesso Não Ordenado (UAV)

Uma exibição de acesso não ordenada em um recurso (que inclui buffers, texturas e matrizes de textura – sem várias amostras), permite acesso de leitura/gravação não ordenado temporalmente de vários threads. Isso significa que esse tipo de recurso pode ser lido/gravado simultaneamente por vários threads sem gerar conflitos de memória.

carregar heap

Um heap no modo de usuário que se concentra na transferência de dados da CPU para a GPU.

heap do modo de usuário

Uma coleção de alocações de memória grandes e contíguas que são recicladas sem a consciência de nenhum componente de kernel: os métodos de alocação e destruição não chamam métodos de alocação e destruição de kernel durante o estado estável. Os heaps Upload, Readback e Default são variantes de heaps de modo de usuário.

recursos lado a lado do volume

Recursos lado a lado tridimensionais.