Sintaxe
Parâmetros
pBundleBuffer _In_Tipo: ID3D12Resource* Especifica um ponteiro para um recurso de buffer que contém dados de pacote. O buffer deve ter sido criado com o atributo D3D12XBOX_RESOURCE_FLAG_ALLOW_INDIRECT_BUFFER definido; caso contrário, o buffer deve estar localizado em memória PAGE_GPU_EXECUTE. BundleBufferOffset _In_
Tipo: UINT Deslocamento, em bytes, do início do buffer de pacote até o começo dos dados do pacote. Deve ser um múltiplo de 4. MaxSize _In_
Tipo: UINT O tamanho do pacote pode ser especificado de uma das duas maneiras:
- Se pSizeBuffer for NULL, MaxSize especificará o número exato de bytes do pacote a ser executado.
- Se pSizeBuffer não for NULL, MaxSize especificará o número máximo de bytes a serem executados. Se o tamanho especificado por pSizeBuffer exceder MaxSize no momento da execução na GPU, a GPU descartará completamente a execução do pacote. Isso é útil para evitar um travamento da GPU quando ela é usada para criar o pacote e os dados excedem o orçamento alocado.
Tipo: ID3D12Resource* Especifica um recurso de buffer (ID3D12Resource) que contém um tamanho de 32 bits, em bytes. Isso é usado para tamanhos gerados pela GPU. SizeBufferOffset _In_
Tipo: UINT Deslocamento, em bytes, do início do buffer de tamanho até o tamanho de 32 bits, em bytes. PredicationBufferOffset _In_
Tipo: UINT Reservado para uso futuro; deve ser zero.
Valor retornado
Tipo: voidComentários
Essa API habilita a funcionalidade Build-Your-Own-Bundles, pela qual um chamador pode criar buffers de comandos da GPU usando seu próprio código de CPU ou GPU, em runtime ou offline. A memória do pacote também pode ser gerenciada explicitamente. Esses dois atributos contrastam com a API ExecuteBundle padrão, em que os pacotes só podem ser criados em runtime, na CPU, usando APIs do D3D e com uma sobrecarga significativa de memória de objetos. A funcionalidade Build-Your-Own-Bundles pode conter os mesmos tipos de desenhos e alterações de estado que podem ser registrados em pacotes comuns. Esse conjunto inclui todas as APIs do D3D de alta frequência, mas nenhuma API do D3D de baixa frequência, como as usadas para definir destinos de renderização ou limpezas. O processador de comandos da GPU do XBOX One implementa nativamente essas APIs com codificações de pacotes muito simples. Para criar os dados do buffer de comandos, use as definições D3D12XBOX_PACKET_* no cabeçalho d3d12_x.h em conjunto com a introspecção do objeto de estado de pipeline e do objeto Root Signature. Use as funções embutidas em d3d12_x.h como referência para fazer isso; nenhuma documentação adicional é fornecida além do que está no cabeçalho. Os dados de pacote de um objeto de estado de pipeline são válidos apenas durante o tempo de vida desse objeto de estado de pipeline. Isso significa que, se um pacote for criado offline, todas as invocações de SetPipelineState dentro desse pacote deverão ser corrigidas para refletir as versões desses objetos de estado de pipeline criadas em runtime, antes que o pacote possa ser executado pela GPU. Da mesma forma, quaisquer dados de ponteiro registrados offline em um pacote (como para tabelas de descritores) devem ser corrigidos em runtime, antes da execução. ExecuteIndirectBundleX não pode ser invocado a partir de um pacote. Observe o uso de NopX para adicionar preenchimento sem operação a uma lista de comandos. A partir do GDK de março de 2024, ExecuteIndirectBundleX pode ser usado em listas de comandos de computação assíncrona nos consoles XBOX Series. Quando usado em computação assíncrona, os buffers de contagem e de pacote devem residir no mesmo ID3D12Resource; além disso, o valor de contagem deve estar localizado 4 bytes antes do conteúdo do pacote, ou seja, BundleBufferOffset deve ser igual a SizeBufferOffset mais 4 bytes. Para executar uma lista de comandos antes que ela seja fechada, consulte CreateCommandListX e CloseBundleX.Requisitos
Cabeçalho: d3d12_x.h *Biblioteca: d3d12_x.lib Plataformas com suporte: família XBOX OneConfira também
ID3D12GraphicsCommandListExecuteBundle
