Windows 7 is less than forty days away from its retail debut, and it carries the new DirectX 11 specification in tow. AMD will soon fire the first shots with a suite of cards, but what are you really going to get? Today we’ll be talking about the changes DirectX 11 brings to the table and what they mean for you.
DirectX evolved
DirectX 11 is the next iteration of the Microsoft DirectX architecture. DirectX is a collection of common application programming interfaces, or APIs, that standardize the way code for a GPU is written and executed. As a result of DirectX, and its “competitor” OpenGL, users across the globe can run any game on any GPU from any company. Whether or not that game runs well depends on the hardware’s horsepower, but DirectX has helped to avoid a standards war not unlike the one that divided Blu-ray from HD-DVD.
As the eleventh major entry into the DirectX annals it’s not quite as drastic as DirectX 10 that came before it. While DirectX 10 was all about dramatic improvements in lighting and texturing, DX11 is a more subtle movement that emphasizes GPU-accelerated apps and refined scene detail.
DirectX accomplishes its more transparent emphasis in three distinct ways.
Hardware Tesselation
The drive to produce increasingly detailed scenery in PC gaming has long been a motivator in the industry. Newer games beget faster GPUs, and faster GPUs beget newer games. But the quest for detail has a price, and that price is an ever-escalating demand for memory and storage.
Crysis is perhaps the most present example of that price, and it is hefty indeed. Years after its release, Crysis remains the gold standard for graphical detail and it continues to butcher all but the meatiest hardware with higher detail levels.
The solution to problems like this lies in hardware tessellation, which allows for the procedural generation of more advanced scenes from a set of sparse instructions.
Rendering with hardware tessellation begins when a patch–a triangle or quad–is passed to an engine called the hull shader. The hull shader accepts the patch and prepares instructions for the tessellator, which then generates the required geometry to make a fully detailed model. Once tessellation is finished, the newly complex model is passed along to geometry shaders that provide additional smoothing for realism. From there, the complete model receives its textures, its lighting, and arrives on your monitor as a complete 3D scene.
Hardware tessellation is a big deal because it is a completely scalable system. DirectX 11 games need only provide one set of tessellation instructions, and the GPU will determine how much complexity the scene can handle without degrading the user’s experience. This fine, granular level of control will lead to more detailed scenes for all levels of hardware.
Compute shaders
Broadly speaking, GPUs are becoming more “CPU-like” than ever. While yesteryear’s GPUs could only perform operations on graphics, today’s GPUs offer the precise arithmetic and fully programmable sections necessary to run real programs. The modern GPU is more than just pixels and polygons!
The realization of the General Purpose GPU, or GPGPU, has made waves in the industry. Between NVIDIA’s CUDA language and ATI’s Stream Technology, both major players in the graphics games have raced to accelerate programs with the GPU. Unfortunately, that race is happening across a big divide: CUDA and Stream code is incompatible.
Left to their own devices, we know these fierce competitors would fight until that gulf is impossibly large and permanent. While initiatives like OpenCL have had moderate success at bridging the gap with a common language, DirectX 11 is positively pulling these enemies into an embrace.
DirectX 11’s DirectCompute API is a standardized way to perform GPGPU acceleration, and every DirectX 11 GPU must run it. Microsoft’s decision to provide a common interface is finally the beginning of the “write once, run anywhere” era we need. DirectX 11 GPUs will need just one body of code to perform stream processing tasks like physics and video encoding, and it won’t matter what GPU that code runs on.
Multithreaded rendering
One of the big problems with the increasing number of CPU cores is that it becomes increasingly difficult to harness all of them for actual work. The issue is largely owed to the fundamental nature of a CPU which accepts blocks of inputs called threads. There are only so many GPGPU threads a single program can create–video, physics and AI–and it’s wildly difficult to break those threads into smaller pieces.
DirectX 11 seeks to crack the whip on the globe’s growing glut of idle CPU cores by sending them off to crunch secondary video threads. The so-called deferred context of these secondary threads mean they can be dynamically inserted into the rendering pipeline when the GPU calls for it. This has the obvious advantage of parallelizing rendering work.
Parallel rendering is the “more work at the same time” answer to improving performance, but don’t expect miracles. Video cards are serial beasts, which means the GPU must use mutex (mutual exclusion) to sequence the threads, lest they step all over one another.
Multithreaded rendering may not sound like much, but lazy cores need more work, and it’s free performance for the rest of us.
When is it coming?
As we mentioned, AMD is preparing to launch the world’s first DirectX 11 GPUs. The new product lineup is expected to consist of five GPUs that target the complete range of budgets and performance expectations.
AMD’s DirectX 11 parts aren’t far off, either. We have good reason to believe that AMD will soon be unveiling Evergreen hardware on the deck of the USS Hornet parked in sunny San Francisco bay.
NVIDIA fans, meanwhile, may have considerably longer to wait. If the rumors are true, NVIDIA’s DirectX 11-ready GT300 series won’t dribble into retail until November, and may not hit volume until the beginning of the New Year.
Aside from whatever happens in the GPU space, know that it all depends on the launch of Windows 7, and we know that date for sure: October 22. Be there.