структура 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). Время указывается в единицах 100 нс.
PeriodicMonitoredFence.FenceValueGPUVirtualAddress
[in] Сопоставление только для чтения значения ограждения для GPU
PeriodicMonitoredFence.EngineAffinity
[in] Определяет физические адаптеры, в которых будет сопоставляться виртуальный процессор GPU
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