Arquitetura WDDM

O WDDM (Windows Display Driver Model) do Windows tem componentes de modo de usuário e modo kernel. A figura a seguir mostra os vários componentes da arquitetura WDDM.

Diagrama mostrando a arquitetura WDDM com componentes de modo de usuário e modo kernel.

Os módulos fornecidos pelo sistema são mostrados na figura como caixas brancas. As caixas cinza representam módulos que o parceiro pode fornecer. Os aplicativos podem ser fornecidos pelo sistema ou desenvolvidos por parceiros.

Módulos fornecidos pelo sistema

Os seguintes módulos fornecidos pelo sistema fazem parte da arquitetura WDDM:

  • O runtime do Direct3D é um componente de modo de usuário que fornece uma API de aplicativo para aplicativos. Ele fornece vários serviços e é responsável por gerenciar a interação entre um aplicativo, o driver gráfico do modo de usuário (UMD) e gdi32.dll.

  • gdi32.dll é uma biblioteca de modo de usuário à qual um runtime D3D ou um cliente gráfico de parceiro se vincula. Um runtime ou cliente chama uma "conversão" gdi32 que roteia a chamada para a função de modo kernel apropriada no subsistema de kernel do DirectX (Dxgkrnl).

  • Dxgkrnl.sys é o componente principal do subsistema gráfico no modo kernel do sistema operacional Windows. Ele facilita a comunicação entre o sistema operacional, o UMD e o KMD (driver de miniporte de exibição) do modo kernel. O Dxgkrnl inclui subcomponentes como o driver da porta de exibição, o gerenciador de memória (VidMm) e o agendador (VidSch). Dxgkrnl consiste nos seguintes arquivos de sistema:

    • dxgmms2.sys, que implementa o agendador de GPU/NPU e o gerenciador de memória de vídeo para WDDM versões 2.0 e superiores.
    • dxgmms1.sys, que implementa o agendador de GPU/NPU e o gerenciador de memória de vídeo para versões do WDDM anteriores ao WDDM 2.0.
    • dxgkrnl.sys, que lida com todo o resto do subsistema do kernel do DirectX, incluindo o carregamento do arquivo dxgmms.sys necessário, processamento inicial de D3DKMTXxx do modo de usuário, modos de exibição, virtualização de GPU, gerenciamento de energia, interface com o executivo do kernel e assim por diante.
  • Win32 GDI e Win32k.sys são componentes herdados que ainda são usados por alguns aplicativos.

Módulos fornecidos por terceiros

  • O UMD é uma DLL (biblioteca de vínculo dinâmico) que o runtime do Direct3D carrega.

  • O KMD se comunica com o Dxgkrnl e o hardware gráfico.

Um fornecedor de hardware gráfico deve fornecer um UMD e um KMD.

  • Um cliente gráfico de parceiro de terceiros é um componente de modo de usuário que tem sua própria API e estrutura. Ele chama conversões gdi32 para se comunicar com o subsistema gráfico do modo kernel. Os clientes conhecidos pela Microsoft estão listados em D3DKMT_CLIENTHINT.