Compartilhar via


estrutura D3DDDI_SYNCHRONIZATIONOBJECTINFO2 (d3dukmdt.h)

A estrutura D3DDDI_SYNCHRONIZATIONOBJECTINFO2 contém informações sobre um objeto de sincronização de segunda geração.

Sintaxe

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;

Membros

Type

[in] Um valor do tipo D3DDDI_SYNCHRONIZATIONOBJECT_TYPE que indica o tipo de objeto de sincronização.

Flags

[in] Uma estrutura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS que especifica, em sinalizadores de campo de bit, atributos do objeto de sincronização.

SynchronizationMutex

Uma estrutura que contém informações sobre um mutex de sincronização. Se o membro tipo for igual a D3DDDI_SYNCHRONIZATION_MUTEX, a união em D3DDDI_SYNCHRONIZATIONOBJECTINFO2 manterá uma estrutura SynchronizationMutex .

SynchronizationMutex.InitialState

Um valor booliano que indica se o mutex de sincronização pertence inicialmente a um objeto. Um valor de TRUE indica que o mutex é de propriedade; FALSE indica que o mutex não é de propriedade.

Semaphore

Uma estrutura que contém informações sobre um semáforo. Se o membro tipo for igual a D3DDDI_SEMAPHORE, a união em D3DDDI_SYNCHRONIZATIONOBJECTINFO2 manterá uma estrutura de Semáforo .

Semaphore.MaxCount

O número máximo de eventos que um objeto pode estar aguardando.

Semaphore.InitialCount

O número inicial de eventos que um objeto está aguardando.

Fence

Uma estrutura que contém informações sobre uma cerca. Se o membro tipo for igual a D3DDDI_FENCE, o sindicato em D3DDDI_SYNCHRONIZATIONOBJECTINFO2 manterá uma estrutura Fence.

Fence.FenceValue

Um valor de 64 bits que especifica o valor de cerca inicial.

CPUNotification

Uma estrutura que contém informações sobre uma notificação de CPU. Se o membro tipo for igual a D3DDDI_CPU_NOTIFICATION, a união em D3DDDI_SYNCHRONIZATIONOBJECTINFO2 manterá uma estrutura CPUNotification.

CPUNotification.Event

O identificador do evento de notificação da CPU.

MonitoredFence

Uma estrutura que contém informações sobre uma cerca monitorada. Se o membro tipo for igual a D3DDDI_MONITORED_FENCE, a união em D3DDDI_SYNCHRONIZATIONOBJECTINFO2 manterá uma estrutura MonitoredFence.

As cercas monitoradas só podem ser compartilhadas usando identificadores NT por motivos de segurança, portanto, o sinalizador de NtSecuritySharing do deve ser definido ao usar uma cerca monitorada.

Com suporte a partir do Windows 10.

MonitoredFence.InitialFenceValue

[in] Um valor de 64 bits que especifica o valor de cerca inicial.

Com suporte a partir do Windows 10.

MonitoredFence.FenceValueCPUVirtualAddress

[out] Um mapeamento somente leitura do valor da cerca para a CPU. Esse é um endereço de modo de usuário legível do processo que criou o objeto de cerca monitorado. Para plataformas de 32 bits que dão suporte a leituras atômicas de 64 bits por meio de métodos como InterlockedCompareExchange64(pointer,0,0), o mapeamento será feito leitura-gravação em vez de somente leitura para evitar uma violação de acesso durante a operação intertravada. Dependendo do valor de limite de No64BitAtomics, esse endereço aponta para um valor subjacente de 32 bits ou 64 bits.

Com suporte a partir do Windows 10.

MonitoredFence.FenceValueGPUVirtualAddress

[out] Um mapeamento de leitura/gravação do valor da cerca para a GPU. Um driver pode sinalizar um novo valor de cerca inserindo um comando de gravação de GPU para esse endereço em um buffer de comando e Dxgkrnl desbloqueará garçons para esse valor de objeto de cerca. Dependendo do valor de limite de No64BitAtomics, esse endereço aponta para um valor subjacente de 32 bits ou 64 bits. Se o dispositivo não der suporte à coerência de cache com a CPU, ele não deverá gravar no valor da cerca usando o endereço virtual da GPU. O acesso ao valor da cerca deve ser feito apenas pela CPU.

Com suporte a partir do Windows 10.

MonitoredFence.EngineAffinity

[in] Um campo de bits, em que cada posição de bit (a partir de zero) define um índice de adaptador físico em um link LDA (adaptador de exibição de link) em que o endereço virtual da GPU será confirmado. Zero significa que o endereço virtual da GPU será confirmado para todos os adaptadores físicos.

Com suporte a partir do Windows 10.

MonitoredFence.Padding

PeriodicMonitoredFence

Uma estrutura que contém informações sobre uma cerca monitorada periódica. Se o membro tipo for igual a D3DDDI_PERIODIC_MONITORED_FENCE, a união em D3DDDI_SYNCHRONIZATIONOBJECTINFO2 manterá uma estrutura MonitoredFence.

Com suporte a partir do Windows 10.

VidPnTargetID

[out] A ID de saída para a qual o compositor deseja receber notificações.

PeriodicMonitoredFence.hAdapter

[in] Um identificador para o adaptador associado ao VidPnSourceID

PeriodicMonitoredFence.VidPnTargetId

PeriodicMonitoredFence.Time

[out] Representa um deslocamento antes do VSync (hora de VSync – parâmetro time). O valor time pode não ser maior que um intervalo VSync (1/DisplayModeRefresh). O tempo é especificado em unidades de 100ns.

PeriodicMonitoredFence.FenceValueCPUVirtualAddress

[in] Mapeamento somente leitura do valor da cerca para a CPU

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

[in] Mapeamento somente leitura do valor da cerca para a GPU

PeriodicMonitoredFence.EngineAffinity

[in] Define adaptadores físicos em que o VA da GPU será mapeado

PeriodicMonitoredFence.Padding

Reserved

Uma estrutura reservada para uso futuro. Essa estrutura contém o seguinte membro:

Reserved.Reserved[8]

SharedHandle

[out] Um identificador para o objeto de sincronização compartilhado se houver um identificador compartilhado no momento. O driver deve compartilhar objetos de sincronização usando identificadores NT. Ele deve definir o D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS::NtSecuritySharing para indicar que o objeto será compartilhado usando identificadores NT e chamar D3DKMTShareObjects para obter um identificador NT. O uso de identificadores globais não é seguro. Qualquer processo pode adivinhar um identificador global e abrir um objeto compartilhado. Identificadores globais têm suporte apenas por motivos de compatibilidade com runtimes D3D antigos.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 7
cabeçalho d3dukmdt.h (inclua D3dumddi.h, D3dkmddi.h)

Consulte também

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2