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. Again, AMD wins by double-digit percentage margins.
Polygons
This benchmark draws filled and unfilled polygons with three to eight vertices, and AMD's hardware knows how to handle it. You can't say the same for Nvidia's Quadro K5000, which is just 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 rectangles. Needless to say, we expected the cards to draw rectangles faster than polygons.
But it seems like Nvidia optimized for this more thoroughly than AMD, as both Quadros outperform the FirePros we're testing.
Circles, Circle Segments and Ellipses
All four 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 the other direction.
Nvidia seems to address the operation a bit better, though in truth every card posts somewhat disappointing results. A DIB (device-independent bitmap) helps; perform all drawing operations into a temporary bitmap residing in the computer’s RAM, and as the final step, push that bitmap to the graphics card.
Stretching
Stretching is even worse, since the CPU has to help out.
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 copied across the PCIe interface can be quite substantial, and 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 copy 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. Perhaps our scathing criticism of AMD’s drivers 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.