> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DispatchMeshX (consoles XBOX Series)

> Um método de extensão que permite um controle mais refinado das inicializações do Mesh Shader.

Um método de extensão que permite um controle mais refinado das inicializações do Mesh Shader. É possível inicializar o Amplification Shader ou o Mesh Shader do PSO associado no momento.

## Sintaxe

```cpp theme={null}
void DispatchMeshX(  
         UINT ThreadGroupCountX,  
         UINT64 Flags,  
         UINT64 IndirectArgsPointer,  
         UINT64 PayloadPointer  
)  
```

### Parâmetros

*ThreadGroupCountX*   \_In\_\
Tipo: UINT

Todas as invocações do Mesh Shader no XBOX são unidimensionais. Este parâmetro especifica quantos grupos de threads devem ser inicializados.

*Flags*   \_In\_\
Tipo: UINT64

Valor 0: inicializar grupos de threads do Mesh Shader
Valor 1: inicializar grupos de threads do Amplification Shader

*IndirectArgsPointer*   \_In\_\
Tipo: UINT64

Ponteiro para os argumentos indiretos de destino nos quais o Amplification Shader gravará.\
Os registros gravados têm o formato D3D12XBOX\_INDIRECT\_ARGUMENT\_TYPE\_DISPATCH\_MESH\_X.\
Se for usado em uma chamada de execução indireta, o ponteiro precisará apontar para dentro de um recurso de buffer com o sinalizador D3D12XBOX\_RESOURCE\_FLAG\_ALLOW\_INDIRECT\_BUFFER.\
Esse ponteiro precisa estar alinhado a 256 B e não pode ter mais de 40 bits definidos (a ABI o desloca 8 bits para a direita em um valor de 32 bits antes de passá-lo ao sombreador).\
O ponteiro deve ser 0 quando o Amplification Shader não estiver selecionado.\
O buffer deve ter tamanho suficiente para comportar ThreadGroupCountX instâncias de D3D12XBOX\_INDIRECT\_ARGUMENT\_TYPE\_DISPATCH\_MESH\_X.

*PayloadPointer*   \_In\_\
Tipo: UINT64

Ponteiro para o destino ou a origem do armazenamento de payload do Mesh Shader.\
Se o Amplification Shader estiver selecionado, ele apontará para o local em que o payload por grupo de threads é gravado. O ponteiro de payload deve estar alinhado a 256 B quando usado como destino (a ABI o desloca 8 bits para a direita em um valor de 32 bits antes de passá-lo ao sombreador).\
Se o Mesh Shader estiver selecionado, ele apontará para a origem do payload usado no Mesh Shader. O ponteiro de payload deve estar alinhado a 16 B quando usado como origem.\
Em ambos os casos, o buffer não pode ter mais de 40 bits definidos.

### Valor retornado

Tipo: void

## Comentários

Quando um DispatchMesh comum é chamado, o driver usa essencialmente essa funcionalidade, mas fornece a assinatura de comando de execução indireta e os buffers temporários.

Aqui estão alguns exemplos de uso

1. Inicializando apenas um Mesh Shader com um ponteiro de payload passado manualmente
   ```cpp theme={null}
           pCmdList->DispatchMeshX(NUM_THREADGROUPS,
               0,
               0,
               (UINT64)m_payloaData);
   ```

2. Inicializando um Amplification Shader e, em seguida, executando indiretamente o Mesh Shader
   ```cpp theme={null}
           // Run the amp shader
               pCmdList->DispatchMeshX(numTGs,
                   flags,
                   pointerToIndirectArg,
                   pointerToPayload);

               // Barrier
               auto uavBarrier = CD3DX12_RESOURCE_BARRIER::UAV(nullptr);
               pCmdList->ResourceBarrier(1, &uavBarrier);

               // Run the MS
               pCmdList->ExecuteIndirect(
                   m_pCommandSignature,
                   NUM_INDIRECT_COMMANDS_COUNT,    // MaxCommandCount
                   m_indirectArgsStorage,          // pArgumentBuffer
                   0,                              // ArgumentBufferOffset
                   nullptr,                        // pCountBuffer
                   0);
   ```

## Requisitos

**Cabeçalho:** d3d12\_xs.h

**Biblioteca:** d3d12\_xs.lib\
**Plataformas compatíveis**: consoles XBOX Series

## Confira também

[ID3D12GraphicsCommandList](/pt-BR/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/id3d12graphicscommandlist_xs)


## Related topics

- [DispatchRays (XBOX Series consoles)](/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_dispatchrays_public.md)
- [D3D12_MESH_SHADER_TIER (XBOX Series consoles)](/reference/graphics/d3d12_xs/enums/d3d12_mesh_shader_tier_xs.md)
- [D3D12_DISPATCH_RAYS_DESC (XBOX Series consoles)](/reference/graphics/d3d12/structs/d3d12_dispatch_rays_desc_public.md)
- [Dispatch](/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_dispatch_public.md)
- [Mesh Shader pipeline overview](/build/core-features/graphics/newfeatures/ms/ms-overview.md)
