USER & GDI Compat, part 2 -- Performance

Thanks for the comments on the last post, here's part 2 of roughly 5.

We think most applications will run as fast or faster on Windows Vista, but there are some changes we want to keep an eye on.  Please be on the lookout for:

  • Overall GDI drawing performance is slower? -- GDI primitives like LineTo and Rectangle are now rendered in software rather than video hardware, which greatly simplifies the display drivers.  We don't think this will impact many real-world applications (usually when a GDI application is render bound its because it's doing something like gradients that was never hardware accelerated), but if you do see problems please let us know.
  • Slower text rendering? -- We changed calls like DrawText to better support international and East Asian languages, we don't think this will impact real world applications but want your feedback if it does.
  • Reading from and writing to GetDC(NULL)? -- this operation is slower than previous versions of Windows because applications now render to an offscreen bitmap rather than directly to the screen.  Where possible, consider drawing to an HDC backed by your HWND, or creating overlay windows.  GetDC(NULL) is still the preferred way to get a screen snapshot.
  • Reduced application address space? -- the bitmap for a top-level window is stored in the application's address space (see previous post), potentially reducing available address space by a few megabytes.

Next up: high dpi