A good amount of ink has been spilled on this blog talking about all the
cost, nuance, impact, and techniques we go through to get a composited desktop.
Less ink is spilled on the benefits of the composited desktop. Those were
most broadly covered in
this initial post. I'd like to expand on one such benefit here -- High
DPI Support (or High Resolution Support).
Monitor resolutions are going up while prices are going down. In
general, pixel density is going up as well. Both on laptops that are
regularly 120 DPI and 144 DPI these days (as opposed to the typical desktop
experience of 96 DPI), and on desktops that are getting bigger and denser
monitors. This can make for crisper, less jagged display of content.
However, in order for this to work, applications typically need to do work to
deal with different display resolutions. (This is not always true... for
instance, Windows Presentation Foundation applications are natively
resolution-aware, and the application developer needn't worry about it.)
When applications aren't written to adapt to different resolutions, they just
start to look smaller and smaller on higher and higher resolution monitors.
The seminal article for how to write your GDI/GDI+ applications to be DPI
aware was written way back in 2001 by my colleague
Nick Kramer, and can be found
here. This is ultimately the best approach an application can take.
However, not all applications do this, and yet users of course use these
applications while they're running in a higher DPI environment. This is
where the composited desktop re-enters the picture. As you recall, when
the DWM is running, applications render to an offscreen bitmap. When the
DWM recognizes that an app is not DPI aware and just rendering as it always
does, but that the desktop is set to a non-standard DPI, then the DWM goes ahead
and renders the window at a larger size.
This "rendering at a larger size" results in the app being somewhat fuzzier
and not as crisp as if it were being rendered natively at the correct
resolution. However, it's the "correct" size for everything else on the
desktop, and typically represents the much better option between rendering at
the right size somewhat fuzzily; or crisply but at a size much too small.
For the purposes of this blog, there are some interesting tidbits about the
High DPI rendering that are worth discussing:
More details for the app developer: