2D Performance Benchmarks
2D Performance Via GDI and GDI+
While it may not be as sexy as 3D performance, 2D rendering is still important. While there is a clear trend towards rendering 2D content using Microsoft’s more modern Direct2D API, it’s a safe bet that more than 90 percent of all applications in use today still rely on the drawing functionality provided by the older GDI (Graphics Device Interface) and GDI+. Most user interface elements, such as frames, buttons, and toolbars, are rendered using these components, though. Meanwhile, older programs created for very specific purposes rely completely on this rendering method for all of their 2D objects. That’s why we decided to test 2D performance as well.
Hardware Accelerated, or Not?
To start with, let’s take a look at actions that aren’t accelerated. Windows 7 reserves a special part of system memory (non-local memory, also referred to as aperture space), to which the graphics card has direct access. This area serves as a buffer for anything that can’t be accelerated in hardware. If the content of this buffer changes because a window has been moved or added on top or its content has been altered, for example, its elements are copied directly into the video card’s memory.
Unfortunately, only very few GDI and GDI+ operations actually enjoy GPU support under Windows 7. Among them are text rendering, color filling, copying and stretching of images (BitBlt using the standard ROPs, StretchBlt), and transparencies (AlphaBlend, TransparentBlt). While drawing of geometric shapes is no longer accelerated in hardware at all, copying and color fills can actually be output directly, circumventing the aperture space. Since graphics cards haven’t actually contained dedicated 2D units for a while now, a card’s 2D performance completely depends on the quality of its driver.
AMD’s Radeon HD 7970 is the only card to do badly here, at least if we’re talking about direct (hardware-accelerated) output to the display and not buffered and unaccelerated output in the form of a DIB (device-independent bitmap). While that shouldn’t result in any serious disadvantages in daily use, a look at the older Radeons shows that the driver could still use a lot of optimizing. Our guess is that hardware acceleration for direct text rendering is still faulty, since that result is even slower than the non-accelerated software solution using a DIB.
Looking at stretching performance, we see a similar result. The newest Radeon trails the rest of the field in direct output mode. Interestingly, performance in software mode using the buffer is actually significantly higher in stretching operations than in direct output mode.
Meanwhile, simple copy operations (blitting) don’t show much variation between cards, and of our four cards, only the GeForce GTX 580 is faster taking the direct route than taking the detour through the buffer (a clear sign that hardware acceleration is being used more efficiently here).
The Radeon HD 7970 only falls behind by a small margin when drawing lines. Meanwhile, the rest of the benchmarks show all of our contenders performing quite similarly. It is interesting to note that both splines and rectangles are apparently accelerated quite well when they are rendered sequentially, as the direct output path is faster than the software version in either case. This delta is especially pronounced in the triangles test. The exact opposite applies when it comes to drawing polygons, where buffered output is much higher.
AMD has certainly improved its drivers since the first time we took a closer look at 2D performance. The Radeon HD 7970 only falls behind its predecessors when it has to handle hardware-accelerated text output, achieving half the performance of older cards. While it is unlikely that this would translate into any visible slow-downs in everyday tasks, you’re bound to notice it when moving around longer texts (floating) in certain programs. The situation is much better than what we saw right after the launch of the Radeon HD 5870.