D3DDDI_SYNCHRONIZATIONOBJECTINFO2 structure (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 {
      void D3DKMT_PTR(
    HANDLE unnamedParam1,
    Event  unnamedParam2
  );
    } CPUNotification;
    struct {
      D3DKMT_ALIGN64 UINT64                 InitialFenceValue;
      void                                  D3DKMT_PTR(
    VOID                        *unnamedParam1,
    FenceValueCPUVirtualAddress unnamedParam2
  );
      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                                  D3DKMT_PTR(
    VOID                        *unnamedParam1,
    FenceValueCPUVirtualAddress unnamedParam2
  );
      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 Fence .

Fence.FenceValue

Valeur 64 bits qui spécifie la valeur de clôture initiale.

CPUNotification

Structure qui contient des informations sur une notification d’UC. Si le membre Type est égal à D3DDDI_CPU_NOTIFICATION, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure CPUNotification .

void D3DKMT_PTR( HANDLE unnamedParam1, Event unnamedParam2)

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 MonitoredFence .

Les clôtures surveillées ne peuvent être partagées qu’à l’aide de handles NT pour des raisons de sécurité. L’indicateur NtSecuritySharing doit donc être défini lors de l’utilisation d’une clôture surveillée.

Pris en charge à partir de Windows 10.

MonitoredFence.InitialFenceValue

[in] Valeur 64 bits qui spécifie la valeur de clôture initiale.

Pris en charge à partir de Windows 10.

void D3DKMT_PTR( VOID *unnamedParam1, FenceValueCPUVirtualAddress unnamedParam2)

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 la limite No64BitAtomics , cette adresse pointe vers une valeur sous-jacente de 32 bits ou de 64 bits. Si l’appareil ne prend pas en charge la cohérence du cache avec le processeur, 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 le processeur.

Pris en charge à partir de Windows 10.

MonitoredFence.EngineAffinity

[in] Champ bit, où chaque position de bit (à partir de zéro) définit un index de carte physique dans un lien de carte graphique (LDA) où l’adresse virtuelle GPU sera validée. Zéro signifie que l’adresse virtuelle GPU est validée sur toutes les cartes physiques.

Pris en charge à partir de Windows 10.

MonitoredFence.Padding

PeriodicMonitoredFence

Structure qui contient des informations sur une clôture surveillée périodiquement. Si le membre Type est égal à D3DDDI_PERIODIC_MONITORED_FENCE, l’union dans D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contient une structure MonitoredFence .

Pris 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 de VSync – paramètre Heure). La valeur Time ne peut pas être supérieure à un intervalle VSync (1 / DisplayModeRefresh). L’heure est spécifiée en unités de 100n.

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

[in] Mappage en lecture seule de la valeur de clôture pour le GPU

PeriodicMonitoredFence.EngineAffinity

[in] Définit les cartes physiques dans lesquelles l’appliance d’évaluation gpu sera mappée

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é s’il existe actuellement un handle partagé. Le pilote doit partager des objets de synchronisation à l’aide de handles NT. Il doit définir le D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS ::NtSecuritySharing pour indiquer que l’objet sera partagé à l’aide de handles NT et appeler D3DKMTShareObjects pour obtenir un handle NT. L’utilisation de handles globaux n’est pas sécurisée. N’importe quel processus peut deviner un handle global et ouvrir des objets partagés. Les handles globaux sont pris en charge uniquement pour des raisons de compatibilité avec les anciens runtimes D3D.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7
En-tête d3dukmdt.h (include D3dumddi.h, D3dkmddi.h)

Voir aussi

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2