How Vista Enables Windows Aero - New Document Available

Windows Aero is Vista's new user interface and is based on desktop composition which is the process where each window and the desktop background is drawn separately and then composed by using the 3‑D graphics engine to create the desktop image a user sees.

Vista's process for automatically enabling Aero is relatively involved, and to date, the process hasn't been very clear. But now that Vista is out the door - I've had time to catch up on my to-do list which includes writing a white paper describing the process. I’ve also included a trouble shooting guide.  You can find the doc here.

Feel free to post any question you may have.  I'll keep track and update my blog with answers and update the doc as necessary.

One question I receive frequently is "Why is this so complex? Why can't Vista simply enable Aero on any system? "  The short answer is that Aero has some fundamental requirements (see the doc), and some performance requirements.  For example, Aero won't run at all without a WDDM driver.

Here is the long answer - In contrast to XP's GDI based "owner draw" model, Vista uses a retained graphics model to mange windows and the desktop.  Vista's model and other composition based features (collectively called ‘Aero’) are considerably more expensive in terms of resource utilization than XP.  This includes the use of system and graphics memory for storing textures; CPU time to manage the composition process; video memory bandwidth; and GPU time.  

These costs buy a lot of benefits: smoother screen updates, much fewer windowing artifacts and ‘tears’, ability to easily support high DPI (even for legacy applications), no inter frame tearing with video playback, enablement of attractive new visual effects that please users (flip 3D, transparency, thumbnails, window effects, etc.)

Originally in 2004, we assumed that Aero was so expensive that it would only be available on systems with higher performing discrete graphics cards.  Our first implementations only ran well on mid-range graphics adapters (or better). 

Our challenge was to strike a balance between ensuring a good user experience and enabling Aero broadly.  The more broadly enabled, the larger the risk of users being unhappy with the user experience due to the demanding nature of composition. In contrast raising the bar to ensure a good user experience would have meant that fewer people would enjoy the benefits of composition and raise the costs of systems designed to run Aero.

The Desktop Window Manager team (including Greg Schechter, and many others), the DX team, the video playback team, and the client performance team spent a lot of time optimizing the DWM and other components so that Aero would run well on a broad range of hardware: The big push was for Aero to work well on mid range UMA graphics adapters.  

After a lot of work, we achieved a pretty good balance: Contrary to popular belief, with single monitor, Aero runs well on low cost UMA graphics (especially for day to day computing).    

With more capable graphics (such as those scoring 4 or better in the Windows Experience Index graphics score) Aero is very robust and will handle large dual monitors. With today's high end graphics cards, Aero really sings, nicely handling large dual monitors with heavy workloads.

We achieved this balance three ways (1) by working diligently with IHV’s to make drivers better (2) by making many performance and efficiently improvements in the DWM and related components (3) and by using user research to gain a good understanding of how users perceive composition performance so we could accurately judge the bar (which had started out very high).

This has resulted in a relatively complex set of conditions under which Vista will automatically enable Aero.  The goal is to enable it when the user experience would be acceptable and when it is better to have it enabled than disabled.  This also means that sometimes the DWM will scale back the user experience (turning off transparency, or disabling composition all together) when performance suffers.  Of course, this will happen sooner and more often on less capable hardware than on more capable hardware and is greatly dependant on the user scenario.