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

  • just4U - Wednesday, February 4, 2009 - link

    While there might be some programs out there that definitely do take advantage of 8G of ram.. I haven't noticed that for Vista. It seems to hit a sweet spot at 4Gigs (or 3.3 for 32bit) I don't think 2Gigs of ram is optimal for Vista at all tho, and always push for 4 with all my builds.
  • dzmcm - Tuesday, February 3, 2009 - link

    Do yourself the biggest favor and Google kat mouse. I used ubuntu for a while and got spoiled by the mouse wheel functionality. This little program will allow your to scroll windows not in focus. And it adds extra functionality to the middle mouse button (which I just dissable). Plus you can set up per application rules.
  • SoCalBoomer - Monday, February 2, 2009 - link

    Fail. Sigh.

    A: 2Gigs works great. 3 Works FINE. 4 works happily with 64.
    B: DECENT video cards work fine. By Decent, I mean anything in the past couple of years - nVidia 7xxx cards, for instance. PCI vid cards? Prolly not. . .
    C: Why not just do it within Windows? UAC is easy to turn off. Windows Defender actually works okay. Readyboost doesn't do anything if you don't turn it on, etc.

    "Nothing like Ubuntu though" - true. I have Ubuntu on my laptop (although it's got Win7 on it and is a TON more functional now) but then Ubuntu doesn't have ANY common use programs written for it - Open Office is about it and . . . much as I like it, it's missing stuff that I use every day on my desktop.

    Games? Well, yes, but there are things other than games - like Office. . . yeah, you know, that behemoth office suite that controls the world? Yeah, not necessarily my fav (except for OneNote - which is awesome) but you gotta do it.


    You can't make your mouse work the way you want and THEREFORE Vista fails? Dude. . . epic fail.
  • stmok - Saturday, January 31, 2009 - link

    Vista IS a marketing failure.

    * It failed to get massive adoption as expected by Microsoft. A good majority of people and businesses are sticking with XP. Go and actually search for world wide statistics, and you'll see for yourself.

    * No matter how much Microsoft spent on marketing (see Seinfield+Gates ads and Mojave), it never caught on...Viral and deceptive marketing don't work.

    * Why do you think the next one is called "Windows 7" (even though you can basically call it Windows Vista Second Edition). Simple. The name "Vista" is a marketing failure. Its kryptonite to the Windows brand name. That's why they dropped it.

    Linux works well when the user has strong motivations to learn and adopt it. When they don't, they are better off using something like Linux Mint (which has all the video codec, and Flash, etc pre-installed) or not even using Linux at all. (Which is better for all involved).

    When a user treats Linux like Windows, it just doesn't work. Hence, all the complaining about how Linux on the desktop won't happen. (Linux was never intended for the desktop. The point was to create a cheap Unix-like solution for the x86 platform).

    Many don't realise that in Linux, the people take responsibility, not a company like Apple or Microsoft. Its about getting your butt off the ground and doing things to make it happen.

    Nothing happens when all you do is sit and complain how Linux isn't this all or that. Its up to you (if you choose to), to do something about it...This is identical to life itself.
  • gochichi - Thursday, February 19, 2009 - link

    If Microsoft wants to go Windows 7 early, they need to reconsider their pricing for Vista upgraders. B/c I have 3 Vista computers and I'm unwilling to spend more than $100.00 to upgrade all 3 of them to Windows 7.

    That's $33.33 per computer as my ceiling. And I'm not going to upgrade one and not all of them. I have more than earned the right to a good price from Microsoft. If they want to charge me full price for Office 2010 (or whatever it'll be called) that's fine, but OS upgrades can't be $100+ a pop, not if Microsoft wants to change OS's every two years.

    I kind of wonder if Vista will pick up traction in the piracy circles once 7 is released. I don't even know if I'll want to upgrade period... I mean, Vista really is fine, and why fix what aint broke.

    I've tried Windows 7 and other than being unusually unstable (which is "alright" technically because it's a beta) it does offer up some decent usability improvements. I'm quite sure that most Vista users will feel like I do... namely, that we should be getting the cosmetic upgrades for free... since we're footing their bills and all. Windows 7 is just warmed over Vista... and frankly if you're excited about Windows 7 yet you "hate" Vista... you're weird b/c they're the same thing.

    Like I said, Windows 7 is UNSTABLE which given the "mission statement" is truly alarming. I mean, I'm running Windows 7 by itself (no apps installed) and yet sometimes Windows Explorer needs to restart (one of my biggest gripes (probably the only legitimate one) with Vista).

    I guess those of us even considering buying OSes separately from PCs are crazy, and now with Windows 7 we'll be even crazier (pricing pending). Hopefully Microsoft will offer us a hand so we can all leave Vista (not because it's horrible, just for uniformity) together. Otherwise, Windows 7 will probably have even worse adoption rates than Vista.

    Microsoft: Don't be greedy! Don't split your user base so much. Let me have computers with the same OS without charging me an arm and a leg. Let Vista users have access to DirectX 11 too... b/c the "gaming" community is just going to backlash and boycott 7 like they did Vista.

    We all "naturally" want the latest version of the OS, coercion isn't necessary at all.
  • x86 64 - Thursday, February 26, 2009 - link

    Nah, Vista is already easier to pirate than XP ever was. All you need is a BIOS with an SLIC table and a VLK (easily done yourself with some research). Then you activate it using Vista's Software License Service (SLsvc.exe the way big OEM's like Dell and HP mass activate PC's) and MS can't tell the difference between a bogus or a legit installation, unless they overhaul their validation methods (not likely).

    With XP you had to deal with trying to remove the WGA nagware. Also there are some WinXP Pro student editions floating around that don't need activation because they don't contain WGA. The thought was that eventually MS would ban these keys but it has yet to happen.

    I imagine Windows 7 will be just as easy as to pirate as Vista, either through a BIOS softmod or foolproof BIOS hardmod.
  • nilepez - Wednesday, February 4, 2009 - link

    WTF are you talking about? Why would MS have expected Vista to get 30 or 40% market share after 2 years?

    For all the BS that XP is God and sold like gangbusters out the door, a little research shows that XP had less than 40% market share in 2005

    You'd have to be a complete idiot to think that Businesses were transition to Vista quicker than they transitioned to XP.


  • swaaye - Monday, February 2, 2009 - link

    I think Vista has "failed" only because there's little reason for the vast majority of users to switch to it. It's very expensive to upgrade to it, and there's just little reason to. The fact of the matter is that for everyone that doesn't care about DX10 gaming, XP can do anything Vista can.

    Personally, I think Vista is ok. If Win 7 improves on it, there's nowhere to go but up. But I also have no dislike of XP, either, and certainly see that it has its place on every PC with <2GB RAM.
  • michaelklachko - Monday, February 2, 2009 - link

    That's a good post. Especially about Linux. Thanks!

Log in

Don't have an account? Sign up now