¿Cómo previene Windows Aero el rasgado de la pantalla?

14

Cuando Windows Aero está activado, no hay ningún desgarro de la pantalla, a diferencia de cuando se usa el tema básico sin Aero.

Sin embargo, ¿por qué los juegos con sincronización vertical parecen tener un retraso de entrada mucho mayor que cuando se hace algo en el escritorio? Incluso parece sincronizar juegos en ventana con V-sync desactivado, mejor de lo que sería si estuvieran usando cualquier método incorporado en el juego.

¿Por qué y cómo sucede esto o parece suceder?

Jason Powers Murray
fuente

Respuestas:

8

En realidad, la razón por la que Aero puede evitar el desgarro sin tener que forzar VSYNC en una aplicación es porque es un administrador de ventanas de composición. Dibuja el escritorio y todas las ventanas de forma asincrónica con respecto a cualquier aplicación en ejecución.

Es decir, cuando habilita la composición en Windows Vista / 7 ( siempre está habilitada en Windows 8), dibujará todas las ventanas usando una copia de la última imagen que se cambió de atrás hacia adelante. El compositor (Microsoft lo llama DWM, Desktop Window Manager ) compone todo con VSYNC habilitado, y debido a que dibuja utilizando una copia de la última imagen del búfer frontal completamente intercambiado para cada ventana, nunca muestra cuadros parcialmente dibujados. Sin embargo, tiene un efecto secundario desafortunado de evitar que el software realmente antiguo que fue diseñado para atraer al búfer frontal exclusivamente funcione correctamente, pero el software moderno no hace esto.

En pocas palabras, el DWM agrega una capa adicional de protección contra el desgarro. Una que permita que cualquier aplicación que se ejecute en el sistema dibuje a una velocidad independientemente de la frecuencia de actualización de la pantalla y aún así evitará el desgarro. En un sistema de este tipo, en modo de ventana, lo único que permite VSYNC en OpenGL o Direct3D es limitar la utilización de CPU / GPU.

Es por eso que se creó VSYNC adaptativo, la idea es no penalizar las aplicaciones que no pueden mantener la frecuencia de actualización de la pantalla al forzarlas a un factor más bajo de la frecuencia de actualización (por ejemplo, 60 Hz -> 30, 20, 15, 10, 12 , 6, 5, 4, 3, 2, 1), pero para limitar las aplicaciones que se dibujan más rápido que el monitor pueden mostrar imágenes al usar una cantidad excesiva de potencia de CPU / GPU.

Andon M. Coleman
fuente
5

Con Aero habilitado, Desktop Window Manager utiliza doble búfer :

La función Aero de Windows hace un uso extensivo del doble buffer para dibujar en la pantalla.

Fuente

Wikipedia tiene esto que decir sobre cómo se usa esto con V-sync para evitar el desgarro de la pantalla:

Durante el intervalo de supresión vertical, el controlador ordena a la tarjeta de video que copie rápidamente el área de gráficos fuera de la pantalla en el área de visualización activa (doble búfer), o trate ambas áreas de memoria como visualizables, y simplemente cambie de una a otra (página voltear).

bwDraco
fuente
66
El doble almacenamiento en búfer no evita el desgarro, evita que el usuario vea cosas en el proceso de renderización. Si tiene doble búfer y hace un cambio de página en el medio de una actualización de la pantalla, todavía se rompe.
Wyzard
Por supuesto, aún puede obtener rasgaduras si hace el doble búfer incorrectamente, pero el punto es que DB puede usarse para evitar la rotura.
nitro2k01
3

Doble almacenamiento en búfer + V-sync en resultados sin desgarros. Aero utiliza esa configuración.

DeepSpace101
fuente
2

DWM (la tecnología que permite el efecto Aero) renderiza todo en su pantalla como una superficie D3D (lo que hace posible que el video siga reproduciéndose en Flip). Esta técnica de renderizado evita automáticamente el desgarro , aunque el método del juego debería ser mejor que el método genérico DWM (después de todo, es su propio motor). Por lo tanto, es probable que el método del juego no sea tan bueno en primer lugar o no esté optimizado para su configuración.

Martheen Cahya Paulo
fuente
2
Por sí solo, el uso de Direct3D no evita el desgarro de la pantalla. Es doble amortiguación.
bwDraco