Fornecendo transições de estado contínuo no WDDM 1.2 e posterior

Começando no Windows 8, vários recursos ajudam a minimizar ou eliminar flashes de tela e cintilações durante o processo de inicialização, durante transições de estados de energia inferiores e durante as transições de volta para o controle do sistema operacional em atualizações de driver ou verificações de bugs do sistema. Além disso, o firmware do sistema em computadores Windows 8 e posteriores deve detectar a resolução nativa e o tempo do painel de exibição integrado no momento da ativação e entregar essas informações ao sistema operacional. O WDDM (Windows Display Driver Model) 1.2 e posterior exibem drivers de miniporta devem dar suporte a esse comportamento.

Versão mínima do WDDM 1,2
Versão mínima do Windows 8
Implementação do driver – elementos gráficos completos e Somente exibição Obrigatório
Requisitos e testes do WHCK

System.Client.Firmware.UEFI.GOP.Display

Device.Graphics... PnpStopStartSupport

Device.Graphics... DisplayOutputControl

Transição do firmware para o sistema operacional

Todos os sistemas de Windows 8 destinados a SKUs cliente devem dar suporte ao PROTOCOLOP (Unified Extensible Firmware Interface) GOP (Unified Extensible Firmware Output Protocol). Durante a fase de inicialização, o GOP define o tempo nativo e a resolução nativa no painel de exibição integrado do sistema. Quando o sistema operacional estiver pronto para assumir a propriedade da tela, o GOP entregará um buffer de quadros que pode ser usado para verificar a exibição. Neste momento, o sistema operacional não tenta redefinir os intervalos de exibição ou a resolução, mas simplesmente usa o buffer de quadro fornecido, eliminando assim um flash de tela.

Requisitos de certificação de hardware

Para obter informações sobre os requisitos que os dispositivos de hardware devem atender ao implementar esse recurso, consulte a documentação relevante do WHCK em System.Client.Firmware.UEFI.GOP.Display.

Transição do sistema operacional para o driver

Quando o sistema operacional entrega a propriedade da exibição ao driver WDDM após uma inicialização, ele inicia um início de Plug and Play (PnP) do dispositivo chamando a função DxgkDdiStartDevice. Como alternativa, depois de retomar a hibernação, o sistema operacional inicia o dispositivo chamando a função DxgkDdiSetPowerState com o parâmetro DeviceUid definido como DISPLAY_ADAPTER_HW_ID (definido em Video.h). No momento, normalmente, a tela fica em branco (renderiza como preto), enquanto o driver de gráficos do WDDM assume o controle.

O driver pode chamar a função DxgkCbAcquirePostDisplayOwnership (disponível a partir de Windows 8) para consultar o sistema operacional quanto ao estado exato do buffer de quadro atual e ao modo de exibição definido pelo firmware e pelo carregador de inicialização. Com as informações na estrutura DXGK_DISPLAY_INFORMATION recuperadas por essa função, é possível que o driver mantenha o controlador de exibição ativo e não cause uma nova sincronização do monitor. Como o driver também tem informações detalhadas sobre o buffer de quadros, é possível realizar uma transição mais suave.

Mais detalhes sobre o início do PnP são dados em Plug and Play (PnP) no WDDM 1.2 e posterior.

Transição do driver para o sistema operacional

O sistema operacional pode solicitar uma parada PnP do dispositivo de exibição chamando a função DxgkDdiStopDevice . No momento, normalmente, a tela fica em branco (renderiza como preto), enquanto o sistema operacional assume o controle de exibição. O sistema operacional pode chamar a função DxgkDdiStopDeviceAndReleasePostDisplayOwnership (disponível a partir de Windows 8) que exige que o driver WDDM configure um buffer de quadro configurado para verificação. O sistema operacional pode renderizar nesse buffer de quadros enquanto ele está no controle da exibição, tornando possível executar uma transição suave.

