Compartilhar via


D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_TYPE enumeração (d3d12umddi.h)

Declara o tipo de acesso de recurso para a chamada para PFND3D12DDI_BEGIN_RENDER_PASS.

Syntax

typedef enum D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_TYPE {
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_DISCARD,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_PRESERVE,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_CLEAR,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_NO_ACCESS,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_WRITING,
  D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ
} ;

Constantes

 
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_DISCARD
Indica que o aplicativo não tem nenhuma dependência no conteúdo anterior do recurso.

Uma determinada implementação pode retornar o conteúdo gravado anteriormente ou pode retornar dados não inicializados. No entanto, a leitura do recurso não deve produzir uma trava de GPU, a 'leitura' só pode retornar dados indefinidos no pior caso.
Uma leitura é definida como tradicional:

* UAV (modo de exibição de acesso não ordenado)
* SRV (exibição de recurso de sombreador)
* CBV (exibição de buffer constante)
* VBV (exibição de buffer de vértice)
* IBV (exibição de buffer de índice)
* Associação/leitura indirectArg
* blend/depth-testing-induced read
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_PRESERVE
Indica que o aplicativo tem uma dependência do conteúdo anterior do recurso e o conteúdo deve ser carregado de main memória.
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_CLEAR
Indica que o aplicativo tem uma dependência do recurso que está sendo limpo para uma cor específica (fornecida pelo aplicativo).

OBSERVAÇÃO

Isso é claro se o recurso interagiu ou não com algo além do Passe de Renderização.

A API permitirá que o aplicativo especifique os valores claros na chamada para PFND3D12DDI_BEGIN_RENDER_PASS, por meio da estrutura D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS .

D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_NO_ACCESS
Indica que o recurso não será lido ou gravado durante a Passagem de Renderização. Esse valor também indica se o plano de profundidade/estêncil de um DSV (Exibição da Fonte de Dados) não foi acessado.

IMPORTANTE

Esse campo deve ser emparelhado com o sinalizador D3D12DDI_RENDER_PASS_ENDING_ACCESS_NO_ACCESS em D3D12DDI_RENDER_PASS_ENDING_ACCESS_TYPE.

D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_WRITING
Indica que o aplicativo deve retomar a gravação nas seguintes condições:

* Retoma a gravação em uma superfície que foi gravada anteriormente no Render Pass anterior
* Tem o sinalizador D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_WRITING na enumeração D3D12DDI_RENDER_PASS_ENDING_ACCESS_TYPE
* Não houve nenhum trabalho de GPU intervindo que ocorreu entre os dois Passes de Renderização

A gravação no passe de renderização de retomada ocorre logo após a gravação na passagem de renderização suspensa .
A intenção desse sinalizador é permitir gravações no mesmo Destino de Renderização para abranger várias listas de comandos e sem liberar caches no chip.
A gravação pode ser retomada de uma Passagem de Renderização em uma Lista de Comandos separada, desde que os Listas de Comando de suspensão/retomada sejam executados (de volta para trás) no mesmo grupo ExecuteCommandLists.
D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ
Indica que o aplicativo deseja ler de um recurso que foi gravado anteriormente e imediatamente pela GPU (ou seja, ainda potencialmente no cache de blocos) e será lido de forma local de pixel (ou seja, as leituras sempre estarão no pixel de saída exato ou pixels adjacentes).

Esse valor de enumeração, emparelhado com D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ valor na enumeração D3D12DDI_RENDER_PASS_ENDING_ACCESS_TYPE , é permitir que os recursos sejam lidos, quando possível, sem emitir uma liberação entre duas operações de Render Pass subsequentes.

Especificamente, o aplicativo garante:

* O recurso foi gravado anteriormente em um Render Pass que tinha as características de "gravação" de D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ.
* Nenhuma operação de GPU ocorreu entre a D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ do Render Pass anterior e a Passagem de Renderização atual.
* Um D3D12DDI_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ pode ser encadeado de dentro da mesma Lista de Comandos ou entre Listas de Comando na mesma chamada ExecuteCommandLists, mas não entre chamadas ExecuteCommandLists separadas.
* O recurso a ser lido corresponde ao tamanho e ao formato do destino de renderização recém-associado.
* Todas as leituras/gravações são '1 para 1' (mais pixels de leitura de sarjeta opcionais especificados pelo aplicativo), as leituras da textura de origem serão gravadas no mesmo local na textura de destino e a textura de destino de renderização tem o mesmo tamanho que a textura de origem.

O tamanho do kernel da leitura (quantos pixels ao redor são necessários) é especificado em PFND3D12DDI_BEGIN_RENDER_PASS tempo, por meio dos campos AdditionalWidth/AdditionalHeight em D3D12_RENDER_PASS_BEGINNING_ACCESS_RESUME_LOCAL_READ_PARAMETERS. Os parâmetros AdditionalWidth/AdditionalHeight devem corresponder aos da D3D12DDI_RENDER_PASS_ENDING_ACCESS_SUSPEND_LOCAL_READ_PARAMETERS anterior.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1809
Cabeçalho d3d12umddi.h