Condividi tramite


struttura D3DDDI_SYNCHRONIZATIONOBJECTINFO2 (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 {
      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;

Membri

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 di 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 SynchronizationMutex.

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 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 di isolamento.

Fence.FenceValue

Valore a 64 bit che specifica il valore di limite iniziale.

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.

CPUNotification.Event

Handle per l'evento di notifica della CPU.

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

I recinti monitorati possono essere condivisi solo usando handle NT per motivi di sicurezza, pertanto il flag NtSecuritySharing deve essere impostato quando si usa un recinto monitorato.

Supportato a partire da Windows 10.

MonitoredFence.InitialFenceValue

[in] Valore a 64 bit che specifica il valore di limite iniziale.

Supportato a partire da Windows 10.

MonitoredFence.FenceValueCPUVirtualAddress

[out] Mapping di sola lettura del valore di limite per la CPU. Si tratta di un indirizzo in modalità utente leggibile dal processo che ha creato l'oggetto recinto monitorato. Per le piattaforme a 32 bit che supportano letture atomiche a 64 bit tramite metodi come InterlockedCompareExchange64(pointer,0,0), il mapping verrà eseguito in lettura/scrittura anziché in sola lettura per evitare una violazione di accesso durante l'operazione interlocked. A seconda del valore di No64BitAtomics limite, questo indirizzo punta a un valore sottostante a 32 bit o a 64 bit.

Supportato a partire da Windows 10.

MonitoredFence.FenceValueGPUVirtualAddress

[out] Mapping in lettura/scrittura del valore di recinto per la GPU. Un driver può segnalare un nuovo valore di isolamento inserendo un comando di scrittura GPU per questo indirizzo in un buffer dei comandi e Dxgkrnl sbloccherà i camerieri per questo valore dell'oggetto recinto. A seconda del valore di No64BitAtomics limite, questo indirizzo punta a un valore sottostante a 32 bit o a 64 bit. Se il dispositivo non supporta la coerenza della cache con la CPU, non deve scrivere nel valore di isolamento usando l'indirizzo virtuale GPU. L'accesso al valore di recinto deve essere eseguito solo dalla CPU.

Supportato a partire da Windows 10.

MonitoredFence.EngineAffinity

[in] Un campo di bit, in cui ogni posizione di bit (a partire da zero) definisce un indice di adattatore fisico in un collegamento ADA (Link Display Adapter) in cui verrà eseguito il commit dell'indirizzo virtuale GPU. Zero indica che verrà eseguito il commit dell'indirizzo virtuale GPU 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 MonitoredFence.

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 di VSync (ora di VSync - Parametro Time). Il valore Time potrebbe non essere più lungo di un intervallo VSync (1/ DisplayModeRefresh). L'ora è specificata in unità di 100ns.

PeriodicMonitoredFence.FenceValueCPUVirtualAddress

[in] Mapping di sola lettura del valore di limite per la CPU

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

[in] Mapping di sola lettura del valore di limite 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 un uso futuro. Questa struttura contiene il membro seguente:

Reserved.Reserved[8]

SharedHandle

[out] Handle per l'oggetto di sincronizzazione condiviso se esiste attualmente un handle condiviso. Il driver deve condividere gli oggetti di sincronizzazione usando handle NT. Deve impostare il 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 oggetti condivisi. Gli handle globali sono supportati solo per motivi di compatibilità con i runtime D3D precedenti.

Fabbisogno

Requisito Valore
client minimo supportato Windows 7
intestazione d3dukmdt.h (include D3dumddi.h, D3dkmddi.h)

Vedere anche

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2