Поделиться через


Архитектура WDDM

Модель драйвера windows (WDDM) содержит компоненты пользовательского режима и режима ядра. На следующем рисунке показаны различные компоненты архитектуры WDDM.

Схема, показывающая архитектуру WDDM с компонентами пользовательского режима и режима ядра.

Системные модули отображаются на рисунке в виде белых прямоугольников. Серые прямоугольники представляют модули, которые могут предоставлять партнер. Приложения могут предоставляться системой или разрабатываться партнерами.

Системные модули

Следующие системные модули являются частью архитектуры WDDM:

  • Среда выполнения Direct3D — это компонент пользовательского режима, предоставляющий API приложения для приложений. Он предоставляет различные службы и отвечает за управление взаимодействием между приложением, графическим драйвером пользовательского режима (UMD) и gdi32.dll.

  • gdi32.dll — это библиотека пользовательского режима, на которую ссылается среда выполнения D3D или клиент графики партнера. Среда выполнения или клиент вызывает gdi32 "thunk", который направляет вызов соответствующей функции в режиме ядра в подсистеме ядра DirectX (Dxgkrnl).

  • Dxgkrnl — это основной компонент графической подсистемы операционной системы Windows в режиме ядра. Он упрощает взаимодействие между операционной системой, UMD и драйвером мини-порта в режиме ядра (KMD). Dxgkrnl включает вложенные компоненты, такие как драйвер порта отображения, диспетчер памяти (VidMm) и планировщик (VidSch). Dxgkrnl состоит из следующих системных файлов:

    • dxgmms2.sys, который реализует планировщик GPU/NPU и диспетчер памяти видео для WDDM версий 2.0 и выше.
    • dxgmms1.sys, который реализует планировщик GPU/NPU и диспетчер памяти видео для версий WDDM до WDDM 2.0.
    • dxgkrnl.sys, который обрабатывает все остальное в подсистеме ядра DirectX, включая загрузку необходимого файла dxgmms.sys, начальную обработку вызовов D3DKMTXxx из пользовательского режима, режимов отображения, виртуализации GPU, управления питанием, интерфейса с руководителем ядра и т. д.
  • Win32 GDI и Win32k.sys являются устаревшими компонентами, которые по-прежнему используются некоторыми приложениями.

Сторонние модули

  • UMD — это библиотека динамической компоновки (DLL), загружаемая средой выполнения Direct3D.

  • KMD взаимодействует с Dxgkrnl и графическим оборудованием.

Поставщик графического оборудования должен предоставить как UMD, так и KMD.

  • Сторонний клиент графики партнера — это компонент пользовательского режима, имеющий собственный API и платформу. Он вызывает gdi32 thunks для взаимодействия с подсистемой графики в режиме ядра. Клиенты, о которых корпорация Майкрософт знает, перечислены в D3DKMT_CLIENTHINT.