AMD and tessellation: A difficult relationship

It’s been a few days since the launch of the Radeon 7970, and we’ve had some time to see how it performs and how it is received. In the comments of the previous post, Carsten pointed out a German review with an interesting chart:

This chart shows the performance of AMD’s SubD11 sample, which is included in the DirectX SDK. It clearly demonstrates what I already derived from AMD’s tessellation graphs: the 7970 still suffers from an exponential dropoff in tessellation performance.

Sure, the initial performance of the card is much higher than any other, but it comes down quickly, and as we can see in the chart, from about factor 11, it is already below the level of a GTX580. At about level 14, it’s starting to struggle to keep up with the GTX560Ti.

As an aside, I mentioned that the tessellation charts always go up to only 31, as if higher tessellation factors don’t exist. Well, in this case, the SubD11 sample itself is also limited to factor 31. However, the source code is included, so it can easily be modified. If anyone is interested, I have prepared some binaries for the SubD11 and the adaptive tessellation sample in the DX SDK (both from AMD) which ‘go to eleven’: http://bohemiq.scali.eu.org/DX11Tessellation.rar

Or, if you want to modify and build them yourself (can you imagine? Some people might actually not trust me!)… In SubD11.cpp, there’s a constant that controls the maximum subdivision: #define MAX_DIVS. Simply increase that value and rebuild it to make it use more tessellation. Likewise, for the DetailTessellation sample you’ll find this line in DetailTessellation11.cpp: const float MAX_TESSELLATION_FACTOR.

How does this translate to real-life performance though? Well, that is an interesting situation. The AMD camp has been screaming that many tessellation games and benchmarks are unfair, paid by nVidia etc, and they use unrealistic amounts of tessellation. Well, I have discussed Crysis 2 myself… And although there is some truth to the notion that Crysis 2 may use a bit more detail than required here and there, it’s not as extreme and unrealistic as some people tried to make out… As a result, the tessellation is generally within the ‘sweet spot’ range of the new Radeon 7970. So although the 7970′s tessellator still is not exactly perfect in terms of scaling, it is now good enough to stay ahead of the GTX580. Tomshardware tested Crysis 2 at Extreme and Ultra levels for example: http://www.tomshardware.com/reviews/radeon-hd-7970-benchmark-tahiti-gcn,3104-8.html

So that’s a bit of a shock for the AMD camp, I suppose. AMD is now outperforming nVidia in games and benchmarks that they always claimed were completely unfair and biased towards nVidia. But as we see from the German chart above, AMD can only win tessellation benchmarks if they stay below factor 11. Which is hardly unfair or unrealistic. Now if they turned everything hard to factor 64, then the AMD camp would have had a point. Now they just look like the spreaders of FUD that they really are. Being a neutral observer myself (and I suppose it also helps that I’m a developer myself, so I have a reasonable idea of the amout of geometry you can safely and realistically feed a card vs total overkill), I can look back at my earlier Crysis 2 posts without any shame. Nothing I have said is invalidated by the Radeon 7970. Likewise, being neutral I have no problem with the Radeon 7970 being the fastest card.

About these ads
This entry was posted in Direct3D, Hardware news, OpenGL, Software news and tagged , , , , , , , , . Bookmark the permalink.

