структура D3DDDI_SYNCHRONIZATIONOBJECTINFO2 (d3dukmdt.h)

Структура D3DDDI_SYNCHRONIZATIONOBJECTINFO2 содержит сведения об объекте синхронизации второго поколения.

Синтаксис

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;

Члены

Type

[in] Значение типа D3DDDI_SYNCHRONIZATIONOBJECT_TYPE , указывающее тип объекта синхронизации.

Flags

[in] Структура D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS , указывающая в флагах битовых полей атрибуты объекта синхронизации.

SynchronizationMutex

Структура, содержащая сведения о мьютексе синхронизации. Если элемент Type равен D3DDDI_SYNCHRONIZATION_MUTEX, объединение в D3DDDI_SYNCHRONIZATIONOBJECTINFO2 содержит структуру SynchronizationMutex .

SynchronizationMutex.InitialState

Логическое значение, указывающее, принадлежит ли мьютекс синхронизации объекту. Значение TRUE указывает, что мьютекс принадлежит; FALSE указывает, что мьютекс не принадлежит.

Semaphore

Структура, содержащая сведения о семафоре. Если элемент Type равен D3DDDI_SEMAPHORE, объединение в D3DDDI_SYNCHRONIZATIONOBJECTINFO2 содержит структуру семафора .

Semaphore.MaxCount

Максимальное количество событий, которое может ожидать объект.

Semaphore.InitialCount

Начальное число событий, ожидающих объекта.

Fence

Структура, содержащая сведения о заборе. Если элемент Type равен D3DDDI_FENCE, объединение в D3DDDI_SYNCHRONIZATIONOBJECTINFO2 содержит структуру Fence .

Fence.FenceValue

64-разрядное значение, указывающее начальное значение ограждения.

CPUNotification

Структура, содержащая сведения об уведомлении ЦП. Если элемент Type равен D3DDDI_CPU_NOTIFICATION, объединение в D3DDDI_SYNCHRONIZATIONOBJECTINFO2 содержит структуру CPUNotification .

void D3DKMT_PTR( HANDLE unnamedParam1, Event unnamedParam2)

MonitoredFence

Структура, содержащая сведения о отслеживаемом заборе. Если элемент Type равен D3DDDI_MONITORED_FENCE, объединение в D3DDDI_SYNCHRONIZATIONOBJECTINFO2 содержит структуру MonitoredFence .

Отслеживаемые заборы можно совместно использовать только с помощью дескрипторов NT в целях безопасности, поэтому при использовании отслеживаемого забора необходимо установить флаг NtSecuritySharing .

Поддерживается начиная с Windows 10.

MonitoredFence.InitialFenceValue

[in] 64-разрядное значение, указывающее начальное значение ограждения.

Поддерживается начиная с Windows 10.

void D3DKMT_PTR( VOID *unnamedParam1, FenceValueCPUVirtualAddress unnamedParam2)

MonitoredFence.FenceValueGPUVirtualAddress

[out] Сопоставление для чтения и записи значения ограждения для GPU. Драйвер может сообщить о новом значении ограждения, вставив команду записи GPU для этого адреса в буфер команд, и Dxgkrnl разблокировать официантов для этого значения объекта ограждения. В зависимости от значения ограничения No64BitAtomics этот адрес указывает на 32-разрядное или 64-разрядное базовое значение. Если устройство не поддерживает когерентность кэша с ЦП, оно не должно выполнять запись в значение ограждения с помощью виртуального адреса GPU. Доступ к значению ограждения должен осуществляться только ЦП.

Поддерживается начиная с Windows 10.

MonitoredFence.EngineAffinity

[in] Битовое поле, где каждое битовое положение (начиная с нуля) определяет индекс физического адаптера в канале адаптера отображения канала (LDA), где будет зафиксирован виртуальный адрес GPU. Ноль означает, что виртуальный адрес GPU будет зафиксирован для всех физических адаптеров.

Поддерживается начиная с Windows 10.

MonitoredFence.Padding

PeriodicMonitoredFence

Структура, содержащая сведения о периодическом отслеживаемом заборе. Если элемент Type равен D3DDDI_PERIODIC_MONITORED_FENCE, объединение в D3DDDI_SYNCHRONIZATIONOBJECTINFO2 содержит структуру MonitoredFence .

Поддерживается начиная с Windows 10.

VidPnTargetID

[out] Выходной идентификатор, для которого компонователь хочет получать уведомления.

PeriodicMonitoredFence.hAdapter

[in] Дескриптор адаптера, связанного с VidPnSourceID

PeriodicMonitoredFence.VidPnTargetId

PeriodicMonitoredFence.Time

[out] Представляет смещение перед VSync (время VSync — параметр Time). Значение Time может быть не длиннее интервала VSync (1 / DisplayModeRefresh). Время указывается в единицах 100ns.

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

[in] Сопоставление значения ограждения только для чтения для GPU

PeriodicMonitoredFence.EngineAffinity

[in] Определяет физические адаптеры, в которых будет сопоставлен gpu VA

PeriodicMonitoredFence.Padding

Reserved

Структура, зарезервированная для использования в будущем. Эта структура содержит следующий элемент:

Reserved.Reserved[8]

SharedHandle

[out] Дескриптор общего объекта синхронизации, если общий дескриптор в настоящее время существует. Драйвер должен совместно использовать объекты синхронизации с помощью дескрипторов NT. Он должен задать D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS::NtSecuritySharing , чтобы указать, что объект будет совместно использоваться с помощью дескрипторов NT, и вызвать D3DKMTShareObjects , чтобы получить дескриптор NT. Использование глобальных дескрипторов не является безопасным. Любой процесс может угадать глобальный дескриптор и открыть общие объекты. Глобальные дескрипторы поддерживаются только для обеспечения совместимости со старыми средами выполнения D3D.

Требования

Требование Значение
Минимальная версия клиента Windows 7
Верхняя часть d3dukmdt.h (включая D3dumddi.h, D3dkmddi.h)

См. также раздел

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2