stringtranslate.com

Administrador de ventanas de escritorio

Desktop Window Manager ( DWM , anteriormente Desktop Compositing Engine o DCE ) es el administrador de ventanas de composición en Microsoft Windows desde Windows Vista que permite el uso de aceleración de hardware para representar la interfaz gráfica de usuario de Windows.

Fue creado originalmente para habilitar partes de la nueva experiencia de usuario " Windows Aero ", que permitía efectos como transparencia, cambio de ventana 3D y más. También se incluye con Windows Server 2008 , pero requiere la instalación de la función "Experiencia de escritorio" y controladores de gráficos compatibles. [1]

Arquitectura

Desktop Window Manager es un administrador de ventanas de composición , lo que significa que cada programa tiene un búfer en el que escribe datos; Luego, DWM compone el búfer de cada programa en una imagen final. En comparación, el administrador de ventanas apilables en Windows XP y versiones anteriores (y también en Windows Vista y Windows 7 con Windows Aero deshabilitado) comprende un único búfer de visualización en el que escriben todos los programas.

DWM funciona de diferentes maneras según el sistema operativo (Windows 7 o Windows Vista) y la versión de los controladores de gráficos que utiliza ( WDDM 1.0 o 1.1). En Windows 7 y con controladores WDDM 1.1, DWM sólo escribe el búfer del programa en la RAM de vídeo, incluso si se trata de un programa de interfaz de dispositivo gráfico (GDI). Esto se debe a que Windows 7 admite aceleración de hardware (limitada) para GDI [2] y, al hacerlo, no necesita mantener una copia del búfer en la RAM del sistema para que la CPU pueda escribir en él.

Debido a que el compositor tiene acceso a los gráficos de todas las aplicaciones, permite fácilmente efectos visuales que unen imágenes de múltiples aplicaciones, como la transparencia. DWM utiliza DirectX para realizar la función de composición y renderizado en la GPU, liberando a la CPU de la tarea de gestionar el renderizado desde los buffers fuera de la pantalla hasta la pantalla. Sin embargo, no afecta a las aplicaciones que pintan en los buffers fuera de la pantalla; dependiendo de las tecnologías utilizadas para ello, esto aún podría estar limitado a la CPU. Las técnicas de representación independientes de DWM, como GDI, se redirigen a los búferes al representar la interfaz de usuario (UI) como mapas de bits . Las tecnologías de renderizado compatibles con DWM, como WPF, hacen que las estructuras de datos internas estén disponibles directamente en un formato compatible con DWM. Luego, el contenido de la ventana en los buffers se convierte en texturas DirectX.

El escritorio en sí es una superficie Direct3D de pantalla completa , con ventanas representadas como una malla que consta de dos triángulos adyacentes (y mutuamente invertidos), que se transforman para representar un rectángulo 2D. La textura, que representa el cromo de la interfaz de usuario, se asigna a estos rectángulos. Las transiciones de ventanas se implementan como transformaciones de las mallas, utilizando programas de sombreado . [3] Con Windows Vista, las transiciones se limitan al conjunto de sombreadores integrados que implementan las transformaciones. Greg Schechter, un desarrollador de Microsoft, ha sugerido que esto podría abrirse para que los desarrolladores y usuarios conecten sus propios efectos en una versión futura. [4] DWM solo asigna el objeto principal del escritorio como una superficie 3D; otros objetos de escritorio, incluidos los escritorios virtuales y el escritorio seguro utilizado por el Control de cuentas de usuario, no lo son. [5]

Aero Flip demuestra múltiples características de DWM: transformación 3D de planos 2D, escalado y traducción de los planos a una posición diferente, incorporación de vistas dinámicas de una aplicación en otra y uso de programas de sombreado personalizados .
La función Aero Flip se utiliza en Windows 7

