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.
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.