Recursos adicionados em versões anteriores do WDDM 2.X
Esta página descreve os recursos dos drivers gráficos e de exibição que foram adicionados em versões anteriores do WDDM 2.X para Windows 10. Para ver os recursos adicionados à versão mais recente do WDDM 2.X, consulte Novidades para drivers gráficos e de exibição do Windows 10.
WDDM 2.6
Tinta Super Úmida
Super-Wet Ink é um recurso que gira em torno da renderização de buffer frontal. Os drivers IHV podem dar suporte à criação de texturas "exibíveis" de formatos ou modos que não são compatíveis com o hardware. Eles podem fazer isso alocando a textura que o aplicativo solicitou, juntamente com uma textura de "sombra" com um formato/layout que pode ser exibido e, em seguida, copiando entre os dois no momento. Essa "sombra" pode não ser necessariamente uma textura da maneira normal que pensamos, mas pode ser apenas dados de compactação. Além disso, pode não ser necessário existir, mas pode ser uma otimização.
O runtime evoluirá para entender esses aspectos das superfícies exibíveis:
Se uma sombra deve ou não existir para exibição em um determinado VidPnSource/plano.
Se é mais ideal para uma sombra existir.
Quando transferir o conteúdo da superfície de aplicação para a superfície de sombra. O runtime será explícito sobre essa operação, em vez de estar implícito em Present.
Como solicitar a configuração de um modo ou alternar dinamicamente entre as superfícies original e sombreada.
A varredura pode começar logo após um VBlank, varrer verticalmente de cima para baixo da imagem e ser concluída pouco antes do próximo VBlank. Isso nem sempre é o caso, dependendo do tempo do relógio de pixel e do layout dos dados na textura; especialmente se houver realmente compactação disponível.
Novos DDIs foram adicionados para separar e entender as transformações que ocorrem antes da varredura, a fim de (quando possível) habilitar a renderização do buffer frontal. Veja D3DWDDM2_6DDI_SCANOUT_FLAGS e PFND3DWDDM2_6DDI_PREPARE_SCANOUT_TRANSFORMATION.
Sombreamento de taxa variável
O sombreamento de taxa variável, ou sombreamento de pixel grosseiro, é um mecanismo para permitir a alocação de desempenho/potência de renderização em taxas variadas em imagens renderizadas.
No modelo anterior, para usar o MSAA (anti-aliasing de várias amostras) para reduzir o aliasing geométrico:
- A quantidade pela qual reduzir o aliasing geométrico precisa ser conhecida antecipadamente quando o destino é alocado.
- A quantidade pela qual reduzir o aliasing geométrico não pode ser alterada depois que o destino é alocado.
No WDDM 2.6, o novo modelo estende o MSAA para a direção oposta de pixels grosseiros, adicionando um novo conceito de sombreamento grosseiro. É aqui que o sombreamento pode ser executado em uma frequência mais grosseira que um pixel. Um grupo de pixels pode ser sombreado como uma única unidade e o resultado é transmitido para todas as amostras do grupo.
Uma API de sombreamento grosseiro permite que os aplicativos especifiquem o número de pixels que pertencem a um grupo sombreado. O tamanho do pixel grosseiro pode ser variado depois que o destino de renderização é alocado. Portanto, diferentes partes da tela ou diferentes passagens de desenho podem ter diferentes taxas de sombreamento de curso.
Uma implementação de várias camadas está disponível com dois limites que podem ser consultados pelo usuário. Para as Camadas 1 e 2, o sombreamento grosseiro está disponível para recursos de amostra única e MSAA. Para recursos MSAA, o sombreamento pode ser executado por pixel grosseiro ou por amostra, como de costume. No entanto, nas Camadas 1 e 2, para recursos MSAA, a amostragem grosseira não pode ser usada para sombrear em uma frequência entre por pixel e por amostra.
Nível 1:
A taxa de sombreamento só pode ser especificada por sorteio; nada mais granular do que isso
A taxa de sombreamento se aplica uniformemente ao que é desenhado, independentemente de onde ele está dentro do destino de renderização
Nível 2:
A taxa de sombreamento pode ser especificada por sorteio, como no Nível 1. Também pode ser especificado por uma combinação de cada sorteio e de:
- Semântica do vértice por provocação, e
- Uma imagem do espaço de tela
As taxas de sombreamento das três fontes são combinadas usando um conjunto de combinadores
O tamanho do bloco da imagem do espaço da tela é 16x16 ou menor. A taxa de sombreamento solicitada pelo aplicativo é garantida para ser entregue exatamente (para precisão de filtros temporais e outros filtros de reconstrução)
SV_ShadingRate entrada PS é suportada. A taxa de vértices por provocação, também conhecida aqui como taxa por primitivo, só é válida quando uma janela de visualização é usada e SV_ViewportIndex não é gravada.
A taxa de vértice por provocação, também conhecida como taxa por primitivo, poderá ser usada com mais de um visor se o limite SupportsPerVertexShadingRateWithMultipleViewports estiver marcado como true. Além disso, nesse caso, ele pode ser usado quando SV_ViewportIndex é gravado.
Veja PFND3D12DDI_RS_SET_SHADING_RATE_0062 e D3D12DDI_SHADING_RATE_0062.
Coletar informações de diagnóstico
Coletar informações de diagnóstico permite que o sistema operacional colete dados privados de drivers para adaptadores gráficos que consistem em funções de renderização e exibição. Esse novo recurso é um requisito no WDDM 2.6.
A nova DDI deve permitir que o sistema operacional colete informações a qualquer momento em que um driver for carregado. Atualmente, o sistema operacional usa a função DxgkDdiCollectDebugInfo implementada pelo miniporto para consultar dados privados do driver para casos relacionados ao TDR (detecção e recuperação de tempo limite). O novo DDI será usado para coletar dados por vários motivos. O sistema operacional chamará essa DDI quando o diagnóstico for necessário, fornecendo um tipo de informação que está sendo solicitada. O driver deve coletar todas as informações privadas importantes para investigar o problema e enviá-las ao sistema operacional. DxgkDdiCollectDebugInfo será eventualmente preterido e substituído por DxgkDdiCollectDiagnosticInfo.
Veja DXGKDDI_COLLECTDIAGNOSTICINFO.
Processamento em segundo plano
O processamento em segundo plano permite que os drivers do modo de usuário expressem o comportamento de threading desejado e o runtime para controlá-lo/monitorá-lo. Os drivers do modo de usuário criariam threads em segundo plano e atribuiriam os threads com a prioridade mais baixa possível e dependeriam do agendador NT para garantir que esses threads não interrompessem os threads de caminho crítico, geralmente com êxito.
As APIs permitem que os aplicativos ajustem a quantidade de processamento em segundo plano apropriada para suas cargas de trabalho e quando executar esse trabalho.
Veja PFND3D12DDI_QUEUEPROCESSINGWORK_CB_0062.
Atualização dinâmica do driver
A atualização a quente do driver reduz o tempo de inatividade do servidor o máximo possível quando um componente do sistema operacional precisa ser atualizado.
O patch quente do driver é usado para aplicar um patch de segurança ao driver do modo kernel. Nesse caso, o driver é solicitado a economizar memória do adaptador, o adaptador é interrompido, o driver é descarregado, o novo driver é carregado e o adaptador é iniciado novamente.
VejaDXGKDDI_SAVEMEMORYFORHOTUPDATE e DXGKDDI_RESTOREMEMORYFORHOTUPDATE.
WDDM 2.5
Cargas de trabalho rastreadas
As cargas de trabalho controladas são um recurso experimental que fornece mais controle sobre a compensação entre a execução mais rápida do processador e o menor consumo de energia e não está disponível até novo aviso. A implementação foi removida do Windows 10, versão 2003; e preterido de versões anteriores do sistema operacional como parte de uma correção de segurança.
Alterações de conteúdo
Tópico | Data | Descrição |
---|---|---|
Extensão EDID (VSDB) para HMDs e monitores especializados | 03/12/2018 | Especificação para fabricantes de displays |
Subsistema de kernel gráfico DirectX (Dxgkrnl.sys) | 12/04/2018 | Interfaces de modo kernel que o sistema operacional Windows implementa por meio do subsistema de kernel gráfico do Microsoft DirectX (Dxgkrnl.sys). |
Recursos do WDDM 2.1 | 01/10/2019 | Descreve recursos novos e atualizados para o WDDM 2.1 |
Traçado de raios
Novas DDIs do Direct3D foram criadas em paralelo às APIs do Direct3D, para dar suporte ao raytracing acelerado por hardware. Exemplos de DDIs incluem:
- PFND3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_0054
- PFND3D12DDI_COPY_RAYTRACING_ACCELERATION_STRUCTURE_0054
- PFND3D12DDI_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_0054
- PFND3D12DDI_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_0054
Para obter mais informações sobre raytracing, consulte:
- Anunciando o Microsoft DirectX Raytracing
- DirectX Raytracing e a atualização do Windows 10 de outubro de 2018
Sincronização de exibição
O sistema operacional verificará os recursos de sincronização de exibição quando a exibição for exposta pelo driver ao sistema operacional, portanto, antes de habilitar a exibição. Para dispositivos filho TypeIntegratedDisplay, isso é relatado por meio de uma chamada para DxgkDdiQueryAdapterInfo com Type DXGKQAITYPE_INTEGRATED_DISPLAY_DESCRIPTOR2 durante a inicialização do adaptador. Para dispositivos filho TypeVideoOutput, que têm suporte a partir do WDDM 2.5, os recursos são relatados como parte do processamento de hot plug por meio de DxgkDdiUpdateMonitorLinkInfo para que os recursos possam ser alterados com base no monitor de destino ou conectado.
O sistema operacional especifica a sincronização de exibição na chamada DxgkDdiSetTimingsFromVidPn no campo Input na estrutura de DXGK_SET_TIMING_PATH_INFO por caminho.
WDDM 2.1
O WDDM 2.1 permite novos cenários e fornece melhorias significativas nas áreas de desempenho, confiabilidade, resiliência de atualização, melhorias de diagnóstico e avanços futuros do sistema para o subsistema gráfico do Windows. O modelo de driver WDDM 2.0 é um pré-requisito para D3D12. O WDDM 2.0 e o DirectX12 estão disponíveis apenas no Windows 10 e superior.
Veja a seguir uma lista de adições e atualizações de recursos para o WDDM 2.1.
Melhor desempenho gráfico, reduzindo o tempo de sobrecarga gasto no gerenciamento de memória e o uso mais eficiente da escassa memória gráfica. As melhorias de desempenho gráfico são:
- Ofereça e recupere recursos – ofereça e recupere melhorias para reduzir o volume de memória de aplicativos executados em segundo plano.
- Suporte para codificação de entrada de tabela de página de 2 MB – no WDDM 2.1, a codificação PTE (entrada de tabela de página) grande na VRAM está habilitada. Essa alteração aumenta o desempenho em sistemas que a suportam.
- Suporte para páginas de memória de 64 KB – as alocações de memória virtual usando uma granularidade de 64 KB também têm suporte no WDDM 2.1. Essa alteração beneficia especialmente APUs e SoCs, reduzindo a sobrecarga de acesso a páginas de memória virtual.
Aprimoramentos de conteúdo protegido baseado em hardware com o envio em lote atual (PlayReady 3.0)
Instalação do Repositório de Driver para drivers gráficos para melhorar a resiliência de atualização do driver.
DXIL, uma nova linguagem de sombreamento
Melhorias de desempenho e otimização do D3D12
Opções de diagnóstico aprimoradas para desenvolvedores
Para obter mais informações, consulte Recursos do WDDM 2.1.
WDDM 2.0
O WDDM 2.0 inclui atualizações de gerenciamento de memória.
Memória virtual da GPU
- Toda a memória física é abstraída em segmentos virtuais que podem ser gerenciados pelo gerenciador de memória da unidade de processamento gráfico (GPU).
- Cada processo obtém seu próprio espaço de endereço virtual de GPU.
- O suporte para intervalos giratórios foi removido.
Para obter mais detalhes, consulte Memória virtual de GPU no WDDM 2.0.
Residência do motorista
- O gerenciador de memória de vídeo garante que as alocações sejam residentes na memória antes de enviar buffers de comando para o driver. Para facilitar essa funcionalidade, DDIs (interfaces de driver de dispositivo) de driver de modo de usuário foram adicionadas (MakeResident, TrimResidency, Evict).
- A lista de locais de alocação e patch é descontinuada porque não é necessária no modelo WDDM 2.0.
- Os drivers do modo de usuário agora são responsáveis por lidar com o acompanhamento de alocação. Vários DDIs foram adicionados para permitir isso.
- Os drivers recebem orçamentos de memória e devem se adaptar sob pressão de memória. Isso permite que os drivers universais do Windows funcionem em plataformas de aplicativos.
- DDIs foram adicionados para sincronização de processos e monitoramento de contexto.
Para obter mais detalhes, consulte Residência do driver no WDDM 2.0.