Поддержка гибридных систем DDI и dList DLL
Поддержка ресурсов между адаптерами в гибридной системе появилась начиная с Windows 8.1 (WDDM 1.3). Доступны следующие функции, структуры и перечисления в пользовательском режиме и режиме ядра:
- перечисление D3D10_DDI_RESOURCE_MISC_FLAG
- структура D3DDDI_RESOURCEFLAGS2
- структура D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS
- структура D3DKMDT_GDISURFACEDATA
- перечисление D3DKMDT_GDISURFACETYPE
- структура DXGK_DRIVERCAPS
- структура DXGK_VIDMMCAPS
- Функция pfnQueryDListForApplication1
Функция сканирования ресурсов между адаптерами (CASO) появилась начиная с Windows Server 2022 (WDDM 2.9). Для CASO была добавлена следующая дополнительная поддержка:
- Функция pfnQueryDListForApplication2 (добавлена)
- перечисление D3DDDI_DLIST_QUERY_RESULT (добавлено)
- перечисление D3DDDI_DLIST_QUERY_DECISION_FACTOR (добавлено)
- В структуру DXGK_DRIVERCAPS добавлен noHybridDiscreteDListDllSupport.
- CrossAdapterResourceTexture и CrossAdapterResourceScanout были добавлены в структуру DXGK_VIDMMCAPS
Примечание
В Windows Server 2022 (WDDM 2.9) и более поздних версиях ОС драйвер отображения пользовательского режима (UMD) в гибридной системе должен поддерживать DDI pfnQueryDListForApplication2 , который заменяет pfnQueryDListForApplication1, независимо от того, реализуется ли поддержка CASO.
Настройка библиотеки DLL dList
DList — это список приложений, которым требуются общие поверхности между адаптерами для высокопроизводительной отрисовки на дискретном GPU.
Дискретный GPU UMD устанавливает отдельную небольшую библиотеку DLL dList , которая экспортирует функцию pfnQueryDListForApplication2 . Сама операционная система не определяет, на каком GPU должно работать приложение. Вместо этого среда выполнения Direct3D вызывает pfnQueryDListForApplication2 не более одного раза во время инициализации Direct3D.
Драйвер должен запрашивать актуальный список сведений о процессе, чтобы определить, требуется ли для процесса повышенная производительность дискретного GPU вместо интегрированного GPU.
Для оптимальной производительности библиотека DLL должна:
- Размер не более 200 КБ
- Сведите выделения к минимуму
- Будьте в состоянии возвращать данные из pfnQueryDListForApplication2 за 4 мс.
Регистрация библиотеки DLL dList
UMD предоставляет имя небольшой библиотеки DLL dList в СВОЕМ INF-файле в разделах реестра UserModeDListDriverName и UserModeDListDriverNameWow, последняя — в записи реестра Wow64 . Ниже приведен пример INF-кода:
[Xxx_SoftwareDeviceSettings]
...
HKR,, UserModeDListDriverName, %REG_MULTI_SZ%, dlistumd.dll
HKR,, UserModeDListDriverNameWow, %REG_MULTI_SZ%, dlistumdwow.dll