Поделиться через


структура 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 {
      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;

Члены

Type

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

Flags

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

SynchronizationMutex

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

SynchronizationMutex.InitialState

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

Semaphore

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

Semaphore.MaxCount

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

Semaphore.InitialCount

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

Fence

Структура, содержащая сведения о заборе. Если член типа равен D3DDDI_FENCE, объединение в D3DDDI_SYNCHRONIZATIONOBJECTINFO2 содержит структуру ограждения.

Fence.FenceValue

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

CPUNotification

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

CPUNotification.Event

Дескриптор события уведомления ЦП.

MonitoredFence

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

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

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

MonitoredFence.InitialFenceValue

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

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

MonitoredFence.FenceValueCPUVirtualAddress

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

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

MonitoredFence.FenceValueGPUVirtualAddress

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

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

MonitoredFence.EngineAffinity

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

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

MonitoredFence.Padding

PeriodicMonitoredFence

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

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

VidPnTargetID

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

PeriodicMonitoredFence.hAdapter

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

PeriodicMonitoredFence.VidPnTargetId

PeriodicMonitoredFence.Time

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

PeriodicMonitoredFence.FenceValueCPUVirtualAddress

[in] Сопоставление только для чтения значения забора для ЦП

PeriodicMonitoredFence.FenceValueGPUVirtualAddress

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

PeriodicMonitoredFence.EngineAffinity

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

PeriodicMonitoredFence.Padding

Reserved

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

Reserved.Reserved[8]

SharedHandle

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 7
заголовка d3dukmdt.h (include D3dumddi.h, D3dkmddi.h)

См. также

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DDDI_SYNCHRONIZATIONOBJECT_TYPE

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2