This test exercises line drawing functions in GDI. In Part 1 of this story, these tests produced the most dramatic and obvious differences among graphics cards. Please read the summary at the end of this test, because the problems described in our first exploration were also reproduced on more than 40 systems in our follow-up round, and in results posted later by our readers.

**Test Content:**

A total of about 150,000 lines of random length and color are drawn in random positions on-screen as this test runs. Because the seed value for the random number generator remains constant, all test runs should produce the same outputs as well. All objects will appear inside the drawing surface, so no clipping is needed.

GDI Functions Called

For the direct line drawing benchmark:

*CreatePenMoveToExLineToSelectObjectDeleteObject*

For drawing lines from the DIB buffer:

*CreateCompatibleDCCreateDIBSectionCreateSolidBrushRectangleBitBlt*

**Summary:**

Here's where we're able to re-confirm the results seen in Part 1, where ATI's Radeon HD 5000-series cards don't perform well.

Interestingly the measurements for output with Aero turned off increased when we opened a second window and maximized it (something like Mozilla Firefox, for example) before running this test, and then switched back to the test window. After that, a measurably higher value is produced on test machines in a completely reproducible fashion. A second test run after a brief period of time no longer shows this effect, however, and performance losses once again appear across the board.

Again, this is indicative of a driver issue, and we can only hope that the test driver we're working with currently addresses the issue. The rest of the test results speak for themselves. Once again, the Atom with a GMA 950 (and Aero enabled) generates surprisingly good results, and the low performance from the GeForce GTX 285 is equally noteworthy for direct output with Aero disabled. Anything that goes over 20,000 lines drawn probably won’t impact real-world usage scenarios.

- Introduction: Why GDI Output For 2D Graphics Remains Relevant
- The 2D GDI For Windows XP Through Windows 7, In Detail
- 2D Graphics Output Using GDI: Direct Or Buffered?
- The Radeon HD 5000's Symptoms And Their Relevance To Windows 7
- Tom2D: Our Simple 2D GDI Benchmark
- Tom2D: Text Output
- Tom2D: Line Output
- Tom2D Splines/Bézier Curves
- Tom2D: Polygons
- Tom2D: Rectangles
- Tom2D: Ellipses
- Tom2D: Blitting
- Tom2D: Stretching
- Conclusion
- UPDATE: ATI Steps Up With A Hotfixed Driver

BENCHMARK: DIRECT DRAWING TO VISIBLE DEVICE

Text: 8556 chars/sec

Line: 47513 lines/sec

Polygon: 7757 polygons/sec

Rectangle: 6564 rects/sec

Arc/Ellipse: 3874 ellipses/sec

Blitting: 13974 operations/sec

Stretching: 266 operations/sec

Splines/Bézier: 10510 splines/sec

Score: 984

Oh great, more news on a 5xxx series not being able to handle simple apps like CS4.... I have yet to use CS4 on my desktop with my 5850..... I hope Ati comes out with more patches if this is a problem.

BENCHMARK: DIRECT DRAWING TO VISIBLE DEVICE

Text: 8106 chars/sec

Line: 6528 lines/sec

Polygon: 249 polygons/sec

Rectangle: 1484 rects/sec

Arc/Ellipse: 6127 ellipses/sec

Blitting: 379 operations/sec

Stretching: 80 operations/sec

Splines/Bézier: 5263 splines/sec

Score: 362

BENCHMARK: DIB-BUFFER AND BLIT

Text: 12633 chars/sec

Line: 21067 lines/sec

Polygon: 4087 polygons/sec

Rectangle: 535 rects/sec

Arc/Ellipse: 5604 ellipses/sec

Blitting: 1443 operations/sec

Stretching: 213 operations/sec

Splines/Bézier: 12213 splines/sec

Score: 607

Text: 54466 chars/sec

Line: 73135 lines/sec

Polygon: 23943 polygons/sec

Rectangle: 3927 rects/sec

Arc/Ellipse: 26911 ellipses/sec

