Sign in with
Sign up | Sign in

Windows Vista: Real Progress And The Art of Omission

2D, Acceleration, And Windows: Aren't All Graphics Cards Equal?
By , Igor Wallossek

When we first installed Windows Vista, we could barely contain our anticipation. Intricate, complex, and advanced, Vista certainly generated great expectations.

Lots of light and shadows, but no 2D hardware accelerationLots of light and shadows, but no 2D hardware acceleration

But what seemed so revolutionary at first changed to aggravation from one application to another, and sometimes to outright horror. Let’s review some relevant items in detail:

Implementation of the 2.5D Layer in Hardware

This technology was implemented for the first time in Windows Vista. It was a long time coming, but finally arrived in 2006. There was nevertheless still one small limitation: it only worked when the Aero interface was activated. Also, 2.5D layering required a 3D-capable graphics card, even for those with no need for 3D applications or games. Those who only used the Vista Basic theme would suffer from the same kind of blurring or repeat effects that XP users experienced, because 2.5D layering was automatically disabled, even with a 3D graphics card installed. Ouch!

Slow Snapshots

The switch to 2.5D layering also left Microsoft with more than a few problems to solve. Vista was perceived as slow, but mostly stable. But what happened? We already noted that GDI was a key interface for graphics programming. Following the introduction of the (sadly) very slow C++-based GDI extension called GDI+, which was never really a technical breakthrough due to its performance, we could no longer deny that some degree of "interface chaos" was at hand. In fact, it appeared extremely unlikely that GDI, GDI+, DirectDraw, and Direct3D could ever be simultaneously subject to hardware acceleration.

WDDM & DWM—Windows Display Driver Model and Dynamic Windows Manager

Along with a new device driver model, Windows introduced DWM as a way to manage display devices. The whole thing was a little bit tricky, and added a layer of software (and complexity) between windows and the drawing commands on the one hand, and between drivers and devices on the other hand. Direct communications were also interrupted thanks to DWM. In keeping with the motto “everything works at my command” the DWM took over coordination of all the individual graphics interfaces. This changeover also sidelined a major graphics capability, as we’ve already pointed out —namely, hardware acceleration of GDI drawing functions. Completely incomprehensible, but true nevertheless!

Bottleneck, Fun Arrestor, and Memory-EaterBottleneck, Fun Arrestor, and Memory-Eater

Most of the large amounts of memory Vista consumed were cheerfully ascribed to SuperFetch. Sadly, this is only part of the real situation. The omission of 2D hardware acceleration also put the entire burden of handling GDI calls to render window contents onto the CPU. The whole thing wound up in a megabuffer inside the DWM. Complete window renderings would then be turned over to the graphics card. This soon imposed a major bottleneck, because only one window at a time could send GDI commands to the DWM. Asynchronous tasks weren’t allowed, resulting in a lengthy queue of pending service requests. This not only took significant time to handle, it also consumed significant memory because all active windows reside in a DWM memory buffer. With multiple windows at 100MB apiece, it’s not long before memory consumption really racks up. In the most extreme cases, Vista would simply freeze—for example, when jokeware would open window after window after window. Eventually, nothing would work anymore, and you’d have to perform a disruptive shutdown (power off) to regain control over the system.

Doubling memory consumption doesn’t double your fun (Source: Microsoft)Doubling memory consumption doesn’t double your fun (Source: Microsoft)

Summary

  • Vista introduces hardware acceleration for the 2.5D Layering Model
  • With Aero enabled, ongoing redraw for all Windows contents becomes a thing of the past
  • Microsoft omits hardware acceleration for 2D GDI drawing functions
  • The DWM can’t work on windows asynchronously, to the profound detriment of graphics performance
  • The wait queue inside DWM for GDI commands sucks up huge amounts of RAM
React To This Article