Debido a que todas las aplicaciones se procesan en un búfer fuera de la pantalla, también se pueden leer en el búfer integrado en otras aplicaciones. Dado que la aplicación actualiza constantemente el búfer fuera de la pantalla, la representación incrustada será una representación dinámica de la ventana de la aplicación y no una representación estática. Así es como funcionan las vistas previas en miniatura en vivo y Windows Flip en Windows Vista y Windows 7 . DWM expone una API pública que permite a las aplicaciones acceder a estas representaciones en miniatura. [6] El tamaño de la miniatura no es fijo; las aplicaciones pueden solicitar miniaturas en cualquier tamaño (más pequeñas que la ventana original, del mismo tamaño o incluso más grandes) y DWM las escalará adecuadamente antes de regresar. Aero Flip no utiliza las API de miniaturas públicas ya que no permiten acceder directamente a las texturas Direct3D. [7] En cambio, Aero Flip se implementa directamente en el motor DWM.

Desktop Window Manager utiliza Media Integration Layer (MIL), el compositor no administrado que comparte con Windows Presentation Foundation , para representar las ventanas como nodos de composición en un árbol de composición . El árbol de composición representa el escritorio y todas las ventanas alojadas en él, que luego MIL representa desde la parte posterior de la escena hacia el frente. [8] Dado que todas las ventanas contribuyen a la imagen final, el color de un píxel resultante puede ser decidido por más de una ventana. Esto se utiliza para implementar efectos como la transparencia por píxel. DWM permite invocar sombreadores personalizados para controlar cómo se utilizan los píxeles de múltiples aplicaciones para crear el píxel mostrado. El DWM incluye programas Pixel Shader 2.0 integrados que calculan el color de un píxel en una ventana promediando el color del píxel según lo determinado por la ventana detrás de él y sus píxeles vecinos. DWM utiliza estos sombreadores para lograr el efecto de desenfoque en los bordes de las ventanas administradas por DWM y, opcionalmente, para las áreas donde lo solicita la aplicación. [3]

Dado que MIL proporciona un sistema de gráficos en modo retenido al almacenar en caché los árboles de composición, DWM y MIL manejan el trabajo de volver a pintar y actualizar la pantalla cuando se mueven las ventanas, liberando a la aplicación de la responsabilidad. Los datos de fondo ya están en el árbol de composición y en los búferes fuera de la pantalla y se utilizan directamente para representar el fondo. En los sistemas operativos Windows anteriores a Vista, se debía solicitar a las aplicaciones en segundo plano que se volvieran a renderizar enviándoles el WM_PAINTmensaje. [6] DWM utiliza gráficos con doble búfer para evitar parpadeos y roturas al mover ventanas. [3] [6] El motor de composición utiliza optimizaciones como la selección para mejorar el rendimiento, además de no volver a dibujar áreas que no han cambiado. [8] Debido a que el compositor es compatible con varios monitores, DWM también lo admite de forma nativa. [8]

Durante las aplicaciones de pantalla completa, como los juegos, DWM no realiza composición de ventanas y, por lo tanto, el rendimiento no disminuirá apreciablemente.

