DirectX 10.1 makes current hardware obsolete? Not!

Having just returned from Siggraph this year I was fielding some questions from some co-workers. “Didja hear that Microsoft announced DirectX 10.1?”, “Yeah”, “And that it makes all DX10.0 hardware obsolete?” – To which my witty reply was “huh?” I was there when the DX10.1 features were described and I’m sure I would have noticed it if Microsoft had made such an announcement.

What I do remember was the description of the architecture for DX10 and why it’s breaking from the DX9 interface. Basically it’s that fact that the API has just gotten bigger and bigger and has gotten to the point where 1) The underlying hardware doesn’t work the way the API was originally laid out, and 2) the drivers are now these huge things to force the legacy API calls to talk to the current hardware setup. DX10 (and OpenGL 3 for that matter) is where we make a clean break and get back to a thin driver layer over the GPU. Gone are the fixed lighting pipeline of yor. In fact the whole Begin Scene – render – EndScene architecture is gone. Cap bits are finally going away and DX is adopting (waaaay to late) the OpenGL conformance test model. In other words DX10.0 is an API specification. If you want you hardware to be certified as being DX10.0 compatible, it has to run all the features that are in the DX10.0 spec. (And I assume it has to generate conforming output when tested against the API). The programmers now get to code to one API, not various flavors, and the consumer gets to know that a DX10 card will run all DX10 games.

OK, so what’s the difference between DX10.0 and DX10.1? Basically what I heard was that DX10.1 was what Microsoft wanted for Vista ship, but not all the major hardware vendors could get all the features in the current hardware generation. So what shipped was most of the features minus some more esoteric things (like how 4 sample full screen antialiasing is implemented). The reason DX10.1 is coming out so quickly is that Microsoft wants the spec out there so developers can see what’s going to be available in the near future as well as putting a stake in the ground that hardware venders have to meet. The new features that are in DX10.1 are:

  • TextureCube Arrays which are dynamically indexable in shader code.
  • An updated shader model (shader model 4.1).
  • full 32-bit floating point filtering
  • The ability to select the MSAA sample pattern for a resource from a palette of patterns, and retrieve the corresponding sample positions.
  • The ability to render to block-compressed textures.
  • More flexibility with respect to copying of resources.
  • Support for blending on all unorm and snorm formats.

So, as the Microsoft guy said, it’s all about the rendering quality. So, I doubt that when DX10.1 comes out suddenly your DX10.0 game will stop working. These are just enhancements to the API that don’t reflect the current state of the hardware, just where the hardware will be forced to go in the near future. The DX9 API is getting a final revision that then will be frozen so any non-Vista OS will be able to run a DX9 (or 8, or 7) game, as will Vista since the DX9 DLL will coexist with the DX10.x DLL on Vista. If you want to try it out you’ll need the Vista SP1 beta and the D3D10.1 Tech Preview – both will be downloadable from Microsoft.

This entry was posted in DirectX, Graphics API. Bookmark the permalink.