структура D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS (d3dukmdt.h)
Структура D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS определяет атрибуты объекта синхронизации.
Синтаксис
typedef struct _D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS {
union {
struct {
UINT Shared : 1;
UINT NtSecuritySharing : 1;
UINT CrossAdapter : 1;
UINT TopOfPipeline : 1;
UINT NoSignal : 1;
UINT NoWait : 1;
UINT NoSignalMaxValueOnTdr : 1;
UINT NoGPUAccess : 1;
UINT SignalByKmd : 1;
UINT LocalMemoryPreferred : 1;
#if ...
UINT Reserved : 21;
#elif
UINT Reserved : 22;
#elif
UINT Reserved : 23;
#elif
UINT Reserved : 28;
#else
UINT Reserved : 29;
#endif
UINT D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0 : 1;
};
UINT Value;
};
} D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS;
Члены
Shared
Значение UINT, указывающее, является ли объект синхронизации общим.
Если для параметра Shared задано значение 1 (TRUE), объект синхронизации является общим. Если значение Shared равно нулю (FALSE), объект синхронизации не является общим. Дополнительные сведения см. в разделе «Примечания».
NtSecuritySharing
Значение UINT, указывающее, является ли объект синхронизации общим для дескриптора NT. Это означает, что у него нет глобального дескриптора D3DKMT_HANDLE режима ядра для ресурса.
Если ntSecuritySharing имеет значение 1 (TRUE), объект синхронизации является общим, но не имеет глобального D3DKMT_HANDLE дескриптора ресурса.
Примечание
Если для ntSecuritySharing задано значение 1, значение Shared должно быть равно 1. Дополнительные сведения см. в разделе «Примечания».
Поддерживается начиная с Windows 8.
CrossAdapter
Значение UINT, указывающее, является ли объект синхронизации общим объектом ресурса между адаптерами в гибридной системе.
Если параметр CrossAdapter имеет значение 1 (TRUE), объект синхронизации является общим объектом кроссадаптера. Если для CrossAdapter задано значение 0 (FALSE), объект синхронизации не является общим объектом кроссадаптера.
TopOfPipeline
Значение | Значение |
---|---|
TRUE | Указывает, будет ли объект синхронизации сигнализировать, как только содержимое буфера команд, предшествующее ему, полностью скопировано в конвейер GPU, но не обязательно завершено выполнение. Это позволяет повторно использовать буферы команд как можно скорее. |
Ложь. | Объект синхронизации получает сигнал после завершения выполнения предыдущей команды буферов. |
Это значение может быть равно только 1 (TRUE) для отслеживаемых объектов синхронизации ограждения, а для всех остальных типов объектов синхронизации оно должно быть равно нулю (FALSE).
Поддерживается начиная с Windows 10.
NoSignal
Значение | Значение |
---|---|
TRUE | Указывает устройство, на котором создан или открыт объект синхронизации, может отправлять только команды ожидания для него. Попытка отправить сигнальную операцию при установке этого флага вернет STATUS_ACCESS_DENIED. |
Ложь. | Объект синхронизации может быть сигнализирован. |
Это значение может быть равно только 1 (TRUE) для отслеживаемых объектов синхронизации ограждения, а для всех остальных типов объектов синхронизации оно должно быть равно нулю (FALSE).
Поддерживается начиная с Windows 10.
NoWait
Значение | Значение |
---|---|
TRUE | Указывает устройство, на котором создается или открыт объект синхронизации, может отправлять только сигнальные команды для него. Попытка отправить операцию ожидания при установке этого флага вернет STATUS_ACCESS_DENIED. |
Ложь. | Объект синхронизации можно ждать. |
Это значение может быть равно только 1 (TRUE) для отслеживаемых объектов синхронизации ограждения, а для всех остальных типов объектов синхронизации оно должно быть равно нулю (FALSE).
Этот флаг нельзя задать одновременно с флагом NoSignal .
Поддерживается начиная с Windows 10.
NoSignalMaxValueOnTdr
Значение | Значение |
---|---|
TRUE | Указывает планировщику GPU обходить вышеупомянутую сигнализацию отслеживаемого ограждения до максимального значения в случаях TDR. |
Ложь. | Планировщик GPU будет сигнализировать отслеживаемого ограждения до максимального значения, когда устройство, которое может потенциально сигнализировать, что на него влияет сброс GPU (TDR). |
Поддерживается начиная с Windows 10.
NoGPUAccess
Если этот параметр задан, ограждение не будет сопоставлено с виртуальным адресным пространством GPU и всегда будет храниться в виде 64-разрядного значения (независимо от ограничения адаптера). Поддерживаются только операции сигнала и ожидания на основе пакетов.
SignalByKmd
Если этот параметр задан, ограждение может быть сигнализироваться драйвером режима ядра (KMD). Этот флаг можно использовать только с D3DDDI_CPU_NOTIFICATION объектами . Поддерживается начиная с Windows 11 (WDDM 3.0).
LocalMemoryPreferred
Если задано значение , указывает, что по возможности ограждение должно быть помещено в локальную память GPU. Поддерживается начиная с Windows 11 версии 22H2 (WDDM 3.1).
Reserved
Этот элемент зарезервирован и должен иметь нулевое значение.
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0
Этот элемент зарезервирован и должен иметь нулевое значение.
Поддерживается начиная с Windows 8.
Value
Элемент в объединении, который содержится в D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS , который может содержать одно 32-разрядное значение, определяющее атрибуты объекта синхронизации.
Комментарии
Объекты, к которым предоставляется общий доступ с помощью функции D3DKMTShareObjects , необходимо сначала создать с установленным значением флага NtSecuritySharing . Это значение флага доступно в структурах D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS и D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS .
Драйверы должны следовать следующим рекомендациям по флагам D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS :
Если объект синхронизации не является общим, задайте для параметра Shared и NtSecuritySharing значение 0.
Если объект синхронизации используется совместно с типом данных D3DKMT_HANDLE , задайте значение Shared = 1 и NtSecuritySharing = 0.
Если объект синхронизации используется совместно с дескриптором NT для процесса (и без глобального дескриптора D3DKMT_HANDLE режима ядра для ресурса), установите значение Shared = 1 и NtSecuritySharing = 1.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 |
Верхняя часть | d3dukmdt.h (включая D3dumddi.h, D3dkmddi.h) |
См. также раздел
D3DDDI_SYNCHRONIZATIONOBJECTINFO2
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по