структура 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
Структура, содержащая сведения о мьютексе синхронизации. Если член типа
SynchronizationMutex.InitialState
Логическое значение, указывающее, принадлежит ли мьютекс синхронизации объекту. Значение TRUE указывает, что мьютекс принадлежит; FALSE указывает, что мьютекс не принадлежит.
Semaphore
Структура, содержащая сведения о семафоре. Если член типа
Semaphore.MaxCount
Максимальное количество событий, которые объект может ожидать.
Semaphore.InitialCount
Начальное число событий, ожидающих объекта.
Fence
Структура, содержащая сведения о заборе. Если член типа
Fence.FenceValue
64-разрядное значение, указывающее начальное значение ограждения.
CPUNotification
Структура, содержащая сведения о уведомлении ЦП. Если член типа
CPUNotification.Event
Дескриптор события уведомления ЦП.
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
Структура, содержащая сведения о периодически отслеживаемом заборе. Если член типа
Поддерживается начиная с 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