2D Performance: GDI and GDI+
Why Are We Still Looking At GDI and GDI+?
Even in 2014, many applications use GDI and GDI+ for drawing, even if only for their GUIs. Older productivity applications and specific business titles still leverage GDI/GDI+ predominantly. These applications range from simple 2D CAD programs and viewers to pre-print stage WYSIWYG layout programs and file import/export programs.
As modern graphics cards with unified shaders don’t feature dedicated 2D units anymore, and modern operating systems no longer access graphics cards directly, device drivers play a crucial role in facilitating fast 2D functions.
Text
Displaying text is a crucial task and, needless to say, both manufacturers make sure that their high-end graphics cards render large amounts of text almost instantly.
Lines
Another basic 2D element is lines (the lines in a menu, for example). Again, none of the cards encounter problems with this task, though we notice that AMD's products are around 20 percent faster than Nvidia's.
Splines / Bezier Curves
Curvy lines require some computational power, and it's only natural that they take longer to draw. Just as we saw in the line test, there's a noticeable gap between the AMD and Nvidia cards. The FirePro W9100 and W8100 come close to each other, even though the older W9000 does manage to slide in between them.
Polygons
This benchmark draws filled and unfilled polygons with three to eight vertices; AMD's hardware knows how to handle it. You can't say the same for Nvidia's Quadro K5000, which is slightly better than half as fast as the older FirePro W9000.
Rectangles
Yes, rectangles are polygons, too. But GDI exports a separate, simpler API for drawing them. Needless to say, we expected the cards to draw rectangles faster than polygons.
Apparently, AMD treats rectangles just like any other polygon, whereas Nvidia employs a more efficient implementation, yielding a benchmark win. Then again, pure rectangles aren’t used all that often, so this is arguably not a big shortcoming. Unfilled objects are usually just drawn as polygons anyway, and this function doesn’t allow the output of rotated rectangles.
Circles, Circle Segments and Ellipses
All cards demonstrate comparable performance in the Arcs and Ellipses benchmark.
Bit Blitting
Bit blitting, which is copying a block from system to graphics memory, is becoming less important. After all, it's the graphics card itself that's supposed to fill its RAM with pixels, not the CPU. Not surprisingly, the performance of this operation hasn't increased much over the past few years. In fact, it actually went in the other direction. Today’s high-end graphics cards barely manage to beat the latest integrated graphics chipsets from Nvidia with full 2D functionality (such as the nForce 630i with GeForce 7100 graphics). Nvidia seems to address the operation a bit better, though in truth every card posts somewhat disappointing results.
Stretching
Stretching is even worse, since the CPU has to help out. Overhead due to the driver getting lost in emulations and offloading computations to the CPU packs quite a whammy.
Summary
Neither Nvidia nor AMD earn a definitive win when it comes to GDI performance. Disappointingly, 2D alacrity seems to be at a standstill, and it has since 2010. At least we've seen AMD alleviate some bottlenecks since then.
In general, applications achieve better performance if they render everything into a temporary DIB (device-independent bitmap) and copy the final result to the graphics card. But at higher screen resolutions, the amount of data that needs to be moved across the PCIe interface can be quite substantial. It's appalling that, in the age of PCIe 3.0, copying data to the graphics card is still an order of magnitude slower than similar operations within the workstation’s RAM.
With that said, AMD's cards perform better than Nvidia's, mostly due to the faster line, spline, and polygon functions. We'd like to think our scathing criticism of AMD’s drivers in the past is partly responsible for this improvement.
The new FirePro W9100 renders complex 2D drawings via GDI almost twice as fast as Nvidia's Quadro K5000. Or only half as slowly. It depends on your point of view.