Moving to new home
Join Date: Jan 2005
Re: First attempt at porting DX10 into XP?
The Direct3D 9Ex interface provides access to a slight extension of the standard Direct3D 9 API that exposes the virtualized resource allocation, new lost device semantics, and some other new features available while running on Windows Vista. By creating this extended object, the Direct3D 9 API uses the new semantics and therefore requires the application to use different logic (and therefore different code paths) for resource creation, management, and error handling for new kinds of conditions. This API is only available on Windows Vista, and it requires WDDM drivers. Because Direct3D 9Ex uses a separate API and driver code path than Direct3D 9, supporting this API requires additional test cases for your application.
The primary reason for creating the new Direct3D 9Ex API was to allow full access to the new capabilities of WDDM while maintaining compatibility for existing Direct3D applications. The new 3D desktop and many Windows Vista-specific applications make use of this version of Direct3D 9, but they are not functional when running on older XPDM drivers. Because the Direct3D 9Ex API will never appear on older versions of Windows due to a lack of support for the WDDM, the standard Direct3D 9 interfaces cover a much broader set of systems. For high-performance applications that can take advantage of the next generation of video hardware, the entirely new version 10 of Direct3D provides many new capabilities not exposed by Direct3D 9Ex. As a result, for games and most other applications, Direct3D 9 or Direct3D 10 is the recommended API.
Note The DirectX SDK does not provide samples, headers, or libraries for the Direct3D 9Ex interface. The MSDN Library and Windows SDK (formerly known as the Platform SDK) contain the available documentation, headers, and libraries.
For more information about Direct3D 9Ex, see DirectX for Windows Vista on MDSN.
To fully realize the potential of the new Windows Vista driver model and next-generation hardware, an entirely new version of the Direct3D API has been created. While WDDM eliminates some of the limitations on performance in the existing graphics system, Direct3D 10 goes further by removing design bottlenecks in the existing Direct3D API and greatly simplifies the task of programming the GPU.
The new API completely eliminates all but a few fixed-function aspects, replacing them with programmable constructs and greatly streamlining the internal implementation. The hundreds of capability bits in previous versions of Direct3D have been completely eliminated and replaced with a well-defined, inclusive set of functionality that has only a few optional usage scenarios for specific resource formats. CPU-intensive resource creation and validation now have explicit semantics in the new API, allowing for much more predictable performance behavior and greatly reduced per-draw overhead. Resources can be reconfigured into multiple forms to allow efficient use at various stages, and the feature set imposes far fewer restrictions on usage scenarios for formats. There area also new block-compressed normal-map texture formats.
In the new API, shader constants and device state are explicit resources, allowing for far more efficient caching on the hardware and greatly simplified driver validation. The programmable shader model has been unified across both vertex and pixel shaders, and made more expressive with a well-defined computational model and operator set. Also, a new geometry shader stage has been added to operate on primitives after the vertex shader stage. The results of the GPU’s work in the vertex and geometry shader stages of the pipeline can be streamed out to video RAM for reuse, allowing for the possibility of extremely complex multi-pass GPU operations with minimal CPU interaction.
All of these enhancements enable next-generation graphics technology and expand the ability of applications to off-load work to the GPU. Offloading allows more complex GPU-based character skinning, accelerated morphing techniques, shadow volume generation and extrusion, particle and physics systems that are entirely GPU-based, more complex materials combined into efficient large-draw batches, procedural detailing, real-time ray-traced displacement mapping, single-pass cube-map generation, and many more techniques — all while freeing up CPU resources for more complex applications.
To provide this level of innovation in Direct3D 10, older hardware cannot be expressed as a partial implementation of a new interface. A video card is either capable of supporting all of the new features, or it’s not a Direct3D 10–capable card. Therefore, while Direct3D 9 could drive DirectX7-era hardware with many missing capability bits and usage limitations, Direct3D 10 only works on a new generation of video cards. For an application to support older video hardware, it must also support the Direct3D 9 interfaces. Future versions of Direct3D will build on version 10, extending it to new versions of the API while ensuring a strict superset of Direct3D 10 functionality.
For more information about Direct3D 10, see the DirectX SDK documentation for DirectX 10.
Allow me to pull out the inordinately-large-hammer-of-truth on that one and bang out some pretty clear messages:
- Absolutely not.
- Definitely not.
- No f'n way.
Now, I'm aware of the fact that some people aren't interested in letting “the facts” get in the way of a good rumor. If you're one of those people, you can stop right now and tell your buddies, "I saw this Microsoft guy say it's not going to happen, so the rumor must be true!" (because we all know that when people say the opposite of what you want to hear, they MUST be hiding something :-).
For those of you still reading, and interested in the facts, here they are:
- DirectX 9.0L was the early name designation for what is now called "DirectX 9.0Ex".
- DirectX 9.0Ex is a Windows Vista only feature. In a nutshell, it is DirectX 9.0c, with some modifications to work smoothly with the new driver characteristics of Windows Vista, which is significantly different at the graphics level than Windows XP. You can read more about DirectX 9.0Ex and how it fits into the Windows Vista picture here
- Windows XP cannot run DirectX 10 (technically, Direct3D 10) applications because of the significant changes in the graphics API and driver model
- And while I’m on it, the Xbox 360 cannot run Direct3D 10 because it lacks the Shader Model 4.0 hardware.
"During a DirectX 10-related event in London, UK, Richard Huddy, ATI Technologies’ software developers relations chief, said that Microsoft’s Vista will integrate DirectX 10 and DirectX 9 APIs for different types of hardware, but the current Windows XP will not get DirectX 10 support, as suggested some rumours earlier. For end users this means that to get the most advantages of the new-generation graphics processing units (GPUs), the new OS will be required."
Hope this clears things a bit, there wont be DX10 for XP, period.
DirectX 9 API
DirectX 10 API
Why DX10 wasn´t created on XP and why isn´t it on XP
Lets consider the software development lifecycle, the DX10 lifecycle, and the history of Vista,
The first step taken is to create a code branch for the new OS. XP RTM'ed in August 2001. I remember the ship party and still wear the t-shirt.
As changes go in to the new branch, it no longer resembles the thing that it was before.
DX10 itself wasnt fully baked when the initial branch was taken. DX9.L to support Aero and desktop composition took a bit of time. And the design if DX10 itself went thru a process with the IHV community where feature asks went back and forth, and features made the cut and missed the cut. Features miss the cut for a variety of reasons but that all takes time. Negotiations with the IHVs didnt conclude until late in 2003. This resulted in simplifications to the original MS Input Assembler design request. I worked at ATI in this timeframe as Director of Strategic Relationships and owned the ATI-MS relationship so I have 1st hand knowledge. I was in the meetings.
Given XP shipped in 2001 and it was late 2003 when the DX10 design solidified - it should be obvious that "what the OS was" was well beyond XP before serious DX10 work commenced. Heck, the Longhorn reset was in 2004 and DX10 wasnt done until later. The build that was demo'ed at WinHEC 2004 with the texture memory management was a very fresh build and wasnt feature complete - and that was April or May 2004. The 1st DX SDK supporting DX10 didnt appear until Dec 2005 here, http://www.microsoft.com/downloads/d...DisplayLang=en. Further validating these points.
After the Longhorn reset, a new code branch based on W2K3 was started. Again that wasnt XP. And again kernel changes, which had to go in before the driver layer and the API could be brought up, made it even more not XP.
DX9 was in the original code branch, and was in W2K3 - so maintaining compat is of course an order of magnitude easier then new implementation.
Given the new features in the driver model and hardware ( with GPU task switching, GPU memory management and more ) all of which require kernel support - hoisting a driver layer like that on XP is rewriting it to be Vista. FWIW, the MS hw developer page has the graphics logo requirements and it explicitly mentions these GPU features as being required. They are essentially hidden features that API programmers and end-users never see.
At some point, the question "to serve existing customers" or "to get new customers" is a question every business has to ask itself. Given XP has had a 5+ year run it is hard to see how XP customers have a strong case they were not given good value for the money. Especially when the features in question are ones that are a rewrite of the kernel and the driver layer, and require such a hw leap. Really.
I hope the community can appreciate my points about how the branch and life-cycle work to make assumptions that Microsoft developed DX10 on XP not really true.
I also hope you can appreciate the level of the change, so the community understand the ask is a non-trivial investment of engineering resources.
We can politely disagree about whether or not MS should provide this functionality to XP users. And whether or not the investment makes sense.
I appreciate the strong feelings people have over this, but ad-hominems dont help advance the discussion. Could we keep them out of the discussion, please?
This thing, if it gets it, could, at much, get a software emulation, for hardware they need drivers ready for DX10 in XP, thing that never will happen...
Intel Quad Core Q6600 @ 3,4 | 4Gigs (2x2) OCZ Reaper PC-8500 | Gigabyte P35-DS3R | Western Digital 500G Caviar SE16 SATA2 NCQ | Seagate160 Gig 7200.9 SATA NCQ | Maxtor 300Gig SATA NCQ | Asus Geforce 260GTX | Samsung Syncmaster 930BF 19'' | BeQuiet Straight Power 700W | Cooler Master CM690 |Windows Vista x64 SP2 |Windows XP SP3 [Deceased PSU, no money for new one, stucked with laptop and XBOX 360]
Macbook Pro 13': 4gigs | Core2 Duo 2,53Mhz | 250Gigs HDD |geforce 9400M| aluminium unibody | Mac OS X 10.6.2 Snow Leopard |gentoo Linux 2.631 kernel
Wolfhound´s Brute: http://wolfhound77.mybrute.com