Desktop Window Manager ( DWM , anteriormente Desktop Compositing Engine o DCE ) es el administrador de ventanas en Windows Vista , Windows 7 , Windows 8 y Windows 10 que permite el uso de la aceleración de hardware para representar la interfaz gráfica de usuario de Windows.
Desarrollador (es) | Microsoft |
---|---|
Versión inicial | 30 de noviembre de 2006 |
Sistema operativo | Microsoft Windows |
Nombre del Servicio | UxSms |
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 . Esto significa que cada programa tiene un búfer en el que escribe datos; DWM continuación, composites memoria intermedia de cada programa en una imagen final. En comparación, el administrador de ventanas apilables en Windows XP y versiones anteriores (y también Windows Vista y Windows 7 con Windows Aero desactivado) comprende un único búfer de pantalla en el que escriben todos los programas.
DWM funciona de diferentes formas según el sistema operativo (Windows 7 o Windows Vista) y la versión de los controladores gráficos que utiliza ( WDDM 1.0 o 1.1). En Windows 7 y con controladores WDDM 1.1, DWM solo escribe el búfer del programa en la RAM de video, incluso si es 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 combinan imágenes de múltiples aplicaciones, como la transparencia. DWM usa DirectX para realizar la función de composición y renderizado en la GPU, liberando a la CPU de la tarea de administrar el renderizado de los búferes fuera de la pantalla a la pantalla. Sin embargo, no afecta las aplicaciones que pintan en los búferes fuera de la pantalla; dependiendo de las tecnologías utilizadas para eso, esto aún podría estar vinculado a la CPU. Las técnicas de representación independientes de DWM como GDI se redirigen a los búferes representando la interfaz de usuario (UI) como mapas de bits . Las tecnologías de renderizado con reconocimiento de DWM, como WPF, hacen que las estructuras de datos internas estén disponibles en un formato compatible con DWM. El contenido de la ventana en los búferes luego se convierte a texturas DirectX.
El escritorio en sí es una superficie Direct3D de pantalla completa , con las 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 luego a estos rectángulos. Las transiciones de ventana 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 de escritorio principal como una superficie 3D; otros objetos de escritorio, incluidos los escritorios virtuales y el escritorio seguro que utiliza el Control de cuentas de usuario, no lo son. [5]
![](http://wikiimg.tojsiabtv.com/wikipedia/en/thumb/3/31/Vista_Flip_3d.png/220px-Vista_Flip_3d.png)
![](http://wikiimg.tojsiabtv.com/wikipedia/en/thumb/5/59/Windows7_flip.png/220px-Windows7_flip.png)
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 de miniaturas en vivo y Windows Flip en Windows Vista y Windows 7 . DWM expone una API pública que permite que las aplicaciones accedan a estas representaciones en miniatura. [6] El tamaño de la miniatura no es fijo; las aplicaciones pueden solicitar las miniaturas de cualquier tamaño (más pequeñas que la ventana original, del mismo tamaño o incluso más grandes) y DWM las escalará correctamente antes de regresar. Aero Flip no utiliza las API de miniaturas públicas, ya que no permiten acceder directamente a las texturas de Direct3D. [7] En cambio, Aero Flip se implementa directamente en el motor DWM.
Desktop Window Manager usa 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 son procesadas por MIL 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 se puede decidir en más de una ventana. 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 varias aplicaciones para crear el píxel mostrado. El DWM incluye programas integrados Pixel Shader 2.0 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. Estos sombreadores son utilizados por DWM para lograr el efecto de desenfoque en los bordes de las ventanas gestionadas por DWM, y opcionalmente para las áreas donde lo solicita la aplicación. [3]
Dado que MIL proporciona un sistema de gráficos de modo retenido al almacenar en caché los árboles de composición, el trabajo de volver a pintar y actualizar la pantalla cuando se mueven las ventanas es manejado por DWM y MIL, liberando la aplicación de la responsabilidad. Los datos de fondo ya están en el árbol de composición y los búferes fuera de la pantalla y se utilizan directamente para renderizar el fondo. En los sistemas operativos Windows anteriores a Vista, era necesario solicitar a las aplicaciones en segundo plano que se volvieran a renderizar enviándoles el WM_PAINT
mensaje. [6] DWM utiliza gráficos de doble búfer para evitar parpadeos y roturas al mover ventanas. [3] [6] El motor de composición utiliza optimizaciones como la selección selectiva para mejorar el rendimiento, así como no volver a dibujar las á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 la composición de ventanas y, por lo tanto, el rendimiento no disminuirá apreciablemente.
En Windows 8 y Windows Server 2012 , DWM se usa en todo momento y no se puede deshabilitar 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 resolució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 rompa la pantalla de inicio / aplicaciones modernas, pero las aplicaciones de escritorio continuarán funcionando y aparecerán como Windows 7 y Vista's 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 en el entorno de preinstalación de Windows . Iniciar Windows sin DWM no funcionará porque la pantalla de bloqueo requiere DWM, por lo que solo se puede hacer sobre la marcha y no tiene ningún propósito práctico. A partir de Windows 10, deshabilitar DWM de tal 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 requerida ] 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 el procesamiento de software y la CPU para representar 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]
Redireccionamiento
Para las técnicas de renderizado que no son compatibles con DWM, la salida debe redirigirse a los búferes DWM. Con Windows, se puede usar 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 la interfaz de usuario más utilizada en Microsoft Windows , cada ventana de la aplicación recibe una notificación cuando ella o una parte de ella aparece a la vista y es tarea de la aplicación renderizarse a sí misma. Sin DWM, el renderizado rasteriza la interfaz de usuario en un búfer en la memoria de video, desde donde se renderiza a la pantalla. En DWM, las llamadas GDI se redirigen para utilizar Canonical Display Driver (cdd.dll), un procesador de software. [10] Se asigna un búfer igual al tamaño de la ventana en la memoria del sistema y las salidas CDD.DLL a este búfer en lugar de a la memoria de vídeo. Se asigna otro búfer en la memoria de video para representar la superficie DirectX, que se utiliza como textura para las mallas de la ventana. El búfer de memoria del sistema se convierte a la superficie DirectX por separado y se mantiene sincronizado. Esta ruta de ida y vuelta es necesaria porque GDI no puede generar directamente en formato de píxeles DirectX. El compositor lee la superficie y la integra en el escritorio en la memoria de video. 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 puede ser visto cuando una operación de GDI que copia de una ventana a otra genera regiones negras o vacías en lugar del contenido de la ventana esperado). Por lo tanto, DWM usa el último mapa de bits renderizado en el búfer antes de que se minimizara la aplicación. [11]
A partir de Windows 7, Canonical Display Driver ya no se procesa en la copia de la memoria del sistema cuando hay un controlador de video compatible con WDDM 1.1 / DXGI 1.1.
Para las 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 de Windows Presentation Foundation (WPF) (que son aplicaciones DirectX), el compositor renderiza en dichas superficies compartidas que luego se componen en el escritorio final. [11] Las aplicaciones pueden combinar cualquiera de las técnicas de renderizado en varias ventanas secundarias, siempre que no se utilicen GDI y DirectX para renderizar la misma ventana. En ese caso, no se puede garantizar el orden entre la representación de 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 vídeo. Esto significa que la composición final puede no contener los elementos renderizados con GDI. [11] Para evitar esto, DWM se desactiva temporalmente, siempre que 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]
- Una GPU que admita el modelo de controlador de pantalla de Windows (WDDM)
- Soporte Direct3D 9
- Compatibilidad con Pixel Shader 2.0
- Soporte para 32 bits por píxel
- Pasa la prueba de aceptación de Windows Aero en el Kit de controladores de Windows (WDK)
En Windows 7, Desktop Window Manager se ha modificado para utilizar Direct3D 10.1, pero los requisitos de hardware siguen siendo los mismos que en Windows Vista; El hardware de 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 el procesamiento de software cuando no hay hardware de video compatible. [9]
El software de virtualización de hardware que emula el hardware requerido para DWM incluye VirtualBox 4.1 y posterior, VMware Fusion 3.0 y posterior y VMware Workstation 7.0 en adelante. Además, Windows Virtual PC permite la composición mediante el protocolo de escritorio remoto .
Ver también
- Compiz
- entorno de escritorio
Referencias
- ^ "Cómo habilitar las características de la experiencia del usuario de Windows Vista en un equipo que ejecuta Windows Server 2008 (MSKB947036)" . Base de conocimientos . Microsoft. 15 de enero de 2008 . Consultado el 21 de abril de 2008 .
- ^ http://blogs.msdn.com/e7/archive/2009/04/25/engineering-windows-7-for-graphics-performance.aspx
- ^ 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 .
- ^ Greg Schechter. "Responder a los comentarios del" uso de DWM de DirectX, GPU y aceleración de hardware " " . Blog de Greg Schechter . Blogs de MSDN . Consultado el 20 de abril de 2008 .
- ^ Chris Jackson. "Desktop Window Manager solo se ejecuta en el escritorio principal" . Consonancia semántica de Chris Jackson . Blogs de MSDN . Consultado el 14 de octubre de 2007 .
- ^ a b c Greg Schechter. "Bajo el capó del Desktop Window Manager" . Blog de Greg Schechter . Blogs de MSDN . Consultado el 27 de mayo de 2021 .
- ^ [1]
- ^ a b c Greg Schechter. "Cómo se utilizan los conceptos y la tecnología subyacentes de WPF en el DWM" . Blog de Greg Schechter . Blogs de MSDN . Consultado el 14 de octubre de 2007 .
- ^ a b "Desktop Window Manager está siempre activado" . Libro de recetas de compatibilidad de Windows 8 y Windows Server 2012 . MSDN . Consultado el 4 de septiembre de 2012 .
- ^ "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 .
- ^ a b c Greg Schechter. "Redirigir aplicaciones GDI, DirectX y WPF" . Archivado desde el original el 5 de marzo de 2010 . Consultado el 14 de octubre de 2007 .
- ^ "Requisitos del sistema para Windows Vista" . Microsoft . 2007-11-13 . Consultado el 11 de febrero de 2009 .
enlaces externos
- Administrador de ventanas de escritorio
- API en el Administrador de ventanas de escritorio
- Usando las API de DWM
- ¿Qué es DWM.exe? ¿Es un virus?