Mais detalhes sobre a parada PnP, incluindo cenários adicionais, são fornecidos em Plug and Play (PnP) no WDDM 1.2 e posterior.

Requisitos de certificação de hardware

Para obter mais informações sobre essa entrega, consulte a documentação relevante do WHCK em Device.Graphics... PnpStopStartSupport.

Transição para o sistema operacional sem desabilitar o driver

Às vezes, o sistema operacional apresenta um erro irrecuperável e precisa emitir um bug do sistema marcar. Quando isso acontece, há certos casos em que o sistema operacional precisa assumir o controle da exibição, mas não tem a capacidade de parar o driver WDDM. Os drivers WDDM 1.2 e posteriores são necessários para implementar as funções DxgkDdiSystemDisplayEnable e DxgkDdiSystemDisplayWrite , que permitem que o sistema operacional faça a transição direta para um estado em que possa exibir a tela de erro enquanto mantém a interface gráfica em uma profundidade de cor e alta resolução. Essa transição elimina uma experiência de usuário chocante.

Requisitos de certificação de hardware

Para obter informações sobre os requisitos que os dispositivos de hardware devem atender ao implementar esse recurso, consulte a documentação relevante do WHCK em Device.Graphics... DisplayOutputControl.

Windows 8 alterações no modo de firmware

Essas são alterações no modo de exibição do firmware antes que o firmware desative o controle para o sistema operacional:

Drivers WDDM 1.2 e posteriores (DXGKDDI_INTERFACE_VERSION>= DXGKDDI_INTERFACE_VERSION_WIN8)
Para eliminar ainda mais os flashes de exibição, começando com Windows 8, as solicitações de alteração do modo Int10 não são chamadas no firmware para drivers WDDM 1.2 e posteriores.

Além disso, se ocorrer uma alteração de modo enquanto o monitor estiver desativado, o sistema operacional chamará a função DxgkDdiCommitVidPn apenas uma vez, com o parâmetro pCommitVidPnArg definido como o valor que ele teria se o monitor estivesse ativado e o membro PathPoweredOff de pCommitVidPnArg-Flags> definido como TRUE.

Drivers WDDM 1.0 e 1.1 (DXGKDDI_INTERFACE_VERSION<DXGKDDI_INTERFACE_VERSION_WIN8)
Para drivers WDDM 1.0 e 1.1 em execução em Windows 8, durante o processo de inicialização ou ao retomar da hibernação, são feitas chamadas para o modo VGA Int10 0x12 que definem a resolução de exibição para a alta resolução nativa do monitor. Antes de Windows 8, um modo int10 VGA 0x12 chamada definir a resolução de exibição como 640 x 480 pixels, a 16 bits por pixel, sem cursor piscando, para mostrar a imagem da tela inicial do sistema operacional.

No entanto, para drivers WDDM versões 1.0 e 1.1 que indicam que eles não dão suporte ao modo de alta resolução, começando em Windows 8 uma inicialização no modo VGA 0x12 define a resolução de exibição como 640 x 480 pixels, a 16 bits por pixel, sem cursor piscando. Quando o sistema for retomado da hibernação, a resolução de exibição ainda será definida como alta resolução nativa do monitor.

Além disso, se ocorrer uma alteração de modo enquanto o monitor estiver desativado, o sistema operacional chama a função DxgkDdiCommitVidPn conforme descrito acima para drivers WDDM 1.2, além de chamar DxgkDdiCommitVidPn uma segunda vez com uma VidPN (rede de vídeo presente) vazia em pCommitVidPnArg-hFunctionalVidPn> e nenhum dos valores de sinalizador definidos em pCommitVidPnArg-Flags.>

Essa sequência de chamadas em duas partes também ocorre quando o sistema é retomado após a hibernação e a geração de sincronização do monitor deve permanecer habilitada. Nesse caso, o driver não deve executar nenhuma ação quando receber a segunda chamada para DxgkDdiCommitVidPn.