D3DDDI_SYNCHRONIZATIONOBJECTINFO2 struttura (d3dukmdt.h)
La struttura D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene informazioni su un oggetto di sincronizzazione di seconda generazione.
Sintassi
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;
Members
Type
[in] Valore di tipo D3DDDI_SYNCHRONIZATIONOBJECT_TYPE che indica il tipo di oggetto di sincronizzazione.
Flags
[in] Struttura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS che specifica, in flag di campo a bit, attributi dell'oggetto di sincronizzazione.
SynchronizationMutex
Struttura che contiene informazioni su un mutex di sincronizzazione. Se il membro Type è uguale a D3DDDI_SYNCHRONIZATION_MUTEX, l'unione in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una struttura SyncMutex .
SynchronizationMutex.InitialState
Valore booleano che indica se il mutex di sincronizzazione è inizialmente di proprietà di un oggetto. Un valore true indica che il mutex è di proprietà; FALSE indica che il mutex non è di proprietà.
Semaphore
Struttura che contiene informazioni su un semaforo. Se il membro Type è uguale a D3DDDI_SEMAPHORE, l'unione in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una struttura di semaforo .
Semaphore.MaxCount
Numero massimo di eventi che un oggetto può attendere.
Semaphore.InitialCount
Numero iniziale di eventi in attesa di un oggetto.
Fence
Struttura che contiene informazioni su un recinto. Se il membro Type è uguale a D3DDDI_FENCE, l'unione in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una struttura Di recinzione .
Fence.FenceValue
Valore a 64 bit che specifica il valore iniziale del recinto.
CPUNotification
Struttura che contiene informazioni su una notifica della CPU. Se il membro Type è uguale a D3DDDI_CPU_NOTIFICATION, l'unione in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una struttura CPUNotification .
void D3DKMT_PTR( HANDLE unnamedParam1, Event unnamedParam2)
MonitoredFence
Struttura che contiene informazioni su un recinto monitorato. Se il membro Type è uguale a D3DDDI_MONITORED_FENCE, l'unione in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una struttura MonitorFence .
Le recinzioni monitorate possono essere condivise solo usando handle NT per motivi di sicurezza, pertanto il flag NtSecuritySharing deve essere impostato quando si usa una recinzione monitorata.
Supportato a partire da Windows 10.
MonitoredFence.InitialFenceValue
[in] Valore a 64 bit che specifica il valore iniziale del recinto.
Supportato a partire da Windows 10.
void D3DKMT_PTR( VOID *unnamedParam1, FenceValueCPUVirtualAddress unnamedParam2)
MonitoredFence.FenceValueGPUVirtualAddress
[out] Mapping di lettura-scrittura del valore di recinzione per la GPU. Un driver può segnalare un nuovo valore di recinzione inserendo un comando di scrittura GPU per questo indirizzo in un buffer dei comandi e Dxgkrnl sbloccherà i camerieri per questo valore dell'oggetto di recinzione. A seconda del valore del limite No64BitAtomics , questo indirizzo punta a un valore sottostante a 32 bit o a 64 bit. Se il dispositivo non supporta la coesistenza della cache con la CPU, non deve scrivere nel valore di recinzione usando l'indirizzo virtuale della GPU. L'accesso al valore di recinzione deve essere eseguito solo dalla CPU.
Supportato a partire da Windows 10.
MonitoredFence.EngineAffinity
[in] Un campo bit, in cui ogni posizione bit (a partire da zero) definisce un indice dell'adattatore fisico in un collegamento dell'adattatore di visualizzazione (LDA) in cui verrà eseguito il commit dell'indirizzo virtuale della GPU. Zero significa che l'indirizzo virtuale DELLA GPU verrà eseguito il commit in tutte le schede fisiche.
Supportato a partire da Windows 10.
MonitoredFence.Padding
PeriodicMonitoredFence
Struttura che contiene informazioni su un recinto monitorato periodico. Se il membro Type è uguale a D3DDDI_PERIODIC_MONITORED_FENCE, l'unione in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una struttura MonitorFence .
Supportato a partire da Windows 10.
VidPnTargetID
[out] ID di output per cui il compositore desidera ricevere notifiche.
PeriodicMonitoredFence.hAdapter
[in] Handle per l'adapter associato a VidPnSourceID
PeriodicMonitoredFence.VidPnTargetId
PeriodicMonitoredFence.Time
[out] Rappresenta un offset prima del parametro VSync (ora di VSync - Time). Il valore Time potrebbe non essere più lungo di un intervallo VSync (1/DisplayModeRefresh). L'ora viene specificata in unità di 100ns.
PeriodicMonitoredFence.FenceValueGPUVirtualAddress
[in] Mapping di sola lettura del valore di recinzione per la GPU
PeriodicMonitoredFence.EngineAffinity
[in] Definisce le schede fisiche in cui verrà eseguito il mapping della GPU VA
PeriodicMonitoredFence.Padding
Reserved
Struttura riservata per l'uso futuro. Questa struttura contiene il membro seguente:
Reserved.Reserved[8]
SharedHandle
[out] Handle per l'oggetto di sincronizzazione condiviso se esiste un handle condiviso. Il driver deve condividere oggetti di sincronizzazione usando handle NT. Deve impostare la D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS::NtSecuritySharing per indicare che l'oggetto verrà condiviso usando handle NT e chiamare D3DKMTShareObjects per ottenere un handle NT. L'uso di handle globali non è sicuro. Qualsiasi processo può indovinare un handle globale e aprire un oggetto condiviso. Gli handle globali sono supportati solo per motivi di compatibilità con i runtime D3D precedenti.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 |
Intestazione | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |
Vedi anche
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS
D3DDDI_SYNCHRONIZATIONOBJECT_TYPE