Sintaxe
typedef enum D3D12XBOX_GDS_OPERATION
{
D3D12XBOX_GDS_OPERATION_DEFAULT = 0,
D3D12XBOX_GDS_OPERATION_READ_AT_EOS = 1,
D3D12XBOX_GDS_OPERATION_READ_AT_TOP = 2,
D3D12XBOX_GDS_OPERATION_WRITE_COPY_DATA_TO_CB = 3,
D3D12XBOX_GDS_OPERATION_WRITE_USE_DATA_BY_POINTER = 4,
D3D12XBOX_GDS_OPERATION_COMPUTE = 8,
} D3D12XBOX_GDS_OPERATION
Constantes
| Constante | Descrição |
|---|---|
| D3D12XBOX_GDS_OPERATION_DEFAULT | As leituras são D3D12XBOX_GDS_OPERATION_READ_PIPELINED_AT_EOS. As gravações são sempre no Top Of Pipe (TOP) com uma cópia; insira sincronização conforme necessário. Indica que o padrão deve ser usado: D3D12XBOX_GDS_OPERATION_READ_AT_EOS para ID3D12GraphicsCommandList::ReadGDSX e D3D12XBOX_GDS_OPERATION_WRITE_COPY_DATA_TO_CB para ID3D12GraphicsCommandList::WriteGDSX. Essas configurações representam de forma mais próxima o comportamento padrão de SetUAV do DirectX 12 |
| D3D12XBOX_GDS_OPERATION_READ_AT_EOS | Lê o conteúdo do GDS no final do sombreador, em pipeline com a renderização. Fences ou WaitUntilIdle podem ser necessários para garantir que a leitura tenha chegado à memória. Uma leitura do GDS será feita em pipeline e ocorrerá no final do sombreador (EOS). Se a GPU precisar com urgência de acesso de leitura aos dados do GDS gravados, chame InsertFence e InsertWaitOnFence para bloquear o Command Processor (CP) até que a gravação EOS seja concluída. Se os contadores forem lidos por meio do cache L2 (TCC), será necessária uma liberação de cache. Se os contadores forem lidos por meio do CP, nenhuma liberação de cache será necessária. Se os dados do GDS gravados forem usados na GPU suficientemente longe de onde foram gravados, nenhuma sincronização será necessária, com exceção de uma possível liberação de cache. |
| D3D12XBOX_GDS_OPERATION_READ_AT_TOP | Lê o GDS no TOP. Indica que uma leitura do GDS fora de pipeline será executada pelo CP no Top Of Pipe (TOP). Isso significa que, se houver algum sombreador em execução que modifique o GDS (por exemplo, por meio de contadores UAV), a leitura poderá produzir resultados inesperados, pois eles serão um instantâneo do estado do GDS durante a execução do sombreador. Se não houver sombreadores em execução que usem o GDS, os resultados serão os mesmos produzidos no caso EOS. As considerações de gravação e leitura da GPU aplicáveis a D3D12XBOX_GDS_OPERATION_READ_AT_EOS também se aplicam a D3D12XBOX_GDS_OPERATION_READ_AT_TOP. |
| D3D12XBOX_GDS_OPERATION_WRITE_COPY_DATA_TO_CB | Grava o GDS no Top Of Pipe, mas primeiro copia os dados do contador para o CB. Indica que uma gravação do GDS só pode ser executada a partir de um sombreador ou do CP, portanto, WriteGDSX executa gravações no TOP. Quando uma cópia é solicitada, os dados do contador fornecidos são copiados para o buffer de comandos e o ponteiro de origem pode ser descartado. O ponteiro não precisa apontar para memória mapeada pela GPU. Isso essencialmente executa a cópia da CPU para o GDS. |
| D3D12XBOX_GDS_OPERATION_WRITE_USE_DATA_BY_POINTER | Grava o GDS no Top Of Pipe; no entanto, como o ponteiro é usado, o título deve controlar seu tempo de vida e seus riscos. Esta constante indica que uma gravação do GDS só pode ser executada a partir de um sombreador ou do CP, portanto, WriteGDSX executa gravações no TOP. Quando uma cópia por ponteiro é solicitada, os dados do contador fornecidos são usados pela GPU quando o pacote é executado. Isso significa que o título deve controlar os riscos e o tempo de vida do ponteiro pCounterValues e que pCounterValue deve estar na memória mapeada pela GPU; se isso não for feito, é provável que ocorra uma falha da GPU. Esse tipo de cópia é mais adequado para GDS de GPU para GPU. |
| D3D12XBOX_GDS_OPERATION_COMPUTE | Para operações de fim de sombreador (EOS), especifica se a operação é EOS de computação ou EOS de gráficos. Esta constante indica que o pacote está relacionado à computação, e não a gráficos, o que permite distinguir entre os fins de sombreador. |
Comentários
D3D12XBOX_GDS_OPERATION especifica as operações de leitura e gravação do Global Data Share (GDS).
As funções a seguir usam esta enumeração:
O Direct3D 12 não executa nenhum gerenciamento implícito do GDS, portanto, todo o espaço do GDS fica disponível para o título. Para obter mais informações sobre o ponteiro de destino para os dados do GDS, confira D3D12_GPU_VIRTUAL_ADDRESS.