10 Responses to AMD and tessellation: A difficult relationship

  1. 4th3truth says:

    Interesting read. Is there a noticeable difference in going over tessellation 11x threshold of the 7970 in any games coming out for the next four years? Next gen consoles at the beginning of 2013 for example the X-box is rumored to have a Trinity APU(7000series)+ Duel dedicated GPUs in xfire and Duel graphics mode(3gpu total). If the new X-box has tessellation limitations then the entire next generation of games for the next 10 years will be optimized for that tessellation limit of AMD if they can’t straighten things out.

    It is important to think about all this when I am going to be building a X79 gaming platform soon. 7950 non-ref. looks nice but I want to see benches of nvidia 700s(skipping 600 series naming to have 7 starting didget for marketing like the Xbox2 became Xbox 360 to beat PS3) lol.

    Since Nvidia probably not coming out til summer end up with a 7950.

    • Scali says:

      It’s always difficult to say what will happen in future games…
      However, the trend so far has not exactly been that tessellation is pushed hard (it looked much worse than it really was, because of AMD’s early DX11 GPUs). So I doubt that there’s going to be a sudden boom of tessellation use. It’s probably going to increase gradually. Games still need to cater for current hardware, and for lower-end models, so if you get a 7970 or 7950 now, you’ll probably be good for a few years to come, even if you can’t max out tessellation in all games.

      • zorg says:

        It’s really not that difficult. :) DX11 uses NoSplit tessellation modell, which is inefficient. Of course you can tessellate with 64 factor, but you will kill the rasterizer efficiency. Microsoft will bring DiagSplit modell with Quad-Fragment Merging pipeline in the next gen DX. Than we can talk about efficient tessellation. Until then most of the games will use 5 to 15 factor.

      • Scali says:

        Apparently it is more difficult than you think.
        The issue here is not really what DX11 uses, since both nVidia and AMD have to play by the DX11 rules. So if nVidia has significantly better scaling than AMD, apparently AMD is doing something wrong.

        Another common mistake is that people think that tessellation factor says anything at all about the triangle size on screen.
        It doesn’t, the tessellation factor is relative to the source geometry. So if you feed very coarse source geometry to the tessellator, even 64x tessellation may still result in large polygons (for example, zooming in really closely on a wall or floor, which in itself can be constructed from only a plane with 2 triangles). So really, people should stop trying to make claims about tessellation factors in relation to triangle-size on screen.. it’s so painfully obvious that they have no clue about tessellation.

        Even so, the rasterizer efficiency is not an argument in AMD’s favour, as AMD has slightly more efficient rasterization of small polygons than nVidia.
        Which I already covered in an earlier blog: http://scalibq.wordpress.com/2010/11/02/proof-of-what-i-said-in-my-previous-blog-from-an-unexpected-place/

        So what it comes down to is this:
        1) There is no excuse for AMD being worse than nVidia in DX11 tessellation, they both have to render according to DX11 specs, and they both have to deal with the same polygon sizes in the rasterizer.
        2) Tessellation factor may well go up to 64x in games under realistic conditions.

  2. zorg says:

    You will see how NVIDIA decrease tessellation power in Kepler. :) They already told me, that GK104 have better performance in up to 20x tessellation, but much slower in the upper region, compared to GF110. I don’t see why AMD is doing something wrong, if NVIDIA will decrease Fermi tessellation performance. Well, of course I only have GK104 performance directives, but the top GeForce will be a dual GK104.

    • Scali says:

      Firstly, I have heard no such thing about Kepler’s tessellation. We’ll just have to wait and see (sounds unlikely to me though… then again, AMD fanboys are great at coming up with unlikely theories)…
      Secondly, two wrongs don’t make a right. If nVidia indeed decides to give up scalable tessellation, then that is a step backward, not forward. They’d both be doing something wrong as far as I’m concerned. I as a developer just want the best possible graphics detail, and tessellation is the only realistic option at this point.

      Even so, if it has better performance than GTX580 up to 20x tessfactor, that would still make it much better than any AMD GPU. At tessfactor 20, a 7970 is outperformed even by a GTX560Ti.

      • zorg says:

        Why would they step backward? They throw billions of transistors for a design that shines only in synthetic benchmarks. Respect for this, but they can’t profit from this in games. Even Crysis 2 just add triangles and do nothing with it. Plenty of flat surfaces are now made thousands of triangles without a displacement map. What’s the point of this? It will run slower, but you don’t get better graphics.
        Tessellation is a great thing but only if the final image profits from it. Adding triangles in flat surfaces just silly.

      • Scali says:

        It’s a step backwards because we currently already HAVE hardware that can handle high amounts of tessellation efficiently.
        The rest of your argument is typical gamer cluelessness. Gamers think that only the games that are already out are important.
        By that logic, any new version of DirectX or OpenGL wouldn’t have needed support anyway, because games rarely support new APIs at launch time, let alone that they take full advantage of all new features.
        It generally takes years before a new API is adopted fully (since it also takes years to develop a new game engine).

        If anything, Crysis 2 proves that both nVidia and the latest AMD GPUs are capable of rendering this amount of detail. Whether or not it looks better is irrelevant. That is just a question of the artists having to make better use of the technology. Endless City is an example of tessellation where the artists have done a good job at applying tessellation (but this requires much more lowpoly geometry, which you generally won’t see when tessellation is added as an afterthought, such as Crysis 2. Just because most games are doing it wrong, doesn’t mean that tessellation itself is useless. It takes time for games to be developed entirely for tessellation, but it is going to happen eventually. And then your hardware had better be ready).

        And is it slower? Then you obviously don’t get what tessellation is, and what it does. The amount of geometry that Crysis 2 or Endless City are rendering, would be completely impossible to render in realtime without tessellation. If you could even get all geometry to fit in memory at all, it would be much slower to render it than to have the tessellator generate the triangles on-the-fly. Tessellation is a form of data compression. One of the main benefits is that it renders high amounts of geometry far more efficiently.
        As a matter of fact, tessellation itself is not what slows Crysis 2 down in DX11 mode. On nVidia cards, DX11 mode is only marginally slower than DX9 mode, and that is mostly because of the heavier post-processing effects (Bokeh DOF, better HDR tone mapping, more dynamic reflections etc). The geometry itself does not slow the cards down, because tessellation makes it more efficient.

    • Scali says:

      I haven’t seen any indication that Kepler has reduced tessellation performance compared to GTX580.

  3. Pingback: nVidia’s shader use for tessellation is NOT, I repeat NOT different from AMD’s | Scali's blog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s