D3DDDI_SYNCHRONIZATIONOBJECTINFO2-Struktur (d3dukmdt.h)

Die D3DDDI_SYNCHRONIZATIONOBJECTINFO2-Struktur enthält Informationen zu einem Synchronisierungsobjekt der zweiten Generation.

Syntax

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;

Member

Type

[in] Ein Wert vom Typ D3DDDI_SYNCHRONIZATIONOBJECT_TYPE , der den Typ des Synchronisierungsobjekts angibt.

Flags

[in] Eine D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS-Struktur , die in Bitfeldflags Attribute des Synchronisierungsobjekts angibt.

SynchronizationMutex

Eine -Struktur, die Informationen zu einem Synchronisierungsmutex enthält. Wenn der Type-Membergleich D3DDDI_SYNCHRONIZATION_MUTEX ist, enthält die Union in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine SynchronizationMutex-Struktur .

SynchronizationMutex.InitialState

Ein boolescher Wert, der angibt, ob sich der Synchronisierungsmutex anfänglich im Besitz eines Objekts befindet. Der Wert TRUE gibt an, dass der Mutex im Besitz ist. FALSE gibt an, dass der Mutex nicht im Besitz ist.

Semaphore

Eine Struktur, die Informationen zu einem Semaphor enthält. Wenn der Typmembergleich D3DDDI_SEMAPHORE ist, enthält die Union in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine Semaphor-Struktur .

Semaphore.MaxCount

Die maximale Anzahl von Ereignissen, auf die ein Objekt warten kann.

Semaphore.InitialCount

Die anfängliche Anzahl von Ereignissen, auf die ein Objekt wartet.

Fence

Eine Struktur, die Informationen zu einem Zaun enthält. Wenn der Typmembergleich D3DDDI_FENCE ist, enthält die Union in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine Fence-Struktur .

Fence.FenceValue

Ein 64-Bit-Wert, der den anfänglichen Zaunwert angibt.

CPUNotification

Eine Struktur, die Informationen zu einer CPU-Benachrichtigung enthält. Wenn der Type-Membergleich D3DDDI_CPU_NOTIFICATION ist, enthält die Union in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine CPUNotification-Struktur .

void D3DKMT_PTR( HANDLE unnamedParam1, Event unnamedParam2)

MonitoredFence

Eine Struktur, die Informationen zu einem überwachten Zaun enthält. Wenn der Type-Membergleich D3DDDI_MONITORED_FENCE ist, enthält die Union in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine MonitoredFence-Struktur .

Überwachte Zäune können aus Sicherheitsgründen nur mithilfe von NT-Handles freigegeben werden, sodass das NtSecuritySharing-Flag bei Verwendung eines überwachten Zauns festgelegt werden muss.

Unterstützt ab Windows 10.

MonitoredFence.InitialFenceValue

[in] Ein 64-Bit-Wert, der den anfänglichen Zaunwert angibt.

Unterstützt ab Windows 10.

void D3DKMT_PTR( VOID *unnamedParam1, FenceValueCPUVirtualAddress unnamedParam2)

MonitoredFence.FenceValueGPUVirtualAddress

[out] Eine Lese-/Schreibzuordnung des Zaunwerts für die GPU. Ein Treiber kann einen neuen Zaunwert signalisieren, indem er einen GPU-Schreibbefehl für diese Adresse in einen Befehlspuffer einfügt, und Dxgkrnl hebt die Blockierung von Kellnern für diesen Wert des Zaunobjekts auf. Abhängig vom Wert der No64BitAtomics-Obergrenze verweist diese Adresse entweder auf einen 32-Bit- oder einen 64-Bit-Zugrunde liegenden Wert. Wenn das Gerät die Cachekohärenz mit der CPU nicht unterstützt, sollte es nicht mithilfe der virtuellen GPU-Adresse in den Zaunwert schreiben. Der Zugriff auf den Zaunwert sollte nur von der CPU erfolgen.

Unterstützt ab Windows 10.

MonitoredFence.EngineAffinity

[in] Ein Bitfeld, in dem jede Bitposition (beginnend bei Null) einen physischen Adapterindex in einem Link display adapter (LDA)-Link definiert, in dem die virtuelle GPU-Adresse committet wird. Null bedeutet, dass die virtuelle GPU-Adresse an alle physischen Adapter committet wird.

Unterstützt ab Windows 10.

MonitoredFence.Padding

PeriodicMonitoredFence

Eine Struktur, die Informationen zu einem regelmäßig überwachten Zaun enthält. Wenn der Type-Membergleich D3DDDI_PERIODIC_MONITORED_FENCE ist, enthält die Union in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine MonitoredFence-Struktur .

Unterstützt ab Windows 10.

VidPnTargetID

[out] Die Ausgabe-ID, für die der Compositor Benachrichtigungen erhalten möchte.

PeriodicMonitoredFence.hAdapter

[in] Ein Handle für den Adapter, der VidPnSourceID zugeordnet ist

PeriodicMonitoredFence.VidPnTargetId

PeriodicMonitoredFence.Time

[out] Stellt einen Offset vor VSync dar (Zeit des VSync - Time-Parameters). Der Time-Wert darf nicht länger als ein VSync-Intervall (1 /DisplayModeRefresh) sein. Die Zeit wird in Einheiten von 100ns angegeben.

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

[in] Schreibgeschützte Zuordnung des Zaunwerts für die GPU

PeriodicMonitoredFence.EngineAffinity

[in] Definiert physische Adapter, in denen die GPU-VA zugeordnet wird.

PeriodicMonitoredFence.Padding

Reserved

Eine Struktur, die für die zukünftige Verwendung reserviert ist. Diese Struktur enthält das folgende Element:

Reserved.Reserved[8]

SharedHandle

[out] Ein Handle für das freigegebene Synchronisierungsobjekt, wenn derzeit ein freigegebenes Handle vorhanden ist. Der Treiber sollte Synchronisierungsobjekte mithilfe von NT-Handles freigeben. Sie sollte die D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS::NtSecuritySharing festlegen, um anzugeben, dass das Objekt mithilfe von NT-Handles freigegeben wird, und D3DKMTShareObjects aufrufen, um ein NT-Handle abzurufen. Die Verwendung globaler Handles ist nicht sicher. Jeder Prozess kann ein globales Handle erraten und freigegebene Objekte öffnen. Globale Handles werden nur aus Kompatibilitätsgründen mit alten D3D-Runtimes unterstützt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7
Kopfzeile d3dukmdt.h (einschließlich D3dumddi.h, D3dkmddi.h)

Weitere Informationen

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2