From Evolution to Expansion and Multi-Threading: The Mile High Overview

The November DirectX SDK update was the first to include some DirectX 11 features for developers to try out. Of course, there is no DX11 hardware yet, but what is included will run on the current DX10 setup with DX10 hardware under Vista and the beta Windows 7. This combined with the fact that Khronos finished the OpenCL specification last month mark two major developments on the path to more general purpose computing on the GPU. Of course, DX11 is more geared toward realtime 3D and OpenCL is targeted at real general purpose data parallel programming (across multiple CPUs and GPUs) distinct from graphics, but these two programming APIs are major milestones in the future history of computing.

There is more than just the compute shader included in DX11, and since our first real briefing about it at this year's NVISION, we've had the chance to do a little more research, reading slides and listening to presentations from SIGGRAPH and GameFest 2008 (from which we've included slides to help illustrate this article). The most interesting things to us are more subtle than just the inclusion of a tessellator or the addition of the Compute Shader, and the introduction of DX11 will also bring benefits to owners of current DX10 and DX10.1 hardware, provided AMD and NVIDIA keep up with appropriate driver support anyway.

Many of the new aspects of DirectX 11 seem to indicate to us that the landscape is ripe for a fairly quick adoption, especially if Microsoft brings Windows 7 out sooner rather than later. There have been adjustments to the HLSL (high-level shader language) that should make it much more attractive to developers, the fact that DX10 is a subset of DX11 has some good transitional implications, and changes that make parallel programming much easier should all go a long way to helping developers pick up the API quickly. DirectX 11 will be available for Vista, so there won't be as many complications from a lack of users upgrading, and Windows 7 may also inspire Windows XP gamers to upgrade, meaning a larger install base for developers to target as well.

The bottom line is that while DirectX 10 promised features that could bring a revolution in visual fidelity and rendering techniques, DirectX 11 may actually deliver the goods while helping developers make the API transition faster than we've seen in the past. We might not see techniques that take advantage of the exclusive DirectX 11 features right off the bat, but adoption of the new version of the API itself will go a long way to inspiring amazing advances in realtime 3D graphics.

From DirectX 6 through DirectX 9, Microsoft steadily evolved their graphics programming API from a fixed function vehicle for setting state and moving data structures around to a rich, programmable environment enabling deep control of graphics hardware. The step from DX9 to DX10 was the final break in the old ways, opening up and expanding on the programmability in DX9 to add more depth and flexibility enabled by newer hardware. Microsoft also forced a shift in the driver model with the DX10 transition to leave the rest of the legacy behind and try and help increase stability and flexibility when using DX10 hardware. But DirectX 11 is different.

Rather than throwing out old constructs in order to move towards more programmability, Microsoft has built DirectX 11 as a strict superset of DirectX 10/10.1, which enables some curious possibilities. Essentially, DX10 code will be DX11 code that chooses not to implement some of the advanced features. On the flipside, DX11 will be able to run on down level hardware. Of course, all of the features of DX11 will not be available, but it does mean that developers can stick with DX11 and target both DX10 and DX11 hardware without the need for two completely separate implementations: they're both the same but one targets a subset of functionality. Different code paths will be necessary if something DX11 only (like the tessellator or compute shader) is used, but this will still definitely be a benefit in transitioning to DX11 from DX10.

Running on lower spec'd hardware will be important, and this could make the transition from DX10 to DX11 one of the fastest we have ever seen. In fact, with lethargic movement away from DX9 (both by developers and consumers), the rush to bring out Windows 7, and slow adoption of Vista, we could end up looking back at DX10 as merely a transitional API rather than the revolutionary paradigm shift it could have been. Of course, Microsoft continues to push that the fastest route to DX11 is to start developing DX10.1 code today. With DX11 as a superset of DX10, this is certainly true, but developer time will very likely be better spent putting the bulk of their effort into a high quality DX9 path with minimal DX10 bells and whistles while saving the truly fundamental shifts in technique made possible by DX10 for games targeted at the DX11 hardware and timeframe.

We are especially hopeful about a faster shift to DX11 because of the added advantages it will bring even to DX10 hardware. The major benefit I'm talking about here is multi-threading. Yes, eventually everything will need to be drawn, rasterized, and displayed (linearly and synchronously), but DX11 adds multi-threading support that allows applications to simultaneously create resources or manage state and issue draw commands, all from an arbitrary number of threads. This may not significantly speed up the graphics subsystem (especially if we are already very GPU limited), but this does increase the ability to more easily explicitly massively thread a game and take advantage of the increasing number of CPU cores on the desktop.

With 8 and 16 logical processor systems coming soon to a system near you, we need developers to push beyond the very coarse grained and heavy threads they are currently using that run well on two core systems. The cost/benefit of developing a game that is significantly assisted by the availability of more than two cores is very poor at this point. It is too difficult to extract enough parallelism to matter on quad core and beyond in most video games. But enabling simple parallel creation of resources and display lists by multiple threads could really open up opportunities for parallelizing game code that would otherwise have remained single threaded. Rather than one thread to handle all the DX state change and draw calls (or very well behaved and heavily synchronized threads sharing the responsibility), developers can more naturally create threads to manage types or groups of objects or parts of a world, opening up the path to the future where every object or entity can be managed by it's own thread (which would be necessary to extract performance when we eventually expand into hundreds of logical cores).

The fact that Microsoft has planned multi-threading support for DX11 games running on DX10 hardware is a major bonus. The only caveat here is that AMD and NVIDIA will need to do a little driver work for their existing DX10 hardware to make this work to its fullest extent (it will "work" but not as well even without a driver change). Of course, we expect that NVIDIA and especially AMD (as they are also a multi-core CPU company) will be very interested in making this happen. And, again, this provides major incentives for game developers to target DX11 even before DX11 hardware is widely available or deployed.

All this is stacking up to make DX11 look like the go-to technology. The additions to and expansions of DX10, the timing, and the ability to run on down level hardware could create a perfect storm for a relatively quick uptake. By relatively quick, we are still looking at years for pervasive use of DX11, but we expect that the attractiveness of the new features and benefit to the existing install base will provide a bigger motivation for game developers to transition than we've seen before.

If only Microsoft would (and could) back-port DX11 to Windows XP, there would be no reason for game developers to maintain legacy code paths. I know, I know, that'll never (and can't by design) happen. While we wholeheartedly applaud the idea of imposing strict minimum requirements on hardware for a new operating system, unnecessarily cutting off an older OS at the knees is not the way to garner support. If Windows 7 ends up being a more expensive Vista in a shiny package, we may still have some pull towards DX9, especially for very mainstream or casual games that tend to lag a bit anyway (and as some readers have pointed out because consoles will still be DX9 for the next few years). It's in these incredibly simple but popular games and console games that the true value of amazing realtime 3D graphics could be brought to the general computing populous, but craptacular low end hardware and limiting API accessibility on popular operating systems further contribute to the retardation of graphics in the mainstream.

