Sponsored Feature: Introducing DirectX 11
August 15, 2008 Page 1 of 3
[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.
- Down-level hardware and operating system support
- Improved multithreaded device
- New hardware stages for tessellation
- Improved texture compression
- Shader Model 5.0
- Compute shader
- Additional features
Down-Level Hardware and Operating System Support
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.
Improved Multithreaded Device
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.
- First, improvements in synchronization between the Direct3D device object and the driver enable asynchronous API calls, including resource allocations. Direct3D 11 allows developers more freedom when expressing parallelism by allowing such calls to occur across multiple threads.
- Second, the Direct3D device interface now supports multiple rendering contexts. 1) a primary immediate context which dictates the timeline for work submission to the GPU, and 2) optional deferred contexts created by the application developer as needed. Work associated with each deferred context can occur on a separate thread/core. This enables GPU commands to be accumulated in parallel to the main rendering work, and then sent to the GPU later when the main context is ready to submit a new task to the GPU.
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.
Page 1 of 3