> ## 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)

> Méthode d'extension permettant un contrôle plus précis des lancements de nuanceurs de maillage (Mesh Shader).

Méthode d'extension permettant un contrôle plus précis des lancements de nuanceurs de maillage (Mesh Shader). Elle permet de lancer soit le nuanceur d'amplification (Amplification Shader), soit le nuanceur de maillage du PSO actuellement lié.

## Syntaxe

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

### Paramètres

*ThreadGroupCountX*   \_In\_\
Type : UINT

Tous les appels de nuanceur de maillage sur XBOX sont unidimensionnels. Ce paramètre spécifie le nombre de groupes de threads à lancer.

*Flags*   \_In\_\
Type : UINT64

Valeur 0 : lancer des groupes de threads de nuanceur de maillage
Valeur 1 : lancer des groupes de threads de nuanceur d'amplification

*IndirectArgsPointer*   \_In\_\
Type : UINT64

Pointeur vers les arguments indirects de destination dans lesquels le nuanceur d'amplification doit écrire.\
Les enregistrements écrits sont de la forme D3D12XBOX\_INDIRECT\_ARGUMENT\_TYPE\_DISPATCH\_MESH\_X.\
S'il doit être utilisé dans un appel ExecuteIndirect, le pointeur doit pointer à l'intérieur d'une ressource de mémoire tampon dotée de l'indicateur D3D12XBOX\_RESOURCE\_FLAG\_ALLOW\_INDIRECT\_BUFFER.\
Ce pointeur doit être aligné sur 256 octets et ne peut pas comporter plus de 40 bits définis (l'ABI le décale de 8 bits vers la droite pour en faire une valeur 32 bits avant de le transmettre au nuanceur).\
Le pointeur doit être 0 lorsque le nuanceur d'amplification n'est pas sélectionné.\
La mémoire tampon doit être suffisamment grande pour contenir ThreadGroupCountX instances de D3D12XBOX\_INDIRECT\_ARGUMENT\_TYPE\_DISPATCH\_MESH\_X.

*PayloadPointer*   \_In\_\
Type : UINT64

Pointeur vers la destination ou la source du stockage de la charge utile du nuanceur de maillage.\
Si le nuanceur d'amplification est sélectionné, il pointe vers l'emplacement où la charge utile par groupe de threads est écrite. Le pointeur de charge utile doit être aligné sur 256 octets lorsqu'il est utilisé comme destination (l'ABI le décale de 8 bits vers la droite pour en faire une valeur 32 bits avant de le transmettre au nuanceur).\
Si le nuanceur de maillage est sélectionné, il pointe vers la source de la charge utile utilisée dans le nuanceur de maillage. Le pointeur de charge utile doit être aligné sur 16 octets lorsqu'il est utilisé comme source.\
Dans les deux cas, la mémoire tampon ne peut pas comporter plus de 40 bits définis.

### Valeur de retour

Type : void

## Remarques

Lorsqu'un DispatchMesh standard est appelé, le pilote utilise essentiellement cette fonctionnalité, mais fournit la signature de commande ExecuteIndirect et les mémoires tampons temporaires.

Voici quelques exemples d'utilisation

1. Lancement d'un nuanceur de maillage uniquement, avec un pointeur de charge utile transmis manuellement
   ```cpp theme={null}
           pCmdList->DispatchMeshX(NUM_THREADGROUPS,
               0,
               0,
               (UINT64)m_payloaData);
   ```

2. Lancement d'un nuanceur d'amplification, puis ExecuteIndirect du nuanceur de maillage
   ```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);
   ```

## Configuration requise

**En-tête :** d3d12\_xs.h

**Bibliothèque :** d3d12\_xs.lib\
**Plateformes prises en charge :** consoles XBOX Series

## Voir aussi

[ID3D12GraphicsCommandList](/fr/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/id3d12graphicscommandlist_xs)


## Related topics

- [Répertoire des rubriques NDA : liens actifs vers Microsoft Learn](/fr/nda/nda-topic-directory.md)
- [DispatchRays (consoles XBOX Series)](/fr/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist4/methods/id3d12graphicscommandlist4_dispatchrays_public.md)
- [D3D12_MESH_SHADER_TIER (consoles XBOX Series)](/fr/reference/graphics/d3d12_xs/enums/d3d12_mesh_shader_tier_xs.md)
- [D3D12_DISPATCH_RAYS_DESC (consoles XBOX Series)](/fr/reference/graphics/d3d12/structs/d3d12_dispatch_rays_desc_public.md)
- [Dispatch](/fr/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_dispatch_public.md)
