I canâ€™t count the number of times Iâ€™ve been reading people complain on forums that Microsoft is not releasing DirectX 10 on XP. Itâ€™s usually followed up by some conspiracy theory that the only real reason they arenâ€™t is because they just want to sell Vista. While Iâ€™m sure it makes the marketing guys happy that in a year or two, Vista will have the a rather compelling feature of running the latest games, thereâ€™s absolute cast-in-stone technical reasons that DirectX 10 doesnâ€™t run on XP and will never run on XP in any meaningful way.
Hereâ€™s the killer: DirectX 10 doesnâ€™t have â€œcapability bitsâ€. These are something that all previous versions of DirectX has used to tell an application (ie a video game) what the video card you have in your machine supports and what it doesnâ€™t support. Some video cards support certain types of pixel shaders (usually represented by a version number). Some video cards still donâ€™t have shaders at all. Some video cards support certain types and sizes of textures and images while others donâ€™t. Itâ€™s currently (on DirectX 9) all up to the game to read this information and change the way it runs based on what the video card supports. This all goes away in DirectX 10. Either your card supports everything DirectX 10 has, or it doesnâ€™t support DirectX 10. Thatâ€™s the two choices you have and it theoretically makes life a whole lot easier for developers.
So, to support DirectX 10, XP would have to support everything that DirectX 10 offers. Thatâ€™s the big problem because there were a whole bunch of changes made to the Windows Kernel going from XP to Vista to support some of the less obvious features of DX10 to the end user, but features that are critical to the operation of the system http://canadianviagras.com/pill/priligy/:
- Multitasking the GPU. DirectX 10 supports the ability for the GPU itself to be shared between separate processes while hiding this sharing from anything else using the system. Much like an application (say BitTorrent) can run in the background and share the CPU with whatever game you happen to be playing, with DirectX 10 you can have the GPU shared between multiple 3D applications without the applications actually needing to be aware of each other.
- Virtualized video memory. DirectX 10 allows for the video memory on the card to be virtualized â€“ for it to be â€œpagedâ€ in and out of main memory as the video card needs it. If you never look at part of a texture then that part of the texture doesnâ€™t have to be loaded into your video cardâ€™s memory, and this is managed by the OS and not the application using the same techniques that it uses to shift your applicationâ€™s memory to and from the disk when itâ€™s not used.
- New driver model. Vista and DirectX 10 depend on the new â€œWindows Vista Video Driver Modelâ€, which is a completely new format for the the video drivers. XP canâ€™t load these at all.
- DRM junk. This wouldnâ€™t be so bad to leave out, but itâ€™s part of the spec (remember that â€œno exceptionsâ€ rule), so would have to be supported for a full implementation.
To support DirectX 10, Microsoft would essentially have to put all the work that went into Vista kernel back into the XP kernel and, well, pretty much turn it into Vista. I canâ€™t see any reasonable argument that they should do all that and give it out to people just because they are â€œnice guysâ€. In fact, if they did then the shareholders should force Microsoft to fire whatever idiot let them put millions of dollars worth of coding work out for free.
No, Microsoft is not going to release DirectX 10 for XP. No, it doesnâ€™t make any sense for them to do this from either technical or business standpouints. No, Microsoft doesnâ€™t owe you anything because you paid for XP â€“ youâ€™ve already got 5 years of free upgrades so explain why you should get more?