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

Méthode d'extension permettant un contrôle plus précis des lancements de nuanceurs de maillage (Mesh Shader). Il est possible de lancer soit le nuanceur d'amplification, 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

Toutes les invocations de nuanceur de maillage sur XBOX sont unidimensionnelles. 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 écrit.\
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 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 dans une valeur de 32 bits avant de le transmettre au nuanceur).\
Le pointeur doit être 0 lorsque le nuanceur d'amplification n'est pas sélectionné.\
Le tampon doit être suffisamment grand 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 de chaque 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 dans une valeur de 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, le tampon ne peut pas comporter plus de 40 bits définis.

### Valeur de retour

Type : void

## Remarques

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

Voici quelques exemples d'utilisation

1. Lancement d'un nuanceur de maillage seul 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 exécution indirecte (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-CA/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/id3d12graphicscommandlist_xs)


## Related topics

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