Passer au contenu principal
Permet de contrôler directement les registres SPI_TMPRING_SIZE et COMPUTE_TMPRING_SIZE et, respectivement, les anneaux graphiques et de calcul.

Syntaxe

Paramètres

Flags   _In_
Type : D3D12XBOX_SET_SHADER_SCRATCH_SPACE_FLAGS
Choisissez le calcul, les graphiques ou les deux. Destination   _In_
Type : D3D12_GPU_VIRTUAL_ADDRESS
Adresse de base de l’espace de travail (scratch) ; elle doit être alignée sur 1 Ko ou être null. Définir cette valeur sur null reprogramme les valeurs par défaut actuellement définies par le pilote. SizeBytes   _In_
Type : UINT64
Taille de l’espace de travail, alignée sur 1 Ko ; doit être égale à 0 si l’adresse est null. SizePerWaveInBytes   _In_
Type : UINT
Taille de l’espace de travail par vague ; elle doit être alignée sur 1 Ko, être inférieure ou égale à la taille totale de l’espace de travail et être égale à 0 si l’adresse est null.

Valeur de retour

Type : void

Remarques

Notre matériel prend en charge les modifications en pipeline des registres tmpring_size, mais un vidage complet du pipeline est nécessaire lorsque l’adresse mémoire sous-jacente de l’espace de travail est réutilisée. Il en résulte ce qui suit : par défaut, le pilote graphique alloue un seul espace de travail pour les graphiques et le calcul, et définit les registres tmpring_size de manière à ne pouvoir accueillir que quelques vagues par SIMD. Cela signifie que l’occupation est faible lorsque l’espace de travail est activé dans les shaders. Par défaut, comme il n’existe qu’une seule allocation de calcul, le calcul asynchrone ne peut pas être utilisé simultanément avec le calcul graphique, ce qui signifie que les shaders utilisant un espace de travail ne peuvent pas du tout être utilisés en calcul asynchrone. Les développeurs peuvent remplacer les tailles d’espace de travail via l’API spécialisée de création d’appareil XBOX, mais ne peuvent pas remplacer ce comportement. Cette API permet de reprogrammer ce comportement par défaut afin d’obtenir une occupation plus élevée et un meilleur chevauchement du travail entre les graphiques et le calcul asynchrone. Aucune synchronisation n’est effectuée en interne et aucune vérification des pointeurs mémoire n’est faite pour éviter leur réutilisation ; il est donc très important que les utilisateurs implémentent leur propre synchronisation afin de garantir qu’aucune réutilisation de mémoire ne se produit lorsque le registre tmpring_size est reprogrammé. Il est possible d’interroger la taille d’espace de travail requise par vague à l’aide des API suivantes
Voici un exemple de définition possible, permettant par exemple à 8 vagues de partager l’espace de travail (notez qu’en pratique, ce nombre de vagues est trop faible)
Enfin, le matériel ne prend pas en charge une occupation supérieure à 16 lorsque SCRATCH_EN est activé, car la programmation de tmpring_size ne permet pas de spécifier plus de 32 vagues par unité de calcul.

Configuration requise

En-tête : d3d12_xs.h Bibliothèque : d3d12_xs.lib Plateformes prises en charge : XBOX Series X|S

Voir aussi

ID3D12GraphicsCommandList6
Dernière modification le 6 octobre 2026