Partager via


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 est égal à D3DDDI_SYNCHRONIZATION_MUTEX, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure SynchronizationMutex.

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 est égal à D3DDDI_SEMAPHORE, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure sémaphore.

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 est égal à D3DDDI_FENCE, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure de clôture .

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 est égal à D3DDDI_CPU_NOTIFICATION, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure CPUNotification.

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 est égal à D3DDDI_MONITORED_FENCE, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure MonitorFence.

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 doit être défini lors de l’utilisation d’une clôture surveillée.

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 est égal à D3DDDI_PERIODIC_MONITORED_FENCE, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure MonitorFence.

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' D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS ::NtSecuritySharing pour indiquer que l’objet sera partagé à l’aide de handles NT et appelez D3DKMTShareObjects pour obtenir un handle NT. L’utilisation de handles globaux n’est pas sécurisée. Tout processus peut deviner un handle global et ouvrir un objet partagé. Les handles globaux sont pris en charge uniquement pour des raisons de compatibilité avec les anciens runtimes D3D.

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

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2