Sign in with
Sign up | Sign in

The Radeon HD 5000's Symptoms And Their Relevance To Windows 7

Part 2: 2D, Acceleration, And Windows: Aren't All Graphics Cards Equal?
By , Igor Wallossek

We had to prove to ourselves that direct, unbuffered output of various GDI primitives (the geometric shapes) for the Radeon HD 5870 and the Radeon HD 5750 took much longer under Windows 7 than it did on other graphics cards. Before we tried to isolate the causes more precisely, we needed to examine the symptoms more carefully, because that'd determine the users most likely to be affected, and thus, whether or not anyone is likely to run into trouble as a result. This is not the kind of problem that every user is bound to encounter, but those who do have to cope with reduced 2D functionality can’t help but feel like helpless bystanders in the middle of a demolition derby.

Mouse-based selection of multiple objects in a drawing: dragging such an object around in realtime can turn into an exercise in patience and perseveranceMouse-based selection of multiple objects in a drawing: dragging such an object around in realtime can turn into an exercise in patience and perseverance

Problems with Direct Drawing

As reported in Part 1 of this story, the main performance issue for the latest ATI cards centers on the output of lines, curves, ellipses, and polygons. We could only measure about 4,000 curves per second on the Radeon HD 5870 running under Windows 7, without individual buffers for the display device. When we moved a single graphics object consisting of 50 curves in real-time with help from the ROP, it could only redraw 25 individual instances per second while it was in motion (remember, though, that the XOR technique used to make objects disappear from their previous position requires a second redraw, so this is actually 50 operations).

If the object to be moved exceeds 100 curves, then the total number of curves to redraw (5,000 per second, given 100 curves at 50 operations per second) exceeded what the Radeon HD 5870 could handle! Ornaments and clip art elements normally consist of more than 100 curves, making a flicker-free drag of such objects (“float”) impossible. This causes major problems for productivity and functionality, even for the most basic graphics programs.

In addition, many applications use such simple graphics commands that developers see no need to buffer them, as long as direct output to the display behaves reasonably well. These are the programs hardest hit on the Radeon HD 5780.

Problems Drawing to a Buffer

Even when programs use their own internal buffers and handle updates for various types of geometric forms, you may encounter noticeable performance issues that lead to slow output. Likewise, the block-level transfer of buffer contents (called BitBlt, pronounced “bit blit”) also slows to a crawl.

Which Types of Programs Are Affected?

In short, every 2D program that emits GDI commands to draw objects on-screen can fall prey to this issue, particular when they must render lots of drawing objects. This also holds true for programs that manipulate graphics information, such as drawing programs, project planning software, and even productivity applications (like elements of the Microsoft Office suite).

For Which Programs Did We Find Concrete Issues?

  • CorelDraw, Adobe illustrator, Adobe Freehand MX, Nemetschek AllPlan (2D functions)
  • Adobe Photoshop CS3/CS4 (general vector objects on various layers)
  • Microsoft Publisher, Microsoft PowerPoint, and various home layout packages
  • Microsoft Excel when rendering larger charts, or big spreadsheets with area fills
  • Various construction tools, including those for electrical, plumbing, and HVAC drawings
  • Various industry-specific tools (drawing annotations, site plans, landscaping plans, etc.)


We’d also like to observe that all of these programs run reasonably well on other current consumer-level graphics cards. We’re not trying to suggest that these applications need workstation-class cards from the FireGL or Quadro families, either. In fact, we got satisfactory results from numerous low-cost graphics cards priced under $50. Neither craftsmen nor real estate companies need buy ATI's or Nvidia's stack to solve these problems.

Which Programs Are Generally NOT Affected?

  • All 2D programs that use Direct2D to render 2D graphics (and don’t work in XP)
  • All 3D programs that use Direct3D and that don’t output 2D content
  • All programs that use OpenGL for 2D rendering


Summary and First Set of Conclusions

Our best advice to you is to patiently wait for new drivers (which we have in-house and are currently testing), and only then decide which of the problems we document will affect your apps. There’s no need for an emotional response. These issues affect only 2D performance for Windows 7 when GDI or GDI+ are called upon to render 2D graphics info. Apps that run under Windows XP, on the other hand, will almost always fall prey to these problems. Finally, there’s the issue of which graphics primitives actually benefit from hardware acceleration (some do, some don’t).

Because the Radeon HD 5750 is also subject to these troubles, suggesting a driver issue rather than a more fundamental hardware issue (a suspicion ATI confirmed for us in Part 1), it's very likely that the entry-level 5000-series cards launched last month are subject to the same conclusions. Thus, even if what we've covered is not a widespread epidemic among all new graphics cards, it can still be a serious problem for those affected. This is why we believe it’s so important for the vendors to address their software as soon as possible.

Display all 121 comments.
This thread is closed for comments
Top Comments
  • 19 Hide
    Anonymous , February 16, 2010 6:45 AM
    It would be great if you can run the test on some "pro" cards (quadroFX, quadroNVS, firePro & fireMV). Just to see if the "pro" drivers change standard UI rendering or the optimizations are only for the professional DCC software.
  • 18 Hide
    wxj , February 16, 2010 8:20 AM
    I’ve always preferred GDI operations over those of the NOD. GDI have more basic operations set verses NOD’s more complex and sometimes unreliable operations.
