[In this sponsored feature, part of Gamasutra's XNA microsite, Microsoft's Kevin Gee explains in-depth the new features of DirectX 11, from improved multi-threading to Shader Model 5.0 and beyond.]
Recently, at its annual Gamefest conference, Microsoft announced the forthcoming DirectX 11 API set. This technology, whose key features and benefits are discussed in this article, enables developers to take advantage of the latest hardware developments across both CPUs and GPUs...all while easing development pain. Let's take a look at the rich set of DirectX 11 features.
Windows Vista and DirectX 10 were engineered to improve the underlying Windows Display Driver Model (WDDM) and create significant opportunities for driver performance improvement. In addition, the DirectX 10 API was designed to be cleaner and simpler, with the near full removal of capability bits, thereby making client code easier to write and removing development pain. DirectX 11 brings enough new features to be a full version update, however, since it builds upon and extends DirectX 10. Anyone familiar with DirectX 10 and 10.1 will feel immediately at home with DirectX 11. With DirectX 11, it is possible for developers to target hardware feature levels 10, 10.1, and 11 by using a single set of functions.
The timing for the final release of DirectX 11 aligns with the next version of Windows, but the API will also be made available on Windows Vista. Thus, with the DirectX 10-class and 10.1-class hardware level already in consumer's machines, there will be a lot of hardware to target right from launch.
Earlier releases of Direct3D focused primarily on single CPU configurations and as such had limited threading support. With DirectX 11, the API has been updated to enable developers to better drive the GPU from a multi-core CPU. DirectX 11 improves scaling on CPUs via changes to both the API model and driver model. Asynchronous device access becomes possible through two key features of the Direct3D 11 device object.
The following figure shows rendering tasks being queued in parallel to the main immediate context, and being submitted as they become complete.
This feature of DirectX 11 supports Direct3D 10-class and 10.1-class hardware, too, so changes made in the way applications render will benefit existing hardware.