Como ya dije en la primera parte, la característica más destacada de la composición de escritorio consiste en que las aplicaciones no dibujan directamente sobre la pantalla, sino que lo hacen sobre búferes internos, y es el sistema operativo el que en última instancia "compone" todas las imágenes en pantalla. Este proceso de redirección es complejo, y lo resumo para los dos tipos principales de aplicaciones gráficas: GDI y DirectX (existe también la "mezcla" de ambas, pero este tema no se tratará en este artículo).
Las aplicaciones que dispongan de ventanas GDI (la gran mayoría) disponen de dos búferes, uno en memoria del sistema y otro en memoria de vídeo. Todas las operaciones se realizan sobre memoria de sistema, el sistema operativo es el que decide actualizar cada cierto tiempo porciones de memoria de vídeo con las superficies almacenadas en memoria de sistema. La composición de escritorio se realiza con las superficies de memoria de vídeo.
Las aplicaciones de tipo DirectX sólo disponen de un búfer en memoria de vídeo, pues éstas ya renderizan píxeles en un formato que "entiende" DWM. La redirección ocurre cuando DWM y la aplicación DirectX comparten una superficie donde se realiza el renderizado, cosa que sólo es posible cuando DirectX se sustenta en controladores WDDM.
El proceso de redirección, como puede observar, es bastante complejo. Las funciones implicadas residen en la DLL Dwmredir.dll, que forma parte del componente Microsoft-Windows-DesktopWindowManager-core.
Todo empieza en Userinit.exe
Userinit.exe es el componente de Windows encargado de inicializar el entorno de sesión del usuario (una vez que éste ha iniciado sesión) y cargar el shell de su elección, que por defecto es Explorer.exe.
Antes de cargar el shell, Userinit.exe inicia el servicio encargado de ejecutar DWM.exe, el servicio "Desktop Window Manager Session Manager" (un nombre algo redundante :-P), implementado en la DLL UxSms.dll (el servicio anteriormente se denominaba "User Experience Session Manager", de ahí el nombre). Durante su inicialización, DWM analiza las características hardware con el fin de determinar si puede (o debe) activar la composición de escritorio. Para ello, emplea algunas funciones implementadas en Milcore.dll, que se ponen en contacto con la información gráfica disponible, residente en el kernel. El primer requisito que se debe cumplir es que los controladores sean WDDM. Si no lo son, no se puede activar la composición de escritorio. Asimismo, se realiza un análisis del ancho de banda de la tarjeta de vídeo, moviendo texturas. Si la tarjeta gráfica resulta ser lenta, tampoco se activará composición de escritorio. Note que es esencial que el hardware gráfico sea reciente para que la composición de escritorio se realice eficientemente. También se calcula, a partir de la resolución de pantalla y el tamaño de píxel empleado, la cantidad mínima de memoria de vídeo exigida. Por último, es necesario que el sistema disponga de, al menos, 512 MB de memoria RAM. Esto se debe a que la composición de escritorio requiere almacenar texturas de vídeo que pueden ocupar un importante espacio en memoria. Por supuesto, también es necesario que la licencia permita activar la composición de escritorio, y que el sistema sea calificado como genuino.
|
Estas mediciones, bastante interrelacionadas con otro componente de Windows Vista denominado WinSAT, se implementan en la DLL Dwmapi.dll, que también contiene las APIs relacionadas con DWM, Flip3D, instantáneas, etc.
|
¿Cómo se sabe qué temas hay disponibles?
Cuando el usuario accede al panel correspondiente para cambiar el tema de escritorio, el sistema realiza algunas comprobaciónes antes de mostrar los temas a elegir:
- Si el sistema no soporta composición de escritorio, o bien está deshabilitada mediante políticas, o mediante licencia (la licencia de Windows Vista Home Basic no permite composición de escritorio), sólo se mostrará el tema "Básico de Windows Vista".
- Si el sistema soporta composición de escritorio, pero no efectos de transparencia (de nuevo, ya sea por limitación hardware, directivas aplicadas, o licencia), se mostrarán los temas "Estándar de Windows Vista" y "Básico de Windows Vista".
- Si el sistema soporta tanto composición como transparencias, se mostrarán los dos temas anteriores junto con "Windows Aero". Éste sólo está presente en Windows Vista Home Premium y Ultimate.
Este artículo de dos partes ha sido una descripción más o menos práctica de DWM/Windows Aero y WPF/MIL. En un próximo artículo verá una demostración empírica muy sencilla de la composición de escritorio en acción.
4 comentarios:
"...el shell de windows, que por defecto es el explorer...."
Perdón: ¿Existe otro shell.?
Saludos.-
Puedes sustituir Explorer.exe por cualquier otro gestor de archivos de terceros; incluso puedes sustituirlo por la línea de comandos (Cmd.exe). Esto es lo que ocurre cuando inicias el sistema en "Modo seguro con símbolo del sistema".
Hola Daniel, Felicitaciones por el articulo.
A través del programa Vista Glazz, he logrado insertar temas y emular un efecto de transparencia en las ventanas maximizadas en un Windows vista home basic. Con el programa indicado, era posible acceder a la opción "habilitar la composicion de escritorio" (obviamente no con la performance de Vista Home premium u otro superior...).
Al instalar SP1 para vista, he tenido problemas pues ya no puedo acceder a los temas estandar de windows vista (solo a los temas basicos) y ya no tengo la opción de habilitar la composicion de escritorio.
existe alguna forma de volver a habilitarlo mediante editor de registro? o el problema se debe a la instalación del SP1?
saludos
David
Una consulta relación al escritorio Aero:
Tengo instalado Windows Vista Ultimate, en la primera instalación que realicé, apareció en el escritorio una barra superior tipo Dock. Al reinstalar Vista Ultimate, no logro que esa barra superior en el escritorio vuelva a aparecer. Posibles motivos? Como activarla manualmente? Como se llama dicha barra dado que no he encontrado información sobre ella?
Desde ya muchas gracias.
Publicar un comentario