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 de Microsoft Windows desde Windows Vista que permite el uso de la aceleración de hardware para renderizar la interfaz gráfica de usuario de Windows.

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

Arquitectura

El Administrador de ventanas de escritorio 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 de apilamiento de Windows XP y versiones anteriores (y también de Windows Vista y Windows 7 con Windows Aero deshabilitado) consta de un único búfer de pantalla en el que escriben todos los programas.

DWM funciona de diferentes maneras dependiendo del sistema operativo (Windows 7 o Windows Vista) y de la versión de los controladores gráficos que utilice ( WDDM 1.0 o 1.1). En Windows 7 y con los controladores WDDM 1.1, DWM solo escribe el búfer del programa en la RAM de video, incluso si se trata de un programa de interfaz de dispositivo gráfico (GDI). Esto se debe a que Windows 7 admite la 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 elementos visuales de múltiples aplicaciones, como la transparencia. DWM usa DirectX para realizar la función de composición y renderización en la GPU, liberando a la CPU de la tarea de administrar la renderización 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 eso, esto aún podría estar limitado por la CPU. Las técnicas de renderización independientes de DWM como GDI se redirigen a los buffers al renderizar la interfaz de usuario (UI) como mapas de bits . Las tecnologías de renderización compatibles con DWM como WPF hacen que las estructuras de datos internas estén disponibles directamente en un formato compatible con DWM. El contenido de la ventana en los buffers luego 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 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, así como el escritorio seguro utilizado por el Control de cuentas de usuario, no lo hacen. [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 .
Función Aero Flip utilizada en Windows 7

Debido a que todas las aplicaciones se renderizan en un búfer fuera de la pantalla, también se pueden leer del búfer integrado en otras aplicaciones. Dado que la aplicación actualiza constantemente el búfer fuera de la pantalla, la renderización integrada será una representación dinámica de la ventana de la aplicación y no una renderizació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 las 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á correctamente 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.

El 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 son renderizadas por MIL desde la parte posterior de la escena hasta 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. 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 mediante el almacenamiento en caché de los árboles de composición, la tarea de volver a pintar y actualizar la pantalla cuando se mueven las ventanas es manejada por DWM y MIL, 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 pantalla y se utilizan directamente para renderizar 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 cortes al mover ventanas. [3] [6] El motor de composición utiliza optimizaciones como la eliminación selectiva para mejorar el rendimiento, así como para 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 aplicaciones de pantalla completa, como 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 utiliza en todo momento y no se puede desactivar, debido a la nueva "experiencia de pantalla de inicio" implementada. Dado que el proceso DWM suele ser necesario que se ejecute en todo momento en Windows 8, los usuarios que experimentan un problema con el proceso ven que el uso de la memoria disminuye 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 rompa la pantalla de inicio/aplicaciones modernas, pero las aplicaciones de escritorio seguirán funcionando y se verán como el tema básico de Windows 7 y Vista, basado en el renderizador de un solo búfer 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 solo se puede hacer sobre la marcha y no tiene ningún propósito práctico. A partir de Windows 10, deshabilitar DWM de esa 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 Windows Advanced Rasterization Platform (WARP), que utiliza la representación 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 ]

Redirección

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

Con GDI, que es la técnica de renderizado de UI más utilizada en Microsoft Windows , cada ventana de la aplicación recibe una notificación cuando aparece en pantalla o en parte de ella, y la aplicación se encarga de renderizarse a sí misma. Sin DWM, el renderizado rasteriza la UI en un búfer en la memoria de vídeo, desde donde se renderiza a la pantalla. Con DWM, las llamadas GDI se redirigen para utilizar el controlador de pantalla canónico (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 envía la salida a este búfer en lugar de a la memoria de vídeo. 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 la ventana. El búfer de la 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íxel 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 se minimiza, se vuelve invisible o visible en el mismo monitor que una aplicación DirectX de pantalla completa, debido a una limitación de GDI, la aplicación ya no recibe el búfer de mapa de bits de GDI cuando solicita un contexto de dispositivo durante el pintado o la actualización (esto a veces se puede ver cuando una operación GDI que copia de una ventana a otra genera regiones negras o vacías en lugar del contenido de ventana esperado). Por lo tanto, DWM utiliza 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 procesa la copia de memoria del sistema cuando hay un controlador de video compatible con WDDM 1.1/DXGI 1.1.

Para las aplicaciones que utilizan DirectX para escribir en una superficie 3D, la implementación de DirectX en Windows Vista utiliza WDDM para compartir la superficie con DWM. DWM luego utiliza 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 realiza la renderización en dichas superficies compartidas que luego se componen en el escritorio final. [11] Las aplicaciones pueden mezclar ambas técnicas de renderización en varias ventanas secundarias, siempre que no se utilicen tanto GDI como DirectX para renderizar la misma ventana. En ese caso, no se puede garantizar el orden entre la renderizació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 video. Esto significa que la composición final puede no contener los elementos renderizados por GDI. [11] Para evitar esto, DWM se desactiva temporalmente, siempre que se esté ejecutando una aplicación que mezcle 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 ha rediseñado para utilizar 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 entorno de ejecución Direct3D 11. Windows 8 tiene los mismos requisitos que 7, pero también puede utilizar renderizado de software cuando no hay hardware de video compatible. [9]

Entre los programas de virtualización de hardware que emulan el hardware necesario para DWM se incluyen VirtualBox 4.1 y versiones posteriores, VMware Fusion 3.0 y versiones posteriores, y VMware Workstation 7.0 y versiones posteriores. 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 del escritorio se proporciona dentro del archivo de encabezado dwmapi.hdentro del SDK de Windows .

Véase también

Notas

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

Referencias

  1. ^ "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 conocimiento . Microsoft. 15 de enero de 2008 . Consultado el 21 de abril de 2008 .
  2. ^ "Ingeniería de Windows 7".
  3. ^ abc Greg Schechter. "Uso de DirectX, GPU y aceleración de hardware por parte de DWM". Blog de Greg Schechter . Blogs de MSDN . Consultado el 14 de octubre de 2007 .
  4. ^ Greg Schechter. "Respuesta 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". Consonancia semántica de Chris Jackson . Blogs de MSDN . Consultado el 14 de octubre de 2007 .
  6. ^ abc 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 las miniaturas de DWM". MSDN . Archivado desde el original el 17 de julio de 2012.
  8. ^ abc 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 siempre está 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. ^ abc 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 2009-02-11 .

Enlaces externos