Tessellation: Because The GS Isn't Fast Enough

Microsoft and AMD tend to get the most excited about tessellation whenever the topic of DX11 comes up. AMD jumped on the tessellation bandwagon long ago, and perhaps it does make sense for consoles like the XBox 360. Adding fixed function hardware to quickly and efficiently handle a task that improves memory footprint has major advantages in the living room. We still aren't sold on the need for a tessellator on the desktop, but who's to argue with progress?

Or is it really progressive? The tessellator itself is fixed function rather than programmable. Sure, the input to and output of the tessellator can be manipulated a bit through the Hull Shader and Domain Shader, but the heart of the beast is just not that flexible. The Geometry Shader is the programmable block in the pipeline that is capable of tessellation as well as much more, but it just doesn't have the power to do tessellation on any useful scale. So while most everything has been moving towards programmability in the rendering pipe, we have sort of a step backward here. But why?

The argument between fixed function and programmable hardware is always one of performance versus flexibility and usefulness. In the beginning, fixed function was necessary to get the desired performance. As time went on, it became clear that adding in more fixed function hardware to graphics chips just wasn't feasible. The transistors put into specialized hardware just go unused if developers don't program to take advantage of it. This made a shift toward architectures where expanding the pool of compute resources that could be shared and used for many different tasks became a much more attractive way to go. In the general case anyway. But that doesn't mean that fixed function hardware doesn't have it's place.

We do still have the problem that all the transistors put into the tessellator are worthless unless developers take advantage of the hardware. But the reason it makes sense is that the ROI (return on investment: what you get for what you put in) on those transistors is huge if developers do take advantage of the hardware: it's much easier to get huge tessellation performance out of a fixed function tessellator than to put the necessary resources into the Geometry Shader to allow it to be capable of the same tessellation performance programmatically. This doesn't mean we'll start to see a renaissance of fixed function blocks in our graphics hardware; just that significantly advanced features going forward may still require the sacrifice of programability in favor of early adoption of a feature. The majority of tasks will continue to be enabled in a flexible programmable way, and in the future we may see more flexibility introduced into the tessellator until it becomes fully programmable as well (or ends up just being merged into some future version of the Geometry Shader).

Now don't let this technical assessment of fixed function tessellation make you think we aren't interested in reaping the benefits of the tessellator. Currently, artists need to create different versions of their objects for different LODs (Level of Detail -- reducing or increasing complexity as the object moves further or nearer the viewer), and geometry simulation through texturing at each LOD needs to be done by pixel shaders. This requires extra work from both artists and programmers and costs a good bit in terms of performance. There are also some effects than can only be done with more geometry.

Tessellation is a great way to get that geometry in there for more detail, shadowing, and smooth edges. High geometry also allows really cool displacement mapping effects. Currently, much geometry is simulated through textures and techniques like bump mapping or parallax occlusion mapping or some other technique. Even with high geometry, we will want to have large normal maps for our lighting algorithms to use, but we won't need to do so much work to make things like cracks, bumps, ridges, and small detail geometry appear to be there when it isn't because we can just tessellate and displace in a single pass through the pipeline. This is fast, efficient, and can produce very detailed effects while freeing up pixel shader resources for other uses. With tessellation, artists can create one sub division surface that can have a dynamic LOD free of charge; a simple hull shader and a displacement map applied in the domain shader will save a lot of work, increase quality, and improve performance quite a bit.

If developers adopt tessellation, we could see cool things, and with the move to DX11 class hardware both NVIDIA and AMD will be making parts with tessellation capability. But we may not see developers just start using tessellation (or the compute shader for that matter) right away. Because DirectX 11 will run on down level hardware and at the release of DX11 we will already have a huge number cards on the market capable of running a subset of DX11 bringing with it a better, more refined, programming language in the new version of HLSL and seamless parallelization optimizations, we will very likely see the first DX11 games only implementing features that can run completely on DX10 hardware.

Of course, at that point developers can be fully confident of exploiting all the aspects of DX10 hardware, which they still aren't completely taking advantage of. Many people still want and need a DX9 path because of Vista's failure, which means DX10 code tends to be more or less an enhanced DX9 path rather than something fundamentally different. So when DirectX 11 finally debuts, we will start to see what developers could really do with DX10.

Certainly there will be developers experimenting with tessellation, but these will probably just be simple amplification to get rid of those jagged edges around curved surfaces at first. It will take time for the real advanced tessellation techniques everyone is excited about to come to fruition.

So What's a Tessellator? One Last Thing and Closing Thoughts
Comments Locked

109 Comments