Blitting: 9827 operations/sec

Stretching: 464 operations/sec

Splines/Bézier: 41911 splines/sec

Score: 2600

Text: 45746

line: 40508

Splines/beziers: 20466

Poygon: 322

Rectangle: 1954

Arc/E.: 3494

Biting: 2406

Stretching: 211

Score: 1150

First, try adding a DDB (device dependent bitmap) test mode as well - even if your DIBs are using the same colordepth as the display mode, perhaps some drivers fail to optimize for this?

Second, what about the power savings mode modern GPUs tend to run in, in 2D mode? I'm not sure what it takes to kick out of the power-savings mode, but perhaps it could be as simple as creating a D3D context and displaying a single frame?

Text: 45496 chars/sec

Line: 44352 lines/sec

Polygon: 12293 polygons/sec

Rectangle: 7013 rects/sec

Arc/Ellipse: 9854 ellipses/sec

Blitting: 7265 operations/sec

Stretching: 642 operations/sec

Splines/Bézier: 36955 splines/sec

Score: 1853

4870 Windows 7 running Cat 9.12

Text: 57405 chars/sec

Line: 42421 lines/sec

Polygon: 14198 polygons/sec

Rectangle: 10724 rects/sec

Arc/Ellipse: 18070 ellipses/sec

Blitting: 16297 operations/sec

Stretching: 615 operations/sec

Splines/Bézier: 37779 splines/sec

Score: 2382

BENCHMARK: DIB-BUFFER AND BLIT

Text: 38521 chars/sec

Line: 145631 lines/sec

Polygon: 22599 polygons/sec

Rectangle: 2572 rects/sec

Arc/Ellipse: 30395 ellipses/sec

Blitting: 10595 operations/sec

Stretching: 1082 operations/sec

Splines/Bézier: 47304 splines/sec

Score: 2904

Windows 7 core i7 920@3.8 ati 4890 Catalyst 10.1

Points, lines, bezier curves, arcs (and circles, a subset of arc), ellipses, unfilled polys/rectangles ... all those aren't easily/efficiently implemented with the core 3D primitive: filled polygons. Perhaps some of it can be efficiently implemented with shaders, but that's uncharted territory for me

Text: 25419 chars/sec

Line: 26376 lines/sec

Polygon: 8153 polygons/sec

Rectangle: 1152 rects/sec

Arc/Ellipse: 8672 ellipses/sec

Blitting: 3359 operations/sec

Stretching: 455 operations/sec

Splines/Bézier: 15977 splines/sec

Score: 1011

CPU: C2D e4300

GFX: GMA 3100

MB: G31

OS: Win 7

Text: 17806 chars/sec

Line: 20636 lines/sec

Polygon: 17975 polygons/sec

Rectangle: 3312 rects/sec

Arc/Ellipse: 23234 ellipses/sec

Blitting: 6199 operations/sec

Stretching: 321 operations/sec

Splines/Bézier: 20157 splines/sec

Score: 1433

BENCHMARK: DIRECT DRAWING TO VISIBLE DEVICE (AMD FUSION: Productibity)

Text: 6140 chars/sec

Line: 5109 lines/sec

Polygon: 5233 polygons/sec

Rectangle: 1017 rects/sec

Arc/Ellipse: 6819 ellipses/sec

Blitting: 1851 operations/sec

Stretching: 104 operations/sec

Splines/Bézier: 5673 splines/sec

Score: 427

BENCHMARK: DIRECT DRAWING TO VISIBLE DEVICE

Text: 43898 chars/sec

Line: 73421 lines/sec

Polygon: 17483 polygons/sec

Rectangle: 2989 rects/sec

Arc/Ellipse: 21805 ellipses/sec

Blitting: 6082 operations/sec

Stretching: 363 operations/sec

Splines/Bézier: 35804 splines/sec

Score: 2138

Windows vista 64, Phenom2 x3 720 (4 core enabled), Catalyst 10.1, ati 5850