En Windows 8 y Windows Server 2012 , DWM se utiliza en todo momento y no se puede desactivar debido a la nueva "experiencia de pantalla de inicio" implementada. Dado que generalmente se requiere que el proceso DWM se ejecute en todo momento en Windows 8, los usuarios que experimentan un problema con el proceso ven una disminución en el uso de la memoria después de reiniciar el sistema. Este suele ser el primer paso de una larga lista de tareas de solución de problemas que pueden ayudar. Es posible evitar que DWM se reinicie temporalmente en Windows 8, lo que hace que el escritorio se vuelva negro, la barra de tareas gris y se rompa la pantalla de inicio/aplicaciones modernas, pero las aplicaciones de escritorio seguirán funcionando y aparecerán como Windows 7 y Vista Basic. tema, basado en el renderizador de búfer único utilizado por XP. También utilizan la barra de título centrada de Windows 8, visible dentro del entorno de preinstalación de Windows . Iniciar Windows sin DWM no funcionará porque la pantalla de bloqueo requiere DWM, por lo que sólo se puede hacer sobre la marcha y no tiene ningún propósito práctico. A partir de Windows 10, deshabilitar DWM de esta manera hará que todo el motor de composición se rompa, incluso las aplicaciones de escritorio tradicionales, debido a las implementaciones de aplicaciones universales en la barra de tareas y el nuevo menú de inicio. [ cita necesaria ] A diferencia de sus predecesores, Windows 8 admite adaptadores de pantalla básicos a través de la Plataforma de rasterización avanzada de Windows (WARP), que utiliza renderizado de software y la CPU para renderizar la interfaz en lugar de la tarjeta gráfica. Esto permite que DWM funcione sin controladores compatibles, pero no al mismo nivel de rendimiento que con una tarjeta gráfica normal. DWM en Windows 8 también agrega soporte para 3D estereoscópico . [9]

Redirección

Para técnicas de renderizado que no son compatibles con DWM, la salida debe redirigirse a los buffers DWM. Con Windows, se puede utilizar GDI o DirectX para renderizar. Para que estos dos funcionen con DWM, se proporcionan técnicas de redirección para ambos.

Con GDI, que es la técnica de representación de UI más utilizada en Microsoft Windows , se notifica a cada ventana de la aplicación cuando aparece o una parte de ella y es trabajo de la aplicación renderizarse a sí misma. Sin DWM, la representación rasteriza la interfaz de usuario en un búfer en la memoria de vídeo, desde donde se representa en la pantalla. En DWM, las llamadas GDI se redirigen para utilizar Canonical Display Driver (cdd.dll), un renderizador de software. [10] Se asigna un búfer igual al tamaño de la ventana en la memoria del sistema y CDD.DLL sale a este búfer en lugar de a la memoria de video. Se asigna otro búfer en la memoria de vídeo para representar la superficie DirectX, que se utiliza como textura para las mallas de las ventanas. El búfer de memoria del sistema se convierte a la superficie DirectX por separado y se mantiene sincronizado. Esta ruta indirecta es necesaria porque GDI no puede generar directamente en formato de píxeles DirectX. El compositor lee la superficie y la compone en el escritorio en la memoria de vídeo. La escritura de la salida de GDI en la memoria del sistema no se acelera por hardware, ni tampoco la conversión a la superficie DirectX. Cuando una ventana GDI está minimizada, invisible o visible en el mismo monitor que una aplicación DirectX de pantalla completa, por limitación de GDI, la aplicación ya no recibe el búfer de mapa de bits GDI cuando solicita un contexto de dispositivo durante la pintura o actualización (esto A veces se puede ver cuando una operación GDI al copiar de una ventana a otra produce regiones negras o vacías en lugar del contenido esperado de la ventana). Por lo tanto, DWM utiliza el último mapa de bits renderizado en el búfer antes de minimizar la aplicación. [11]

A partir de Windows 7, Canonical Display Driver ya no representa la copia de la memoria del sistema cuando está presente un controlador de video compatible con WDDM 1.1/DXGI 1.1.

Para aplicaciones que usan DirectX para escribir en una superficie 3D, la implementación de DirectX en Windows Vista usa WDDM para compartir la superficie con DWM. Luego, DWM usa la superficie directamente y la asigna a las mallas de la ventana. Para las aplicaciones Windows Presentation Foundation (WPF) (que son aplicaciones DirectX), el compositor representa dichas superficies compartidas que luego se componen en el escritorio final. [11] Las aplicaciones pueden combinar cualquiera de las técnicas de renderizado en múltiples ventanas secundarias, siempre y cuando no se utilicen GDI y DirectX para renderizar la misma ventana. En ese caso, no se puede garantizar el orden entre la representación DirectX y GDI y, como tal, no se puede garantizar que el mapa de bits GDI de la memoria del sistema se haya traducido a la superficie de la memoria de video. Esto significa que es posible que la composición final no contenga los elementos renderizados en GDI. [11] Para evitar esto, DWM se desactiva temporalmente, siempre y cuando se esté ejecutando una aplicación que combine GDI y DirectX en la misma ventana.

