March 21, 2006 4:00 AM PST
An inside look at Windows Vista
- Related Stories
Piecing together Windows VistaNovember 8, 2006
Spyware-killing Vista could take out rivalsMarch 17, 2006
Windows Live parental controls due this summerMarch 13, 2006
Google Desktop 3 criticizedFebruary 10, 2006
Microsoft revamps Vista testing scheduleJanuary 27, 2006
Windows AntiSpyware becomes 'Defender'November 7, 2005
New Windows file system enters testingAugust 29, 2005
(continued from previous page)
Windows Vista and DirectX 10
It's been called DirectX 10, Windows Graphics Foundation 2.0, and most recently, Direct3D10. The naming situation will clear up as we get closer to the official Windows Vista release, but all you have to know is that DirectX 10 and Direct3D10 in particular will introduce a new era in PC gaming.
Microsoft's DirectX APIs are a collection of interfaces that standardize how game developers talk to PC system hardware. It's a lot easier for programmers to write for a single DirectSound or Direct3D API, instead of writing for every single video card and sound card in existence. Microsoft rebuilt its Direct3D API from scratch for Windows Vista, and Direct3D10 will serve as the base for all future Direct3D innovations throughout the life span of the Windows Vista operating system.
Because the Direct3D10 foundation has to serve game developers through the next decade, Windows Vista will streamline and open up Direct3D with several forward-looking features that will help programmers create better games and get more performance out of PC hardware.
All hail the graphics processing unit
Direct3D10 finally completes the break from the legacy fixed-function pipeline. Developers will use the programmable pipeline to emulate the older, fixed-function steps. Additionally, Microsoft had to rethink its display driver model now that the entire desktop is going 3D. The video card isn't just for games anymore. When you have a 3D desktop and give each application its own 3D window, the display driver has to be flexible and stable enough to handle the video card's increased role in the system. Microsoft split up the display driver to increase stability, to ensure that the 3D desktop stays up in the event that a game or another application crashes due to a graphics error. This change also means that Microsoft will not release DirectX 10 for Windows XP, because many of the Direct3D10 improvements will need the new Windows Vista Display Driver Model.
Opening up the video card to more applications will require Vista to give the GPU more system resources and allow applications to share the hardware. The biggest change for game developers will be virtualized memory for the GPU. The video card will now have its own space in system RAM to store information that can't fit on local video card memory. High-end video cards ship with 256MB or 512MB of memory, but games can still use the extra space in system memory to store large chunks of information, like textures.
Epic Games founder Tim Sweeney explains, "Virtual texturing eliminates the video memory bottleneck on texture size; whereas in DirectX 9 the size of textures we can use with full performance is limited by the amount of video memory, in DirectX 10 it is only limited by total system memory." Furthermore, Tim predicts that virtual memory will enable a "2X-4X increase in texture usage in games, which will be great for Unreal Engine 3 games, where textures are often authored at very high resolutions like 2048x2048, and then scaled down on lower-end systems to improve performance."
Setting standards and improving performance
Video cards will now have strict feature-set requirements for Direct3D10. A video card must have the full feature set to be DirectX 10 approved. This isn't a whole lot different from the existing model, in which a card has to have certain features to be DirectX 9.0c or Shader Model 2.0 compliant, but Microsoft has made the specification much more detailed to remove any chance of hardware variation. Differences in how Nvidia and ATI cards handled floating-point precision created extra work for developers in the past, but tighter Direct3D10 specifications will help remove ambiguous areas in hardware design. Having consistent hardware means programmers can avoid spending development time on customizing games for cards that don't have all the necessary features or have odd implementations.
Microsoft plans to accelerate its Direct3D release schedule to keep up as the graphics manufacturers release new GPUs with advanced features. If everything goes as planned, the game developer will have to learn only Direct3D11, instead of figuring out the quirks for two different GPUs when Nvidia and ATI release a new technology round. However, this change might not mean the end of writing code for specific GPUs. While developers can count on DX10 to define card features sets, the Microsoft DirectX team admits that "we may see [hardware vendors] putting in additional differentiating features, which developers may want to natively support."
DirectX 10 will increase game performance by as much as six to eight times. Much of that will be accomplished with smarter resource management, improving API and driver efficiencies, and moving more work from the CPU to the GPU. "The entire API and pipeline have been redesigned from the ground up to maximize performance and minimize CPU and bandwidth overhead," according to Microsoft. Furthermore, "the idea behind D3D10 is to maximize what the GPU can do without CPU interaction, and when the CPU is needed it's a fast, streamlined, pipeline-able operation." Giving the GPU more efficient ways to write and access data will reduce CPU overhead costs by keeping more of the work on the video card.
Here's a list of several new Direct3D 10 performance improvements GameSpot was able to wrestle out of the DirectX 10 team:
New constant buffers maximize efficiency of sending shader constant data (light positions, material information, etc.) to the GPU by eliminating redundancy and massively reducing the number of calls to the runtime and driver.
New state objects significantly reduce the amount of API calls and bandwidth, tracking, mapping, and validation overhead needed in the runtime and driver to change GPU device state.
Texture arrays enable the GPU to swap materials on-the-fly without having to swap those textures from the CPU.
Resource views enable super-fast binding of resources to the pipeline by informing the system early-on about its intended use. This also vastly reduces the cost of hazard-tracking and validation.
Predicated rendering allows draw calls to be automatically deactivated based on the results of previous rendering--without any CPU interaction. This enables rapid occlusion culling to avoid rendering objects that aren't visible. Shader Model 4.0 provides a more robust instruction set with capabilities like integer and bitwise instructions, enabling more work to be transferred to the GPU.
The D3D runtime itself has been completely refactored to maximize performance and configurability by the application.
It remains to be seen just how well actual DX10 graphics hardware will be able to handle the additional work, but we've seen in the past that ATI and Nvidia have been able to deliver whenever games have shifted work from the CPU to the GPU.
Sarju Shah and James Yu report for GameSpot.
61 commentsJoin the conversation! Add your comment