Other Comments
  • 0 Hide
    mdm08 , February 16, 2010 6:01 AM
    I have a 5850 with 10.1 drivers and it seems Photoshop CS4 doesn't recognize it as a graphics card that can improve performance so all those cool new features like animated zoom, kinetic panning, and such seem to be disabled. Also, it when you have a very complex group of objects and you try to nudge it ( move it one pixel with arrow keys) the computer actually shows the spinning wheel and has to process this instead of being instantaneous like it was on my older 7600GT. Is this an issue related with what this article is saying about apps written for GDI or is this a different issue i'm experiencing?
  • 0 Hide
    jrharbort , February 16, 2010 6:03 AM
    Scores on 9600M GT and T9600 Core 2 Duo with Windows XP and latest graphics drivers. Only 11 active background processes no including benchmark, and themes disabled.

    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
  • 19 Hide
    Anonymous , February 16, 2010 6:45 AM
    It would be great if you can run the test on some "pro" cards (quadroFX, quadroNVS, firePro & fireMV). Just to see if the "pro" drivers change standard UI rendering or the optimizations are only for the professional DCC software.
  • -1 Hide
    liquidsnake718 , February 16, 2010 7:02 AM
    mdm08I have a 5850 with 10.1 drivers and it seems Photoshop CS4 doesn't recognize it as a graphics card that can improve performance so all those cool new features like animated zoom, kinetic panning, and such seem to be disabled. Also, it when you have a very complex group of objects and you try to nudge it ( move it one pixel with arrow keys) the computer actually shows the spinning wheel and has to process this instead of being instantaneous like it was on my older 7600GT. Is this an issue related with what this article is saying about apps written for GDI or is this a different issue i'm experiencing?

    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.
  • -7 Hide
    taltamir , February 16, 2010 7:25 AM
    windows XP is dead... get on the windows 7 64bit bandwagon already you Luddites! (not referring to the authors of the article, they raise good points; I am referring to those customers who insist that XP is some sort of holy grail of windows bliss never seen before or after)
  • 2 Hide
    Anonymous , February 16, 2010 7:48 AM
    Scores on P4 2.8 HT Northwood W ati 2600 pro drivers 10.1 aero Win 7 :
    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
  • -4 Hide
    Anonymous , February 16, 2010 7:55 AM
    Scores on P4 2.8 HT Northwood W ati 2600 pro drivers 10.1 aero Win 7 :

    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
  • -4 Hide
    giovanni86 , February 16, 2010 7:58 AM
    BENCHMARK: DIRECT DRAWING TO VISIBLE DEVICE

    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
  • 1 Hide
    helle040 , February 16, 2010 8:10 AM
    Rdaeon 4670, amd 7750be, winxp, drivers 10.1, resolutie 1280x1024, 32bit
    Text: 45746
    line: 40508
    Splines/beziers: 20466
    Poygon: 322
    Rectangle: 1954
    Arc/E.: 3494
    Biting: 2406
    Stretching: 211
    Score: 1150
  • 18 Hide
    wxj , February 16, 2010 8:20 AM
    I’ve always preferred GDI operations over those of the NOD. GDI have more basic operations set verses NOD’s more complex and sometimes unreliable operations.
  • 1 Hide
    snemarch , February 16, 2010 8:46 AM
    A couple of ideas...

    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?
  • 0 Hide
    helle040 , February 16, 2010 8:55 AM
    I have two more scores, 950, 1002,and the first was 1150 So how is this possible, more then 10% difference?
  • 0 Hide
    JonathanDeane , February 16, 2010 8:58 AM
    BENCHMARK: DIRECT DRAWING TO VISIBLE DEVICE

    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
  • 0 Hide
    ljbade , February 16, 2010 9:18 AM
    When will they get curves/ellipses fixed?
  • 0 Hide
    proofhitter , February 16, 2010 9:22 AM
    BENCHMARK: DIRECT DRAWING TO VISIBLE DEVICE

    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
  • 0 Hide
    snemarch , February 16, 2010 9:32 AM
    ljbadeWhen will they get curves/ellipses fixed?
    Probably not the easiest thing to accelerate on a GPU - the prime candidates would be filled polys, rectangles (subset of polys) and blits (including stretched ones - easy to do with a 3D quad or two tris).

    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 :) 
  • 0 Hide
    amdfangirl , February 16, 2010 9:36 AM
    BENCHMARK: DIRECT DRAWING TO VISIBLE DEVICE

    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
  • 0 Hide
    Anonymous , February 16, 2010 10:17 AM
    BENCHMARK: DIRECT DRAWING TO VISIBLE DEVICE (AMD FUSION: Max Performance)
    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
  • 4 Hide
    rickzor , February 16, 2010 10:23 AM
    Wow, voodoo4 actually made better than newer gpu proposals in some tests, despite the fact that it was running under win98.
  • 7 Hide
    gamerk316 , February 16, 2010 10:45 AM
    *Sigh*, again, why I prefer OpenGL instead; having two seperate operation pipelines for 2d/3d space is just madness...
Display more comments