Compartir a través de


estructura D3DDDI_SYNCHRONIZATIONOBJECTINFO2 (d3dukmdt.h)

La estructura D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene información sobre un objeto de sincronización de segunda generación.

Sintaxis

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;

Miembros

Type

[in] Valor de tipo D3DDDI_SYNCHRONIZATIONOBJECT_TYPE que indica el tipo de objeto de sincronización.

Flags

[in] Estructura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS que especifica, en marcas de campo de bits, atributos del objeto de sincronización.

SynchronizationMutex

Estructura que contiene información sobre una exclusión mutua de sincronización. Si el miembro type de es igual a D3DDDI_SYNCHRONIZATION_MUTEX, la unión de D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una estructura synchronizationMutex de .

SynchronizationMutex.InitialState

Valor booleano que indica si la exclusión mutua de sincronización es propiedad inicialmente de un objeto . Un valor true indica que la exclusión mutua es propiedad; FALSE indica que la exclusión mutua no es propiedad de .

Semaphore

Estructura que contiene información sobre un semáforo. Si el miembro type es igual a D3DDDI_SEMAPHORE, la unión de D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una estructura semáforo.

Semaphore.MaxCount

Número máximo de eventos que un objeto puede estar esperando.

Semaphore.InitialCount

Número inicial de eventos que un objeto está esperando.

Fence

Estructura que contiene información sobre una valla. Si el miembro type de es igual a D3DDDI_FENCE, la unión de D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una estructura de fence.

Fence.FenceValue

Valor de 64 bits que especifica el valor de barrera inicial.

CPUNotification

Estructura que contiene información sobre una notificación de CPU. Si el miembro type de es igual a D3DDDI_CPU_NOTIFICATION, la unión de D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una estructura CPUNotification.

CPUNotification.Event

Identificador del evento de notificación de CPU.

MonitoredFence

Estructura que contiene información sobre una valla supervisada. Si el miembro type de es igual a D3DDDI_MONITORED_FENCE, la unión de D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una estructura MonitoredFence.

Las barreras supervisadas solo se pueden compartir mediante identificadores NT por motivos de seguridad, por lo que la marca NtSecuritySharing debe establecerse al usar una valla supervisada.

Se admite a partir de Windows 10.

MonitoredFence.InitialFenceValue

[in] Valor de 64 bits que especifica el valor de barrera inicial.

Se admite a partir de Windows 10.

MonitoredFence.FenceValueCPUVirtualAddress

[out] Asignación de solo lectura del valor de barrera para la CPU. Se trata de una dirección de modo de usuario legible del proceso que creó el objeto de barrera supervisada. Para las plataformas de 32 bits que admiten lecturas atómicas de 64 bits a través de métodos como InterlockedCompareExchange64(pointer,0,0), la asignación se realizará de lectura y escritura en lugar de solo lectura para evitar una infracción de acceso durante la operación interbloqueada. Dependiendo del valor de límite no64BitAtomics, esta dirección apunta a un valor subyacente de 32 o 64 bits.

Se admite a partir de Windows 10.

MonitoredFence.FenceValueGPUVirtualAddress

[out] Asignación de lectura y escritura del valor de barrera para la GPU. Un controlador puede indicar un nuevo valor de barrera insertando un comando de escritura de GPU para esta dirección en un búfer de comandos y Dxgkrnl desbloqueará a los esperadores para este valor de objeto de barrera. Dependiendo del valor de límite no64BitAtomics, esta dirección apunta a un valor subyacente de 32 o 64 bits. Si el dispositivo no admite la coherencia de caché con la CPU, no debe escribir en el valor de barrera mediante la dirección virtual de GPU. El acceso al valor de barrera solo debe realizarse mediante la CPU.

Se admite a partir de Windows 10.

MonitoredFence.EngineAffinity

[in] Un campo de bits, donde cada posición de bits (a partir de cero) define un índice de adaptador físico en un vínculo del adaptador de pantalla de vínculo (LDA) donde se confirmará la dirección virtual de GPU. Cero significa que la dirección virtual de GPU se confirmará en todos los adaptadores físicos.

Se admite a partir de Windows 10.

MonitoredFence.Padding

PeriodicMonitoredFence

Estructura que contiene información sobre una valla supervisada periódicamente. Si el miembro type es igual a D3DDDI_PERIODIC_MONITORED_FENCE, la unión de D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contiene una estructura MonitoredFence.

Se admite a partir de Windows 10.

VidPnTargetID

[out] Identificador de salida para el que el compositor desea recibir notificaciones.

PeriodicMonitoredFence.hAdapter

[in] Identificador del adaptador asociado a VidPnSourceID

PeriodicMonitoredFence.VidPnTargetId

PeriodicMonitoredFence.Time

[out] Representa un desplazamiento antes de la VSync (hora de VSync : parámetro Time). Es posible que el valor de hora no sea mayor que un intervalo de VSync (1 / DisplayModeRefresh). El tiempo se especifica en unidades de 100ns.

PeriodicMonitoredFence.FenceValueCPUVirtualAddress

[in] Asignación de solo lectura del valor de barrera para la CPU

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

[in] Asignación de solo lectura del valor de barrera para la GPU

PeriodicMonitoredFence.EngineAffinity

[in] Define adaptadores físicos en los que se asignará la VA de GPU.

PeriodicMonitoredFence.Padding

Reserved

Estructura reservada para uso futuro. Esta estructura contiene el siguiente miembro:

Reserved.Reserved[8]

SharedHandle

[out] Identificador del objeto de sincronización compartido si existe actualmente un identificador compartido. El controlador debe compartir objetos de sincronización mediante identificadores NT. Debe establecer el D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS::NtSecuritySharing para indicar que el objeto se compartirá mediante identificadores NT y llamará a D3DKMTShareObjects para obtener un identificador NT. El uso de identificadores globales no es seguro. Cualquier proceso puede adivinar un identificador global y abrir objetos compartidos. Los identificadores globales solo se admiten por motivos de compatibilidad con tiempos de ejecución de D3D antiguos.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 7
encabezado de d3dukmdt.h (incluya D3dumddi.h, D3dkmddi.h)

Consulte también

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2