But that's the overview. Let's take some time to drill down a bit further into some of the technology.

Introducing DirectX 11: The Pipeline and Features Drilling Down: DX11 And The Multi-Threaded Game Engine
Comments Locked

109 Comments

View All Comments

  • DerekWilson - Saturday, January 31, 2009 - link

    These figures include "shipped" versions of Vista that people chose to downgrade to XP. It includes systems that came preinstalled, even the "vista capable" systems that people might have chosen to replace with another OS out of the box or after it didn't deliver what they expected.

    No Vista isn't as bad now as it was at first, but that first impression really does matter and significantly affected DirectX10 adoption, development efforts, perception, and all sorts of things that have a lasting impact on the entire industry.

    Also, MS designed DX10 to be tied to the WDDM when they didn't need to in order to expose functionality for developers to use the new features of hardware. They didn't need to do this at all, and we could have had DX10 and DX11 on XP if MS hadn't wanted to push sales of Vista through needless requirements that tied future versions of DirectX to it.
  • michal1980 - Friday, January 30, 2009 - link

    Vista bigger problem was Image. It started a bit rocky, and by the time it was 'fixed' people allready wrote it off. M$ was/is smart enough to know a damaged brand, and instead of releasing Vista Sp2, they slapped a new name on it.

    I do have a bit of a chip on my should about win7, from what I read, i'd love to upgrade.

    But good lord, I own 2 ultimate, and 3 home preimum licenses. I hope M$ has some nice deals for vista users, because i'm going to feel a bit ripped of having an OS with a 2 year life span.
  • frozentundra123456 - Sunday, February 1, 2009 - link

    I agree that it is a ripoff to have an OS with such a short life span. Is the "planned obsolescence" in the worst form??
  • LeStuka - Saturday, January 31, 2009 - link

    I read somewhere that Vista Ultimate owners will get a free/reduced price upgrade.. Not sure how reputable that is (my memory is a bit hazy on it) but is defiantely worth some research.
  • marsbound2024 - Friday, January 30, 2009 - link

    Let me start off by saying I was enthralled by this article. Very well detailed and well explained. There were a few occasions, however, where I wished for more explanation (or maybe my eyes skipped over an explanation you might have provided earlier in the article). I will admit, I am not as highly inclined on software as many people might be here. I am a great deal more interested in hardware usually, but when it comes to APIs such as DirectX and operating systems and their features such as Windows 7, then I am usually engrossed in those. What exactly are LODs and what is OOP constructs and what is HLSL? Now admittedly I can use Google to find all of this out, but it would be nice to have this consolidated into your article (if it was, but my eyes skimmed over that part, then I apologize; though I read your article pretty much word for word).

    There are a few grammatical errors such as instead of "that" you put "than" or maybe it was "then" and you said "a architectures" or something to that effect. This doesn't really matter but I thought I'd throw that out there.

    I'd really like to know if the upcoming generation GPUs in June/July will make use of DirectX11? I suppose this depends on how quickly Microsoft can a good, full-featured SDK out there, perhaps. Also, albeit a bit off-topic, but any thoughts on when Windows 7 might be released to consumers? Are we still thinking later this year in time for the holiday season or the old Microsoft "by the first quarter of 2010" or whatever it was (i.e.: January possibly)?
  • DerekWilson - Saturday, January 31, 2009 - link

    Sorry about leaving out some definitions there ... I went back and added in some explanation of what HLSL and OOP stand for and what LOD is.

    We suspect that the first round of hardware that comes out after Windows 7 is available will support DX11 ... We haven't had confirmation on that from either vendor yet, but that's our strong feeling at this point.
  • michal1980 - Friday, January 30, 2009 - link

    Author just seems to have a huge chip on his shoulder.


    good article, that quite frankly left a bad taste in my mouth because of the unexplained, and un-needed vista bashing
  • tommy2q - Saturday, January 31, 2009 - link

    vista 64 bit has been great for me. it's faster than xp pro on my computer and more stable.
  • DerekWilson - Friday, January 30, 2009 - link

    I don't have a problem explaining myself, I just thought it was unnecessary -- I apologize.

    It's not that I have a chip on my shoulder, it is simply a fact that Vista had and has problems that caused issues with the uptake of DX10. It's not a personal problem, it's just information.

    First, obviously an OS upgrade was required to get DX10. People were turned off to this idea because of initial problems that were resolved after a period of time. But much damage was done.

    For the first year of it's life, many drivers and applications were unstable and buggy, especially sound and graphics and especially under 64-bit Vista. MultiGPU support had its own problems, but that's a whole other barrel of monkeys. When SP1 hit most of our problems were resolved.

    Performance for many tasks are decreased under Vista, though, again, much of this has been fixed. But the problem is that uptake of Vista was damaged because of this, especially among hardcore gamers and especially because there weren't any DX10 only titles or Vista only titles that were compelling (and no, Lost Planet was not compelling). Also, in cases like Crysis, DX10 incurs a huge performance hit and many gamers prefer to run DX9 anyway for the higher performance.

    OS X also made huge strides and is a terrific OS. For usability, people have started to realize they had a choice in large part because Vista failed at the beginning to deliver what it promised. And choice is good.

    MS recognized that they had a problem and implemented and extended again and again downgrade options to Windows XP for customers who were unsatisfied with Vista. They have significantly invested in and sped up development on Windows 7 in order to deliver an option that will regain customer interest. They've also dumped tons of money into ad campaigns like mojave and seinfeld.

    Vista is not a failure in terms of total sales or market penetration as compared to other pieces of software, but it absolutely is compared to other major milestone MS OS releases. They needed to deliver a WinXP and they delivered a WinME ...

    The degree to which people hung on to XP and the problems with Vista have certainly caused a delay in a full transition to DX10 programming by game developers.

    Vista failed to be truly viable vehicle for pushing forward graphics technology on the whole not because it totally sucks, is lame, or any one person doesn't like it. It failed on its merits because it didn't come out of the gate as strong as it needed to be.

    Certainly many developers have done some cool things with DX10. Which is great. But building a platform where people like the Beta more than their current stable OS is a good start to getting people interested in dropping Vista for Windows 7 and inspiring hold outs to finally move from Windows XP to Windows 7.

    I wasn't trying to "bash" vista. I feel like I was just calling it like it is.
  • archer75 - Saturday, January 31, 2009 - link

    All of the "problems" with Vista you mentioned actually aren't even Microsoft's or Vista's fault. Drivers are applications are the responsibilities of 3rd parties. It is they who dropped the ball. Most companies grew up with XP and that is what people learned to write drivers and apps for. With the necessary change to the driver model in Vista these people had to learn a new way of writing drivers. A necessary change but it took time.

    Also everything that SP1 fixed, was fixed long before SP1. All of those updates were available on the knowledge base. All SP1 did was put them in one neat little package. People like myself had those updates long before SP1.
    I also run x64 and have since beta. My system has had quality drivers on day 1 and I never had any stability issues either.

    Obviously an OS upgrade was required for DX10. And why wouldn't it be? Do you give away all of your new features in your old products? What company does that? You put new features in new products. Apple does this. Hell, ilife 09 is leopard only. They force you to upgrade regularly.

Log in

Don't have an account? Sign up now