structure D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS (d3dukmdt.h)
La structure D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS identifie les attributs d’un objet de synchronisation.
Syntaxe
typedef struct _D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS {
union {
struct {
UINT Shared : 1;
UINT NtSecuritySharing : 1;
UINT CrossAdapter : 1;
UINT TopOfPipeline : 1;
UINT NoSignal : 1;
UINT NoWait : 1;
UINT NoSignalMaxValueOnTdr : 1;
UINT NoGPUAccess : 1;
UINT SignalByKmd : 1;
UINT Unused : 1;
UINT UnwaitCpuWaitersOnlyOnDestroy : 1;
#if ...
UINT Reserved : 20;
#elif
UINT Reserved : 21;
#elif
UINT Reserved : 22;
#elif
UINT Reserved : 23;
#elif
UINT Reserved : 28;
#else
UINT Reserved : 29;
#endif
UINT D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0 : 1;
};
UINT Value;
};
} D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS;
Membres
Shared
Valeur UINT qui spécifie si l’objet de synchronisation est partagé.
Si partagé est défini sur 1 (TRUE), l’objet de synchronisation est partagé. Si partagé est défini sur zéro (FALSE), l’objet de synchronisation n’est pas partagé. Pour plus d’informations, consultez la section Remarques.
NtSecuritySharing
Valeur UINT qui spécifie si l’objet de synchronisation est partagé avec un handle NT, ce qui signifie qu’il n’a pas de handle global D3DKMT_HANDLE en mode noyau à la ressource.
Si NtSecuritySharing a la valeur 1 (TRUE), l’objet de synchronisation est partagé, mais n’a pas de handle de D3DKMT_HANDLE global sur la ressource.
Note
Si NtSecuritySharing est défini sur 1, partagé doit être défini sur 1. Pour plus d’informations, consultez la section Remarques.
Prise en charge à partir de Windows 8.
CrossAdapter
Valeur UINT qui spécifie si l’objet de synchronisation est un objet de ressource d’adaptateur croisé partagé sur un système hybride.
Si CrossAdapter a la valeur 1 (TRUE), l’objet de synchronisation est un objet croisé partagé. Si CrossAdapter a la valeur zéro (FALSE), l’objet de synchronisation n’est pas un objet inter-adaptateur partagé.
TopOfPipeline
Valeur | Signification |
---|---|
VRAI | Spécifie si l’objet de synchronisation est signalé dès que le contenu de la mémoire tampon de commande précédant celle-ci est entièrement copié dans le pipeline GPU, mais pas nécessairement l’exécution terminée. Ce comportement permet de réutiliser les mémoires tampons de commande dès que possible. |
FAUX | L’objet de synchronisation est signalé après l’exécution des mémoires tampons de commande précédentes. |
Cette valeur ne peut être définie que sur 1 (TRUE) pour les objets de synchronisation de clôture surveillés, et elle doit être définie sur zéro (FALSE) pour tous les autres types d’objets de synchronisation.
Prise en charge à partir de Windows 10.
NoSignal
Valeur | Signification |
---|---|
VRAI | Spécifie l’appareil sur lequel cet objet de synchronisation est créé ou ouvert sur lequel il ne peut envoyer que des commandes d’attente. Une tentative d’envoi d’une opération de signal lorsque cet indicateur est défini retourne STATUS_ACCESS_DENIED. |
FAUX | L’objet de synchronisation peut être signalé. |
Cette valeur ne peut être définie que sur 1 (TRUE) pour les objets de synchronisation de clôture surveillés, et elle doit être définie sur zéro (FALSE) pour tous les autres types d’objets de synchronisation.
Prise en charge à partir de Windows 10.
NoWait
Valeur | Signification |
---|---|
VRAI | Spécifie l’appareil sur lequel cet objet de synchronisation est créé ou ouvert sur lequel il peut uniquement envoyer des commandes de signal. Une tentative d’envoi d’une opération d’attente lorsque cet indicateur est défini retourne STATUS_ACCESS_DENIED. |
FAUX | L’objet de synchronisation peut être attendu. |
Cette valeur ne peut être définie que sur 1 (TRUE) pour les objets de synchronisation de clôture surveillés, et elle doit être définie sur zéro (FALSE) pour tous les autres types d’objets de synchronisation.
Cet indicateur ne peut pas être défini simultanément avec indicateur de NoSignal.
Prise en charge à partir de Windows 10.
NoSignalMaxValueOnTdr
Valeur | Signification |
---|---|
VRAI | Indique au planificateur GPU de contourner la signalisation mentionnée ci-dessus de la clôture surveillée à la valeur maximale dans les cas TDR. |
FAUX | Le planificateur GPU signale la clôture surveillée à la valeur maximale lorsqu’un appareil qui peut potentiellement signaler qu’il est affecté par la réinitialisation GPU (TDR). |
Prise en charge à partir de Windows 10.
NoGPUAccess
Quand elle est définie, la clôture ne sera pas mappée dans l’espace d’adressage virtuel GPU et sera toujours stockée sous forme de valeur 64 bits (quelle que soit la limite de l’adaptateur). Seules les opérations de signal/d’attente basées sur les paquets sont prises en charge. Prise en charge à partir de Windows 10.
SignalByKmd
Quand elle est définie, la clôture peut être signalée par le pilote en mode noyau (KMD). Cet indicateur ne peut être utilisé qu’avec des objets D3DDDI_CPU_NOTIFICATION. Prise en charge à partir de Windows 11 (WDDM 3.0).
Unused
Ce membre n’est pas utilisé et doit être défini sur zéro. Disponible à partir de Windows 11, version 22H2 (WDDM 3.1).
UnwaitCpuWaitersOnlyOnDestroy
Quand il est défini, les serveurs d’un objet de synchronisation partagée sur l’UC sont déblocés uniquement lorsque l’objet de synchronisation partagée est finalement détruit. Par défaut, les serveurs d’UC sont déblocés lorsqu’un objet de synchronisation local est détruit, mais l’objet de synchronisation partagé principal est toujours ouvert par un autre objet de synchronisation local. Prise en charge à partir de Windows 11, version 24H2 (WDDM 3.2).
Reserved
Ce membre est réservé et doit être défini sur zéro.
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0
Ce membre est réservé et doit être défini sur zéro.
Prise en charge à partir de Windows 8.
Value
Membre de l’union contenue dans D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS qui peut contenir une valeur 32 bits qui identifie les attributs d’un objet de synchronisation.
Remarques
Les objets à partager à l’aide de la fonctionD3DKMTShareObjectsdoivent d’abord être créés avec le jeu de valeurs d’indicateur NtSecuritySharing. Cette valeur d’indicateur est disponible dans les structures D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGSet D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS.
Les pilotes doivent suivre ces instructions sur les indicateurs de D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS :
Si l’objet de synchronisation n’est pas partagé, définissez partagé et NtSecuritySharing sur 0.
Si l’objet de synchronisation est partagé avec un type de données D3DKMT_HANDLE, définissez partagé = 1 et NtSecuritySharing = 0.
Si l’objet de synchronisation est partagé avec un handle NT au processus (et sans handle global D3DKMT_HANDLE en mode noyau sur la ressource), définissez partagé = 1 et NtSecuritySharing = 1.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 7 |
d’en-tête | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |
Voir aussi
D3DDDI_SYNCHRONIZATIONOBJECTINFO2