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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für