Skip to main content
Soumet un tableau de listes de commandes à exécuter.

Syntaxe

Paramètres

Count   _In_
Type : UINT
Nombre de listes de commandes à exécuter. ppCommandLists   _In_reads_(Count)
Type : ID3D12CommandList*
Tableau de listes de commandes ID3D12CommandList à exécuter.

Valeur de retour

Type : void

Remarques

L’application appelante doit s’assurer que le processeur graphique (GPU) n’est pas en train de lire l’une des listes de commandes soumises dans le cadre d’une exécution précédente. Pour réduire les coûts fixes associés aux commandes soumises au GPU, il est recommandé aux développeurs d’applications de regrouper les exécutions de listes de commandes.

Exécution asynchrone

Il est permis (en tant qu’extension XBOX) d’exécuter une liste de commandes avant qu’elle ne soit fermée et de continuer à y enregistrer des commandes. Si une liste de commandes exécutée sur une file d’attente n’a pas encore été fermée, tout le travail ultérieur émis vers cette file d’attente sera mis en attente et ne sera pas soumis au GPU tant que Close n’aura pas été appelée sur la liste de commandes. La prise en charge de l’exécution asynchrone inclut les listes de commandes graphiques (directes), de calcul et DMA. L’exécution asynchrone des listes de commandes est soumise aux restrictions suivantes :
  • Une liste de commandes ouverte exécutée de façon asynchrone sur une file d’attente ne peut pas être exécutée sur la même file d’attente ni sur une autre avant d’être fermée. Une fois fermée, elle peut être exécutée à plusieurs reprises, de la manière habituelle.
  • Le thread chargé de terminer une liste de commandes exécutée de façon asynchrone ne doit pas utiliser la file d’attente sur laquelle cette liste a été exécutée tant que la liste n’est pas fermée. L’utilisation de la file d’attente par le thread pourrait entraîner des interblocages.
  • Aucune protection n’est fournie contre l’exécution d’une liste de commandes par un thread pendant qu’un autre thread y enregistre des commandes. La sécurité des threads relève de la responsabilité du titre.
  • Toutes les listes de commandes exécutées de façon asynchrone doivent être fermées avant un appel à Suspend. Actuellement, la prise en charge de la capture PIX exige que toutes les listes de commandes exécutées de façon asynchrone soient fermées avant l’appel à Present.
  • Lors de l’enregistrement de commandes dans la liste après son exécution, évitez toute condition d’échec. Un échec après l’exécution produira une liste partiellement exécutée qui ne pourra pas être terminée. Il est impossible de déterminer précisément l’emplacement des échecs de mémoire insuffisante et de validation; pour cette raison, ce qui a réellement été soumis au GPU est incertain, et les ressources référencées (les barrières, par exemple) sont de fait laissées dans un état indéterminé.
Après l’exécution, les commandes enregistrées dans une liste de commandes sont soumises automatiquement au GPU, à la fin de chaque segment. L’indicateur D3D12XBOX_COMMAND_LIST_FLAG_DISABLE_AUTOMATIC_KICKOFFS peut être spécifié lors de la création de la liste de commandes pour désactiver cette soumission automatique. Pour plus d’informations, consultez D3D12XBOX_COMMAND_LIST_FLAGS. Pour lancer une soumission immédiate des commandes enregistrées (utile pour la synchronisation au sein d’une liste de commandes), appelez la méthode de liste de commandes KickoffX ou KickoffX pour forcer la fin du segment en cours et sa soumission pour traitement. Close soumettra le dernier segment de la liste de commandes ainsi que tout autre travail en attente dans la file d’attente d’exécution.

Configuration requise

En-tête : d3d12_x.h Bibliothèque : d3d12_x.lib Plateformes prises en charge : famille XBOX One

Voir aussi

ID3D12CommandQueue
Last modified on October 6, 2026