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 : voidRemarques
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é.
