Skip to main content
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; doit être alignée sur 1 Ko ou nulle. Définir cette valeur à 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 0 si l’adresse est nulle. SizePerWaveInBytes   _In_
Type : UINT
Taille de l’espace de travail par vague; doit être alignée sur 1 Ko, doit être inférieure ou égale à la taille totale de l’espace de travail et doit être 0 si l’adresse est nulle.

Valeur renvoyée

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 découle 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 façon à ne pouvoir accueillir que quelques vagues par SIMD. Cela signifie que l’occupation est faible lorsque la mémoire de travail est activée dans les nuanceurs. Par défaut, puisqu’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 nuanceurs utilisant de la mémoire de travail ne peuvent pas du tout être utilisés en calcul asynchrone. Les développeurs peuvent remplacer les tailles de mémoire de travail au moyen de 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 chevauchement du travail en graphiques et en 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 s’assurer qu’aucune mémoire n’est réutilisée lorsque le registre tmpring_size est reprogrammé. Il est possible d’interroger la taille de mémoire de travail requise par vague à l’aide des API suivantes
Voici un exemple de la façon dont elle peut être définie, en permettant par exemple à 8 vagues de partager l’espace de travail (notez qu’en pratique, c’est trop peu de vagues)
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
Last modified on October 6, 2026