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

# ExecuteIndirectBundleX (famille XBOX One)

> Exécute indirectement un bundle à partir d'un tampon, un bundle étant une représentation sous forme de tampon de commandes GPU de dessins GPU et de définitions d'état. Cette API permet de.

Exécute indirectement un bundle à partir d'un tampon, un bundle étant une représentation sous forme de tampon de commandes GPU de dessins GPU et de définitions d'état. Cette API permet de créer et de gérer des bundles plus efficacement qu'avec l'API Direct3d 12 standard [ExecuteBundle](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12graphicscommandlist-executebundle).

## Syntaxe

```cpp theme={null}
void ExecuteIndirectBundleX(  
         ID3D12Resource* pBundleBuffer,  
         UINT BundleBufferOffset,  
         UINT MaxSize,  
         ID3D12Resource* pSizeBuffer,  
         UINT SizeBufferOffset,  
         UINT PredicationBufferOffset  
)  
```

### Paramètres

*pBundleBuffer*   \_In\_\
Type : [ID3D12Resource](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/nn-d3d12-id3d12resource)\*

Spécifie un pointeur vers une ressource de tampon qui contient des données de bundle. Le tampon doit avoir été créé avec l'attribut **D3D12XBOX\_RESOURCE\_FLAG\_ALLOW\_INDIRECT\_BUFFER** défini; sinon, le tampon doit se trouver dans la mémoire **PAGE\_GPU\_EXECUTE**.

*BundleBufferOffset*   \_In\_\
Type : UINT

Décalage, en octets, entre le début du tampon de bundle et le début des données du bundle. Doit être un multiple de 4.

*MaxSize*   \_In\_\
Type : UINT

La taille du bundle peut être spécifiée de l'une des deux façons suivantes :

1. Si *pSizeBuffer* est NULL, *MaxSize* spécifie le nombre exact d'octets du bundle à exécuter.

2. Si *pSizeBuffer* n'est pas NULL, *MaxSize* spécifie le nombre maximal d'octets à exécuter. Si la taille spécifiée par *pSizeBuffer* dépasse *MaxSize* au moment de l'exécution sur le GPU, le GPU abandonne complètement l'exécution du bundle. Cela est utile pour éviter un blocage du GPU lorsque celui-ci est utilisé pour créer le bundle et que les données dépassent le budget alloué.

La taille des bundles ne peut pas dépasser 4 Mo.

*pSizeBuffer*   \_In\_opt\_\
Type : ID3D12Resource\*

Spécifie une ressource de tampon ([ID3D12Resource](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/nn-d3d12-id3d12resource)) qui contient une taille 32 bits, en octets. Cela sert pour les tailles générées par le GPU.

*SizeBufferOffset*   \_In\_\
Type : UINT

Décalage, en octets, entre le début du tampon de taille et la taille 32 bits, en octets.

*PredicationBufferOffset*   \_In\_\
Type : UINT

Réservé pour une utilisation future; doit être zéro.

### Valeur de retour

Type : void

## Remarques

Cette API active la fonctionnalité Build-Your-Own-Bundles, qui permet à un appelant de créer des tampons de commandes GPU à l'aide de son propre code processeur ou GPU, à l'exécution ou hors ligne. La mémoire des bundles peut également être gérée explicitement. Ces deux attributs contrastent avec l'API **ExecuteBundle** standard, où les bundles ne peuvent être créés qu'à l'exécution, sur le processeur, à l'aide des API D3D, et avec une surcharge mémoire importante liée aux objets.

La fonctionnalité Build-Your-Own-Bundles peut contenir les mêmes types de dessins et de changements d'état que ceux qui peuvent être enregistrés dans des bundles ordinaires. Cet ensemble comprend toutes les API D3D à haute fréquence, mais aucune API D3D à basse fréquence, comme celles qui définissent les cibles de rendu ou les effacements. Le processeur de commandes GPU de la XBOX One implémente nativement ces API avec des encodages de paquets très simples. Pour créer les données du tampon de commandes, utilisez les définitions D3D12XBOX\_PACKET\_\* de l'en-tête d3d12\_x.h conjointement avec l'introspection des objets d'état de pipeline et des objets Root Signature. Utilisez les fonctions inline de d3d12\_x.h comme référence pour savoir comment procéder; aucune documentation supplémentaire n'est fournie au-delà de ce qui se trouve dans l'en-tête.

Les données de paquet d'un objet d'état de pipeline ne sont valides que pendant la durée de vie de cet objet d'état de pipeline. Cela signifie que si un bundle est créé hors ligne, tous les appels à [SetPipelineState](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12graphicscommandlist-setpipelinestate) dans ce bundle doivent être corrigés pour refléter les versions de ces objets d'état de pipeline créées à l'exécution, avant que le bundle puisse être exécuté par le GPU. De même, toute donnée de pointeur enregistrée hors ligne dans un bundle (comme pour les tables de descripteurs) doit être corrigée à l'exécution, avant l'exécution.

**ExecuteIndirectBundleX** ne peut pas elle-même être appelée à partir d'un bundle.

Notez l'utilisation de [NopX](/fr-CA/reference/graphics/d3d12_x/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_nopx) pour ajouter un remplissage sans opération à une liste de commandes.

À partir du GDK de mars 2024, **ExecuteIndirectBundleX** peut être utilisée sur les listes de commandes de calcul asynchrone sur les consoles XBOX Series. Lorsqu'elle est utilisée en calcul asynchrone, les tampons de nombre et de bundle doivent résider dans la même ID3D12Resource; de plus, la valeur de nombre doit se trouver 4 octets avant le contenu du bundle, c'est-à-dire que *BundleBufferOffset* doit être égal à *SizeBufferOffset* plus 4 octets.

Pour exécuter une liste de commandes avant sa fermeture, consultez [CreateCommandListX](/fr-CA/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_createcommandlistx) et [CloseBundleX](/fr-CA/reference/graphics/d3d12_x/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_closebundlex).

## Configuration requise

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

\***Bibliothèque :** d3d12\_x.lib

**Plateformes prises en charge :** famille XBOX One

## Voir aussi

[ID3D12GraphicsCommandList](/fr-CA/reference/graphics/d3d12_x/interfaces/id3d12graphicscommandlist/id3d12graphicscommandlist)\
[ExecuteBundle](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12graphicscommandlist-executebundle)


## Related topics

- [Répertoire des rubriques NDA : liens actifs vers Microsoft Learn](/fr-CA/nda/nda-topic-directory.md)
- [ExecuteBundle](/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_executebundle_public.md)
- [Compiler et exécuter votre premier titre console GDKX](/fr/home/build-first-title/first-console-title-walkthrough.md)
- [Documentation de développement de jeux XBOX](/fr/index.md)
