[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.
Feature Highlights
-
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.