Requisitos de hardware

En Windows Vista, DWM requiere hardware físico o virtual compatible: [12]

En Windows 7, el Administrador de ventanas del escritorio se modificó para usar Direct3D 10.1, pero los requisitos de hardware siguen siendo los mismos que en Windows Vista; El hardware Direct3D 9 es compatible con la capa " 10 Nivel 9 " introducida en el tiempo de ejecución de Direct3D 11 . Windows 8 tiene los mismos requisitos que 7, pero también puede utilizar la renderización por software cuando no hay hardware de vídeo compatible. [9]

El software de virtualización de hardware que emula el hardware necesario para DWM incluye VirtualBox 4.1 y posteriores, VMware Fusion 3.0 y posteriores y VMware Workstation 7.0 en adelante. Además, Windows Virtual PC permite la composición mediante el Protocolo de Escritorio Remoto .

Experiencia de desarrollador

La funcionalidad del desarrollador relacionada con el Administrador de ventanas de escritorio se proporciona dentro del archivo de encabezado dwmapi.hdentro del SDK de Windows .

Ver también

Notas

  1. ^ A partir de Windows 8 , donde DWM es un componente requerido que debe estar ejecutándose en todo momento, ya no es un servicio.

Referencias

  1. ^ "Cómo habilitar las funciones de experiencia de usuario de Windows Vista en una computadora que ejecuta Windows Server 2008 (MSKB947036)". Base de conocimientos . Microsoft. 15 de enero de 2008 . Consultado el 21 de abril de 2008 .
  2. ^ "Ingeniería de Windows 7".
  3. ^ a b C Greg Schechter. "Uso de DWM de DirectX, GPU y aceleración de hardware". Blog de Greg Schechter . Blogs de MSDN . Consultado el 14 de octubre de 2007 .
  4. ^ Greg Schechter. "Respondiendo a los comentarios de" Uso de DirectX, GPU y aceleración de hardware por parte de DWM"". Blog de Greg Schechter . Blogs de MSDN . Consultado el 20 de abril de 2008 .
  5. ^ Chris Jackson. "Desktop Window Manager sólo se ejecuta en el escritorio principal". La consonancia semántica de Chris Jackson . Blogs de MSDN . Consultado el 14 de octubre de 2007 .
  6. ^ a B C Greg Schechter. "Bajo el capó de Desktop Window Manager". Blog de Greg Schechter . Blogs de MSDN . Consultado el 27 de mayo de 2021 .
  7. ^ "Descripción general de miniaturas de DWM". MSDN . Archivado desde el original el 17 de julio de 2012.
  8. ^ a B C Greg Schechter. "Cómo se utilizan los conceptos y la tecnología subyacentes de WPF en DWM". Blog de Greg Schechter . Blogs de MSDN . Consultado el 14 de octubre de 2007 .
  9. ^ ab "El Administrador de ventanas del escritorio está siempre activado". Libro de recetas de compatibilidad de Windows 8 y Windows Server 2012 . MSDN . Consultado el 4 de septiembre de 2012 .
  10. ^ "Comparación de Direct2D y GDI - Blog para desarrolladores de DirectX". Archivado desde el original el 8 de abril de 2014 . Consultado el 19 de agosto de 2014 .
  11. ^ a b C Greg Schechter. "Redireccionamiento de aplicaciones GDI, DirectX y WPF". Archivado desde el original el 5 de marzo de 2010 . Consultado el 14 de octubre de 2007 .
  12. ^ "Requisitos del sistema para Windows Vista". Microsoft . 2007-11-13 . Consultado el 11 de febrero de 2009 .

Enlaces externos