Introduction

Since the first Direct3D 10 beta was published more than a year ago, the new API has only worked on Microsoft's Vista operating system. Most people believe that this limitation was only introduced to improve sales of Microsoft’s newest version of Windows. One of the theories put forth is that even though Microsoft has limited the installation of some products to specific versions of Windows in the past, some talented hackers have been able to remove these limitations. It has been claimed that there are even examples of this phenomenon in the world of DirectX. Long time observers will recall that Microsoft did not allow the installation of DirectX 5 on Windows NT 4.0, but some enthusiasts made claims that they had it working. However, this is not the full truth. These people were able to get the runtime and the software devices working, but no one was able to get full hardware accelerated Direct3D on Windows NT 4.0. The reason for this is simple. The driver model used by Windows NT 4.0 doesn’t support 3D at all.

3D support was integrated into the kernel of Windows 2000. But as most gamers of the day used Windows 95/98, DirectX 5 aimed primary at these OS. In order to reduce overall development costs, Microsoft decided to reuse most of the Windows 9x 3D driver architecture for Windows 2000. This step also allowed the GPU IHVs to reuse great portions of their driver code. However, this decision did have a drawback. The Windows 95 driver model was not designed for an operating system that doesn’t allow direct hardware access for every program. As Windows NT based operating systems have this limitation to improve security there is an additional overhead. Today, with Windows XP, this overhead is a source of sleepless nights for game developers. GPUs are going faster and faster, but this limitation in the driver model makes it harder to use all this power. Therefore Microsoft decided to revamp the driver model for Windows Vista in order to ensure a much lower overhead cost would be associated with the performance of DirectX instructions.

Click for a bigger version

Windows XP vs Windows Vista driver model

At first the new model looks even more complex than the Windows XP version. Instead of only a kernel mode driver, the GPU IHVs need to deliver a user mode driver too. But it is more like splitting the functions in two parts, which is the same thing they have done for OpenGL ICDs (Installable Client Driver) for many years. The main advantage from the performance point of view is that now the user mode driver decides which data are transferred to the kernel mode driver. Additionally, they do so in a form that the GPU will understand. On Windows XP, the Direct3D runtime sends its own protocol to the kernel driver. Therefore there is an additional overhead in XP to encode and decode commands for the GPU.

Click for a bigger version

 Data flow in XP vs. Vista

These fundamental differences are the reason why the Vista Direct3D 10 runtime will not work on Windows XP. It is simply missing the whole new kernel infrastructure.