structure D3DDDI_SYNCHRONIZATIONOBJECTINFO2 (d3dukmdt.h)
La structure D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient des informations sur un objet de synchronisation de deuxième génération.
Syntaxe
typedef struct _D3DDDI_SYNCHRONIZATIONOBJECTINFO2 {
D3DDDI_SYNCHRONIZATIONOBJECT_TYPE Type;
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags;
union {
struct {
BOOL InitialState;
} SynchronizationMutex;
struct {
UINT MaxCount;
UINT InitialCount;
} Semaphore;
struct {
D3DKMT_ALIGN64 UINT64 FenceValue;
} Fence;
struct {
HANDLE Event;
} CPUNotification;
struct {
D3DKMT_ALIGN64 UINT64 InitialFenceValue;
VOID *FenceValueCPUVirtualAddress;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
UINT EngineAffinity;
UINT Padding;
} MonitoredFence;
struct {
D3DKMT_HANDLE hAdapter;
D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId;
D3DKMT_ALIGN64 UINT64 Time;
VOID *FenceValueCPUVirtualAddress;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
UINT EngineAffinity;
UINT Padding;
} PeriodicMonitoredFence;
struct {
D3DKMT_ALIGN64 UINT64 Reserved[8];
} Reserved;
};
D3DKMT_HANDLE SharedHandle;
} D3DDDI_SYNCHRONIZATIONOBJECTINFO2;
Membres
Type
[in] Valeur de type D3DDDI_SYNCHRONIZATIONOBJECT_TYPE qui indique le type d’objet de synchronisation.
Flags
[in] Structure D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS qui spécifie, dans les indicateurs de champ binaire, les attributs de l’objet de synchronisation.
SynchronizationMutex
Structure qui contient des informations sur un mutex de synchronisation. Si le membre type
SynchronizationMutex.InitialState
Valeur booléenne qui indique si le mutex de synchronisation appartient initialement à un objet. La valeur TRUE indique que le mutex est détenu ; FALSE indique que le mutex n’est pas détenu.
Semaphore
Structure qui contient des informations sur un sémaphore. Si le membre type
Semaphore.MaxCount
Nombre maximal d’événements qu’un objet peut attendre.
Semaphore.InitialCount
Nombre initial d’événements qu’un objet attend.
Fence
Structure qui contient des informations sur une clôture. Si le membre type
Fence.FenceValue
Valeur 64 bits qui spécifie la valeur de clôture initiale.
CPUNotification
Structure qui contient des informations sur une notification processeur. Si le membre type
CPUNotification.Event
Handle de l’événement de notification du processeur.
MonitoredFence
Structure qui contient des informations sur une clôture surveillée. Si le membre type
Les clôtures surveillées peuvent être partagées uniquement à l’aide de poignées NT pour des raisons de sécurité. Par conséquent, l’indicateur de de partage NtSecuritySharing
Prise en charge à partir de Windows 10.
MonitoredFence.InitialFenceValue
[in] Valeur 64 bits qui spécifie la valeur de clôture initiale.
Prise en charge à partir de Windows 10.
MonitoredFence.FenceValueCPUVirtualAddress
[out] Mappage en lecture seule de la valeur de clôture pour l’UC. Il s’agit d’une adresse en mode utilisateur lisible à partir du processus qui a créé l’objet de clôture supervisé. Pour les plateformes 32 bits qui prennent en charge les lectures atomiques 64 bits via des méthodes telles que InterlockedCompareExchange64(pointer,0,0)
, le mappage est effectué en lecture-écriture au lieu de lecture seule pour éviter une violation d’accès pendant l’opération interblocée. Selon la valeur de No64BitAtomics limite, cette adresse pointe vers une valeur sous-jacente 32 bits ou 64 bits.
Prise en charge à partir de Windows 10.
MonitoredFence.FenceValueGPUVirtualAddress
[out] Mappage en lecture-écriture de la valeur de clôture pour le GPU. Un pilote peut signaler une nouvelle valeur de clôture en insérant une commande d’écriture GPU pour cette adresse dans une mémoire tampon de commande, et Dxgkrnl débloquera les serveurs pour cette valeur d’objet de clôture. Selon la valeur de No64BitAtomics limite, cette adresse pointe vers une valeur sous-jacente 32 bits ou 64 bits. Si l’appareil ne prend pas en charge la cohérence du cache avec l’UC, il ne doit pas écrire dans la valeur de clôture à l’aide de l’adresse virtuelle GPU. L’accès à la valeur de clôture doit être effectué uniquement par l’UC.
Prise en charge à partir de Windows 10.
MonitoredFence.EngineAffinity
[in] Champ de bits, où chaque position de bit (à partir de zéro) définit un index d’adaptateur physique dans un lien de l’adaptateur d’affichage de lien (LDA) où l’adresse virtuelle GPU sera validée. Zéro signifie que l’adresse virtuelle GPU sera validée sur toutes les cartes physiques.
Prise en charge à partir de Windows 10.
MonitoredFence.Padding
PeriodicMonitoredFence
Structure qui contient des informations sur une clôture surveillée périodique. Si le membre type
Prise en charge à partir de Windows 10.
VidPnTargetID
[out] ID de sortie pour lequel le compositeur souhaite recevoir des notifications.
PeriodicMonitoredFence.hAdapter
[in] Handle de l’adaptateur associé à VidPnSourceID
PeriodicMonitoredFence.VidPnTargetId
PeriodicMonitoredFence.Time
[out] Représente un décalage avant le VSync (heure du paramètre VSync – Heure). La valeur Time peut ne pas être supérieure à un intervalle VSync (1 / DisplayModeRefresh). L’heure est spécifiée en unités de 100ns.
PeriodicMonitoredFence.FenceValueCPUVirtualAddress
[in] Mappage en lecture seule de la valeur de clôture pour l’UC
PeriodicMonitoredFence.FenceValueGPUVirtualAddress
[in] Mappage en lecture seule de la valeur de clôture pour le GPU
PeriodicMonitoredFence.EngineAffinity
[in] Définit des adaptateurs physiques où l’va GPU sera mappé
PeriodicMonitoredFence.Padding
Reserved
Structure réservée à une utilisation ultérieure. Cette structure contient le membre suivant :
Reserved.Reserved[8]
SharedHandle
[out] Handle de l’objet de synchronisation partagée si un handle partagé existe actuellement. Le pilote doit partager des objets de synchronisation à l’aide de handles NT. Il doit définir l'
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 7 |
d’en-tête | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |
Voir aussi
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS
D3DDDI_SYNCHRONIZATIONOBJECT_TYPE