Skip to main content
Envia uma matriz de listas de comandos para execução.

Sintaxe

Parâmetros

Count   _In_
Tipo: UINT
O número de listas de comandos a serem executadas. ppCommandLists   _In_reads_(Count)
Tipo: ID3D12CommandList*
A matriz de listas de comandos ID3D12CommandList a serem executadas.

Valor retornado

Tipo: void

Comentários

O aplicativo de chamada deve garantir que a GPU (unidade de processamento gráfico) não esteja lendo no momento nenhuma das listas de comandos enviadas de uma execução anterior. Para reduzir os custos fixos associados aos comandos enviados à GPU, os desenvolvedores de aplicativos são incentivados a agrupar as execuções de listas de comandos em lotes.

Execução assíncrona

É permitido (como uma extensão do XBOX) executar uma lista de comandos antes que ela tenha sido fechada e continuar gravando comandos na lista. Se uma lista de comandos executada em uma fila ainda não tiver sido fechada, todo o trabalho subsequente emitido para essa fila ficará retido e não será enviado à GPU até que Close seja chamado na lista de comandos. O suporte à execução assíncrona inclui listas de comandos gráficos (diretas), de computação e DMA. A execução assíncrona de listas de comandos tem as seguintes restrições:
  • Uma lista de comandos aberta executada de forma assíncrona em uma fila não pode ser executada na mesma fila ou em qualquer outra antes que a lista seja fechada. Depois de fechada, ela pode ser executada repetidamente, da forma tradicional.
  • O thread responsável por concluir uma lista de comandos executada de forma assíncrona não deve usar a fila na qual essa lista foi executada até que a lista seja fechada. O uso da fila pelo thread pode levar a deadlocks.
  • Não há proteção contra um thread executar uma lista de comandos ao mesmo tempo em que outro thread está gravando na lista. A segurança de thread é responsabilidade do título.
  • Todas as listas de comandos executadas de forma assíncrona devem ser fechadas antes de uma chamada a Suspend. Atualmente, o suporte à captura do PIX exige que todas as listas de comandos executadas de forma assíncrona sejam fechadas antes que a chamada a Present seja feita.
  • Ao gravar comandos na lista depois de executá-la, evite condições de falha de qualquer tipo. Uma falha após a execução produzirá uma lista parcialmente executada que não pode ser concluída. Não é possível identificar os locais de falhas de memória insuficiente e de validação; por esse motivo, o que foi realmente enviado à GPU é incerto, e os recursos referenciados (barreiras, por exemplo) ficam efetivamente em um estado indeterminado.
Após a execução, os comandos gravados em uma lista de comandos são enviados automaticamente à GPU, depois que cada segmento é concluído. O sinalizador D3D12XBOX_COMMAND_LIST_FLAG_DISABLE_AUTOMATIC_KICKOFFS pode ser especificado durante a criação da lista de comandos para desabilitar esse envio automático. Para obter mais informações, consulte D3D12XBOX_COMMAND_LIST_FLAGS. Para iniciar um envio imediato dos comandos gravados (útil para sincronização dentro da lista de comandos), chame o método de lista de comandos KickoffX ou KickoffX para forçar a conclusão do segmento atual e seu envio para processamento. Close enviará o segmento final da lista de comandos e qualquer outro trabalho pendente na fila de execução.

Requisitos

Cabeçalho: d3d12_x.h Biblioteca: d3d12_x.lib Plataformas com suporte: família XBOX One

Confira também

ID3D12CommandQueue
Last modified on October 6, 2026