View All Comments

  • Logikal - Saturday, January 31, 2009 - link

    Derek , For the most part I enjoyed your column. Some of it was over my head, but generally it was very informative. I believe its "geek nature" to slander and pull bias in one direction or another regarding certain technology/software/hardware, but honestly What you call "just information" is more personal opinion about your experiences with Vista then anything else. this is evident when you talk about "slow or poor adoption" or "compares to Win ME" like you actually know for sure that was the case. I work for one of Canada's larger computer retail/corporate sales entities, and we had more people buying Vista at a faster pace then any other OS i can remember. the small amount of technical issues that were monumentally blown out of proportion by..maybe...the competition (which you notably mentioned making larger strides in its technology :) caused more "slow adoption" to DX10 then MS's OS and its proportionately smaller problems themselves. I can admit bias, jumping from Windows 2000 directly to Vista, that I haven't had any problems at all. Small ones, mind you (again in proportion to the sheers vastness of what a OS needs to be today) sure. But honestly Vista was a huge step in the right direction, and It did well all things considered. As an end-user, If you had 2 year old hardware, No vista was not going to run functionally. And if you were stuck in the past software wise, or you were backward thinking in that, then no vista wasn't going to work for you. But the step needed to be made, and today we are able to download Windows 7 (in its refined glory) and experience what the vista motif' can be. After all, look how long it took for them to polish up XP ? :)

  • flexy - Saturday, January 31, 2009 - link

    Logikal,

    an opinion is ALWAYS biased.

    The interesting thing is that you want to counter his opinion, but you don't really give a solid argument but rather list that "...more people were buying Vista" which hardly can be a serious argument, now in regards to technical details.

    I share derek's opinion, i am not "selling" Vista but i work with all kind of OS for a long time already. The comparison to ME is legitimate, IMHO.

    And yes, its Geek nature to be able to criticize, compare and see shortcomings where the "common" man (avg customer)might not see any. That's a good thing.

  • flexy - Saturday, January 31, 2009 - link

    that he is so open and just says it.
    Yes, Vista SUCKS <---

    Related to the subject:

    I haven't read the entire article (yet)...but tesselatlion reminds me somewhat of a few years ago when we had Radeons 8500 w/ hardware tessellation features. What was it called again? Truform.

    Sadly, in practice this feature rather flopped.
  • ltcommanderdata - Saturday, January 31, 2009 - link

    On the issue of OpenCL's potential in games being limited by the availability of DX11 Compute Shaders, I think one way to get OpenCL incorporated into games is to rewrite the Havok physics engine in OpenCL. For one thing, OpenCL was developed to not only run on GPUs, but also CPUs, so the Havok engine can be GPU-accelerated on newer hardware with a software CPU fallback for older GPUs all with the same codebase. I'm not sure if DX11's Compute Shaders were designed to run on CPUs. OpenCL also has the largest target base allowing Havok to maintain it's portability across Windows including XP, OS X, and Linux compared to DX11 which would be limited to Vista and Windows 7. Havok itself is well placed to promote OpenCL since it's made by Intel, who would support it for their increasingly multicore CPUs and Larrabee, is actually backed by AMD over PhysX and who is now also promoting OpenCL over their own Brook+ language, and using OpenCL will also allow compatibility with nVidia GPUs unlike the proprietary CUDA PhysX. Havok already claims interoperability with 3ds Max, Maya, and XSI which rely on OpenGL, so going to OpenCL would be a natural fit in the development ecosystem. The more general nature of OpenCL compared to DX11 Compute Shaders would also help expand Havok's market beyond gaming to simulation and science which probably fits well within Intel's Visual Computing parent group. And of course, moving Havok to OpenCL may also encourage more game developers to use OpenGL, which probably isn't a bad thing.

    I'm actually kind of surprised with all the talk of DX10 not taking off because of the huge existing XP market that developers didn't think to switch to OpenGL since both nVidia and ATI exposed all the features of their DX10 GPUs in Windows XP through OpenGL extensions. The same will no doubt be true with DX11 GPUs with features available in XP through OpenGL extensions.
  • bobjones32 - Friday, January 30, 2009 - link

    Derek needs to stick with the hardware and stop making the ridiculous comments about software. "Rejected" Vista? Slow adoption? Porting DirectX 11 to XP?

    Give me a break. I thought it was common knowledge by now that the only people "rejecting" Vista are those buying into the sensationalist blogosphere that built the ridiculous perception in the first place. And since when is 150-200 million users of an OS in 2 years considered "slow adoption"?

    And finally, I would have certainly expected Derek to understand how ridiculous the proposition of DX10 or DX11 on XP is. One of the fundamental design purposes of DX10 was, as Derek actually pointed out, to interface with Vista's overhauled driver model.

    Are you really expecting Microsoft to spend millions in development resources to back-port a completely different driver model to an 8-year-old operating system just to make it possible for DX10/11 to run on there too?

    *sigh* Please. Stick with the hardware. Anandtech's informative articles are not where I want to see butthurt opinions. Save it for your blog.
  • AlphaTango1 - Saturday, January 31, 2009 - link


    Derek, great article and very informative, thanks for taking the time in putting it together.
    It's very interesting to see the changes in design and architecture from earlier DX versions, and improvements being made to assist in moving our current graphics forward.

    It's hilarious to sit back and read through the replies and see the Vista purchasers barking out emotional comments, defending how they love using Vista on their own PC at home.
    It's also funny to note that this is the main thing people have commented on from a multi page article that goes into great depths about graphics, and the future architecture our games will be utilising, and yet we have people still barking on about how much they love Vista.

    Let’s forget your emotions for a minute, and the need to defend your purchase, or your love for Microsoft; and look at the actual outcomes to the user here in relation to graphics.
    Derek's point about Vista is mainly that it's deployment strategy, marketing, performance issues and initial instability didn't assist in moving DX10 forward for us to significantly benefit from. It also resulted in setting some tracks in place that actually continued preference for DX9 over DX10.
    I remember when DX10 was originally being marketed and pumped by Microsoft, and was going to deliver unparalleled graphics improvements to gamers. Comparison split screen vidoes of games were shown, with DX9 and DX10 samples, and talk of "a field of individual blades of grass all moving individually" etc

    Well what has that actually provided you with today? What benefits are you seeing in your games now, versus the natural improvements developers have made over time by learning how to use DX9 even better? I've read countless articles comparing DX9 and DX10 versions of the same games, with screen shots in 1920x1280 and above, and you often literally have to sit there for a good minute to actually see some slightly extra textured dirt, or a slight increase in transparency in the water. "Oh, ok there's the DX10 feature...Hmmm was that worth the 20fps hit in performance?" These improvements are not substantial, and wouldn't be noticed during gaming anyhow.

    Fact is, DX10 has not delivered on the promises and marketing hype, it will be purely a stepping stone in evolving DX11 to what it is.
    For all of you now rushing to type replies of all those extra texture changes you've noted in your DX10 games, seriously don't bother. Even if you can come up with a few examples, you'd be fooling yourself to think DX10 has actually made a significant change to current games, versus the millions of dollars and thousands of person-hours spent developing it.
    You'll also be madly trying to type a reply to defend yourself for the extra $$'s you've spent on hardware to get that DX10 game running, while your mate running the same game on XP with DX9 is laughing at you trying to defend your water transparency.

    On that point, yes XP was shaky in the first period, but that's simply why you never adopt a new OS until a SP or two come out, otherwise you're just a lemming beta tester for MS. My gaming group has 20+ players, and those of us still on XP had many laughing and banter sessions during the first year or so of Vista. We'd regularly be in-game playing, while the guys with Vista were still trying to get the sound driver working with their new game, or getting the fps to a playable level (and these were IT peopl). I was always rock solid on XP, with DX9 and my game looked just as good and was running faster, and that to me is a good way to measure the success of something. What improvement was Vista and DX10 going to give me, and why in the heck would I bother changing!?!
    Yes agree! Vista is probably quite fine for most people to use now, and the issues will have been ironed out. But back to the graphics topic, has it been worth it in relation to the DX10 experience received? This is what this should be about, not how much you love Vista! The question is, has your Vista vehicle and the associated DX10 version provided you with anything substantial? (Besides some Aero graphics interface to make you feel better for buying it).
    From seeing and using both, I can say the answer would be a 'No', versus the cost you paid for Vista, the cost of extra hardware required, the marketing hype and spend; and then wrapping that up and comparing it to users on XP SP3 playing games on DX9. The justification ego of people and the effect of marketing can be a funny thing to watch.

    I suggest some of you go an actually read some articles from industry researchers and advisors such as Gartner, and the view on Vista in the industry, and advice to Business on selection. Sorry to say, but it's a little bigger than your experience on your little PC and home.

    From reading Derek's article I think he's trying to put forward the fact that DX11 has the potential to actually deliver on those DX10 promises and that we may actually see some results, and big changes in our gaming experiences. He also is saying that if the vehicle in which DX11 will be released on (i.e. an OS, Win 7 mainly in this case) is a success, then we have a good chance of it also being adopted in greater numbers by developers of the games we'll be playing.
  • DerekWilson - Saturday, January 31, 2009 - link

    I NEVER said DX11 would or could be ported to WinXP as it is.

    However, there really is little reason that MS couldn't have chosen to design DX10 so that applications written to target DX10 could still run on XP. But they did not. For the sake of DirectX I think this was the wrong decision.

    The change in driver model is very largely an issue in how the graphics driver is implemented to handle DX10. Graphics IHVs developed new DX9 drivers for Vista as well using WDDM, while they still had XP DX9 drivers using the old model. If MS had divorced the API from the driver model changes then they could have implemented DX10 in both XP and Vista with no problem and we'd see higher adoption today.

    There is NO technical reason that the functionality in DX10 that is useful for graphics programming (pipeline changes, numbers of registers and resource constraints, stream out, programmable AA, etc.) could not have been implemented without requiring a new driver model.

    Let me paint the picture: there is no reason you need fine grained power management and linked adapters to add the GS to the pipeline. Developers could have had an software interface that exposed the functionality of the hardware without the new driver model. Case in point is that OpenGL on Windows XP is able to exploit all DX10 hardware functionality that is not tied to the driver model (read everything that is really useful for programming a game).

    So, yes, it would be stupid and wasteful to back port the driver model to XP. But it was stupid and counterproductive to design DX10 in a way that required the new driver model rather than being capable of running under both driver models (like DX9/DX9L).

    Microsoft wanted DX10 to push upgrades. They wanted to give people a reason to buy a new OS. But by doing this they instead hampered the uptake of DX10.
  • LeStuka - Friday, January 30, 2009 - link

    Vista adoption was slow. Driver support wasn't very good early on (not really Microsofts fault). It's resource intensive and runs more slowly than people expected. It performed tasks more slowly than other OS's.
    SP1 fixed a lot of issues - people seem to forget what it was like pre-SP..
    Microsoft has admitted that Vista wasn't all it should have been. Why do you think Windows 7 is coming so quickly to market? Hint: It's not because Vista was a huge success and is still bringing in mountains of cash.
    Also, the extended and re-extended support & supply of XP. Why? From a marketing perspective it makes no sense if Vista is a successful OS.

    I'd like to see a link to this "150-200 million users" article/quote (that doesn't include bundled copies that were "down"graded to XP right?)
    It'd also be interesting to see how many computers are running XP..

    Derek sounds like he's just telling it like it is to me.
    You sound like just another one of those internet tossers that take digs at other peoples work for the sake of it; just because it's there.

    Are you sure you want to post this reply?
    Are you sure you're sure?
    Are you suuure...?
  • bobjones32 - Saturday, January 31, 2009 - link

    It doesn't matter what the OS *was*, the only thing that matters is what the OS *IS*.

    Today. On January 30th, 2009.

    XP was an utter piece of crap for the first two years of its release. Unstable, insecure, and far worse compatibility and driver support than Vista ever dealt with. But of course, you're not judging XP today based on XP on release, are you? Of course not. On the contrary, you're comparing XP now to Vista on release. Hardly fair, and absolutely not relevant.

    Why do I think Windows 7 is coming so quickly? Based on what? You realize that the Windows Vista --> Windows 7 timeframe (~3 years) is *longer* than any other release of Windows outside of XP-->Vista, right? You realize that's nearly twice as long as any subsequent release of OS X, right?

    Extension of XP, why? Because people are dumb enough to continue to think they need it. Microsoft already lost the perception war, may as well milk the uneducated while they can. However, the 150-200 million number is absolutely accurate:

    http://www.microsoft-watch.com/content/vista/vista...">http://www.microsoft-watch.com/content/vista/vista...

    Microsoft shipping 150 million licenses of Vista as of May of 2008. If you don't think that number of people are *using* vista by now, 8 months later, then you are completely oblivious.

    Derek is not "telling it like it is." He's buying into the anti-Vista sensationalist nonsense without using real facts and figures to back it up, making ridiculous assumptions in lieu of evidence, and making impossibly absurd requests like asking for DX10/11 on XP.
  • leexgx - Saturday, January 31, 2009 - link

    most of my customers prefer XP over Vista with AICH been used and no option to turn it off its an big fuss to get XP onto new OEM computers now
    to run vista you need 2gb of ram good hard disk (250gb) and an dual core cpu, OEMs selling systems with single core cpus and 1 gb of ram with 256mb shared video on an 965 intel IGP that only needs 64mb for aero, no one likes vista for the lower end laptops

    allso this comment box has not been tested with opera (box is to small)

Log in

Don't have an account? Sign up now