Suporte a DDI do sistema híbrido e dList DLL
O suporte para recursos de adaptador cruzado em um sistema híbrido foi introduzido a partir do Windows 8.1 (WDDM 1.3). As seguintes funções, estruturas e enumerações de modo de usuário e kernel estão disponíveis:
- enumeração D3D10_DDI_RESOURCE_MISC_FLAG
- estrutura D3DDDI_RESOURCEFLAGS2
- estrutura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS
- estrutura D3DKMDT_GDISURFACEDATA
- enumeração D3DKMDT_GDISURFACETYPE
- estrutura DXGK_DRIVERCAPS
- estrutura DXGK_VIDMMCAPS
- Função pfnQueryDListForApplication1
O recurso CASO ( verificação de recursos entre adaptadores ) foi introduzido a partir do Windows Server 2022 (WDDM 2.9). O seguinte suporte adicional foi adicionado ao CASO:
- Função pfnQueryDListForApplication2 (adicionada)
- D3DDDI_DLIST_QUERY_RESULT enumeração (adicionado)
- D3DDDI_DLIST_QUERY_DECISION_FACTOR enumeração (adicionado)
- NoHybridDiscreteDListDllSupport foi adicionado à estrutura DXGK_DRIVERCAPS
- CrossAdapterResourceTexture e CrossAdapterResourceScanout foram adicionados à estrutura DXGK_VIDMMCAPS
Observação
No Windows Server 2022 (WDDM 2.9) e versões posteriores do sistema operacional, um UMD (driver de exibição no modo de usuário) em um sistema híbrido deve dar suporte ao DDI pfnQueryDListForApplication2 , que substitui pfnQueryDListForApplication1, independentemente de implementar o suporte para CASO.
Configurando a DLL dList
Uma dList é uma lista de aplicativos que precisam de superfícies compartilhadas entre adaptadores para renderização de alto desempenho na GPU discreta.
O UMD discreto da GPU instala uma DLL dList pequena e separada que exporta sua função pfnQueryDListForApplication2 . O sistema operacional em si não determina em qual GPU um aplicativo deve ser executado. Em vez disso, o runtime do Direct3D chama pfnQueryDListForApplication2 no máximo uma vez durante a inicialização do Direct3D.
O driver deve consultar uma lista atualizada de informações do processo para determinar se o processo precisa ou não do desempenho aprimorado de uma GPU discreta em vez da GPU integrada.
Para obter o melhor desempenho, a DLL deve:
- Ter menos de 200 KB de tamanho
- Manter as alocações no mínimo
- Seja capaz de retornar de pfnQueryDListForApplication2 em menos de 4 ms.
Registrando a DLL dList
O UMD fornece o nome da pequena DLL dList em seu arquivo INF sob as chaves do Registro UserModeDListDriverName e UserModeDListDriverNameWow, a última sob a entrada do Registro Wow64 . Aqui está um exemplo de código INF:
[Xxx_SoftwareDeviceSettings]
...
HKR,, UserModeDListDriverName, %REG_MULTI_SZ%, dlistumd.dll
HKR,, UserModeDListDriverNameWow, %REG_MULTI_SZ%, dlistumdwow.dll