Функция D3DKMTCreateNativeFence (d3dkmthk.h)
Среда выполнения D3D вызывает D3DKMTCreateNativeFence для создания собственного объекта ограждения GPU на определенном устройстве.
Синтаксис
NTSTATUS D3DKMTCreateNativeFence(
D3DKMT_CREATENATIVEFENCE *unnamedParam1
);
Параметры
unnamedParam1
[in/out] Указатель на структуру D3DKMT_CREATENATIVEFENCE, описывающую создаваемый объект забора.
Возвращаемое значение
D3DKMTCreateNativeFence возвращает STATUS_SUCCESS при успешном создании. В противном случае возвращается код ошибки NTSTATUS, например STATUS_INVALID_PARAMETER.
Замечания
Указанный D3DDDI_NATIVEFENCE_TYPE определяет тип собственного ограждения, создаваемого ОС. Эти ограждения отличаются функциями, характеристиками производительности и требованиями к хранилищу для CurrentValue и MonitoredValue. В следующей таблице показаны эти различия, где CVal обозначает CurrentValue и MVal означает MonitoredValue.
Тип | CurrentValue | MonitoredValue | Поддерживает межпроцессный общий доступ на ЦП | Поддержка общего доступа между адаптерами | UM CPUVA CVal | KM CPUVA CVal | GPU VA CVal | CMPVA CVal | UM MVal | KM MVal | GPU VA MVal | CMPVA MVal | Вариант использования |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
D3DDDI_NATIVEFENCE_TYPE_DEFAULT | Sysmem | Sysmem | Да | Да | ReadOnly | Чтение и запись | Чтение и запись | Чтение и запись | N/A | Писать | ReadOnly (или чтение и запись) | Чтение и запись | Заборы приложений с сокращением прерываний ЦП. Официант GPU разблокируется без пробуждения ЦП |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (ОПТИМИЗИРОВАННЫЕ) | Sysmem | VRAM | Да | Да | ReadOnly | Чтение и запись | Чтение и запись | Чтение и запись | N/A | Писать | ReadOnly (или чтение и запись) | Чтение и запись | Совпадает с типом 0, но с уменьшенным трафиком шины PCI, так как операции чтения MVal являются локальными для GPU. Команда сигнала GPU выполняется быстрее из-за этой ограниченной задержки (пропускная способность++). |
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU | VRAM | VRAM | Да | Нет | N/A | N/A | Чтение и запись | Чтение и запись | N/A | N/A | ReadOnly (или чтение и запись) | Чтение и запись | Синхронизация уровня буфера команд (не видимых приложений) в одном GPU. Чтение и запись в значение забора (CVal) является локальным, поэтому операции сигнала и разблокировки быстры. |
D3DDDI_NATIVEFENCE_TYPE_DEFAULT
- Поддерживается в Windows 11 версии 24H2.
- Этот тип ограждения поддерживает все существующие объекты синхронизации D3DKMT wait/Signal из операций ЦП/GPU.
- Как CurrentValue, так и MonitoredValue хранилища для этого типа ограждения выделяются в сегменте системной памяти.
D3DDDI_NATIVEFENCE_TYPE_DEFAULT (Оптимизированные)
- Эта возможность в настоящее время не поддерживается ОС.
- Оптимизированная версия
D3DDDI_NATIVEFENCE_TYPE_DEFAULT , в которой хранилище monitoredValuemonitoredValue может быть выделено в VRAM, ускорит чтение MonitoredValue из ядра GPU. - Эта оптимизация не предоставляется UMD. Вместо этого Dxgkrnl и KMD решит, можно ли оптимизировать тип ограждения по умолчанию путем выделения хранилища MonitoredValue в VRAM.
- MonitoredValue хранилище, выделенное в VRAM, по-прежнему может быть понижено до системной памяти, если система находится под локальным давлением памяти.
- Если ОС поддерживает этот тип ограждения, он задает SupportOptimizedDefaultFenceType значение TRUE в таблице интерфейса функций DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1. Ожидается, что KMD запрашивает таблицу интерфейса функций во время инициализации драйвера, чтобы определить эту возможность ОС.
D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU
- Эта возможность в настоящее время не поддерживается ОС.
- Забор D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU не поддерживает какие-либо операции ЦП; То есть ОС не позволяет пользовательскому режиму ожидать ожидания и сигналов этому объекту ограждения.
- Поэтому этот тип нельзя использовать для заборов приложений DX, которые должны поддерживать семантику ожидания ЦП и сигнала. Этот тип используется главным образом для внутренних заборов UMD для синхронизации между ядрами GPU. Создание этого типа как собственного объекта забора D3DKMT обеспечивает видимость этих заборов для таких средств, как GpuView и отладка.
- Поддерживаемый сегмент для этого забора должен быть видимым локальным сегментом памяти без ЦП.
- Хранилище, выделенное в локальной памяти, по-прежнему может быть понижено до системной памяти, если система находится под локальным давлением на память.
- Если ОС поддерживает этот тип ограждения, он задает значение SupportIntraGpuFenceType значение TRUE в таблице интерфейса функций DXGKARGCB_FEATURE_NATIVEFENCE_CAPS_1. Ожидается, что KMD запрашивает таблицу интерфейса функций во время инициализации драйвера, чтобы определить эту возможность ОС.
Дополнительные сведения о собственных ограждениях GPU см. в разделе Объекты забора собственного GPU.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 11 версии 24H2 |
заголовка | d3dkmthk.h |