Como o Windows Aero evita o rompimento da tela?

Como o Windows Aero evita o rompimento da tela?

Quando o Windows Aero está ativado, não há quebra de tela, ao contrário do tema Básico sem o Aero.

Por que, porém, os jogos com sincronização vertical parecem ter um atraso de entrada muito maior do que quando se faz algo na área de trabalho? Parece até sincronizar jogos em janela com o V-sync desativado, melhor do que seria se estivessem usando qualquer método integrado ao jogo.

Por que e como isso acontece ou parece acontecer?

Responder1

Na verdade, a razão pela qual o Aero pode evitar o rasgo sem ter que forçar o VSYNC em um aplicativo é porque ele é um gerenciador de janelas de composição. Ele desenha a área de trabalho e todas as janelas de forma assíncrona em relação a qualquer aplicativo em execução.

Ou seja, quando você habilita a composição no Windows Vista/7 (ésemprehabilitado no Windows 8), ele desenhará todas as janelas usando uma cópia da última imagem que foi trocada de trás para frente. O compositor (a Microsoft chama de DWM,Gerenciador de janelas da área de trabalho) compõe tudo com VSYNC ativado e porque desenha usando uma cópia do últimototalmente trocadoimagem do buffer frontal para cada janela, ela nunca exibe quadros parcialmente desenhados. No entanto, ele tem o efeito colateral infeliz de impedir que softwares realmente antigos, projetados exclusivamente para o buffer frontal, funcionem corretamente - mas o software moderno não faz isso.

Resumindo, o DWM adiciona uma camada adicional de proteção contra rasgos. Um que permitirá que qualquer aplicativo em execução no sistema desenhe a uma taxa independente da taxa de atualização da tela e ainda evite rasgos. Em tal sistema, no modo de janela, a única coisa que permite VSYNC em OpenGL ou Direct3D é realmente reduzir a utilização de CPU/GPU.

É por isso que o VSYNC adaptativo foi criado, a ideia é não penalizar os aplicativos que não conseguem sustentar a taxa de atualização da tela, forçando-os a um fator mais baixo da taxa de atualização (por exemplo, 60 Hz -> 30, 20, 15, 10, 12 , 6, 5, 4, 3, 2, 1), mas para limitar os aplicativos que estão desenhando mais rápido do que o monitor pode exibir imagens usando uma quantidade excessiva de energia da CPU/GPU.

Responder2

Com o Aero ativado, o Desktop Window Manager usabuffer duplo:

O recurso Windows Aero faz uso extensivo de buffer duplo para desenhar na tela.

Fonte

Wikipédiatem isto a dizer sobre como isso é usado com o V-sync para evitar quebras de tela:

Durante o intervalo de supressão vertical, o driver ordena que a placa de vídeo copie rapidamente a área gráfica fora da tela para a área de exibição ativa (buffer duplo) ou trate ambas as áreas de memória como exibíveis e simplesmente alterne entre elas (página lançando).

Responder3

Buffer duplo + V-sync ativado resulta em nenhum tearing. Acontece que o Aero usa essa configuração.

Responder4

DWM (a tecnologia que permite o efeito Aero) renderiza tudo na sua tela como uma superfície D3D (que possibilita que o vídeo continue sendo reproduzido no Flip). Esta técnica de renderização impede automaticamenterasgando, embora o método do jogo deva ser melhor que o método DWM genérico (afinal, é o seu próprio mecanismo). Portanto, é provável que o método de jogo não seja tão bom ou não tenha sido otimizado para sua configuração.

informação relacionada