heh, sorry! So you worked on SwiftShader then? Nice bit of work thatI've implemented DirectX 9 in software, so yeah I know what an API is.
Well I suppose this is probably my argument - they aren't seperate orthogonal entities. A lot of improvements in D3D10 (okay, these wouldn't all count as features) are due to improvements in the underlying architecture which is owned by the driver/WDDM stack.Why would it be any significant effort to implement DirectX 10 on the XPDM? As far as I know the API is totally orthogonal to the driver model.
I think the resource model is probably the best example. Hardware requirements like format support and guaranteed operation precision (the functional spec goes into a lot of detail on the casting/conversion/precision rules) could be implemented in a "DDI10-for-XPDM," but the interactions between resources - e.g. the "GPU as a shared resource" (memory virtualization to cross-device sharing). From my understanding of XPDM it would be a hell of a lot of work to get functionality included - and many aspects of the D3D10 API expose, albeit subtle (e.g. resource views allowing casting and binding almost any resource to any I/O plug on the pipeline), parts of the resource model such that you'd have difficulty getting D3D10 to run on XPDM in the same way.Could you give an example of that, even hypothetical if you have to?
Okay, here's one way I see it:I can see why that's true for cutting-edge games, but for games that only use DX9-class features throught DX10, why not run it on XP? Ok, I'm not saying this is preferred or that Microsoft should provide this possibility, but I do believe some form of 'hack' can work quite well for a certain class of games.
Yes, some games will use only D3D9-era features via the D3D10 API - but I think these will just be the initial overlap/transition period. Those people that still write a D3D9 engine to run on XP and then have a slightly beefed up SM3+ version that runs on Vista/D3D10. Why would you bother here as you can already play the game via D3D9 and probably not losing all that much.
By the other class, do you mean the more casual/mass-market titles? Say 'The Sims' for example? If so, I'd be surprised if developers of those titles would even use D3D10 - given that we have D3D9Ex as a first-class citizen on Vista and that exposes enough of the features for a 'The Sims'-like title as well as keeping the target market open enough (think laptops and other low-end family PC's that can run Vista but aren't really gaming-oriented).
I suppose I'm querying whether there will ever be a "low end D3D10" game that is EXCLUSIVE (that is, no D3D9/D3D9Ex/XP port exists) to D3D10 that could class as this "only using D3D9 features through the D3D10 interfaces".
I see where you're coming from here - my whole scenario about differences between implementation behaviours is pure speculation - if's, but's and maybe's. But likewise, you say "as long as you're able to behave exactly the same" which I'd see as being an absolutely huge IF :smile:I've seen my share of games abusing the API. But as long as you're able to behave exactly the same as the real runtime this can be fixed. Game developers interested in a 'hack' to run their DX10 game on XP just have to do some QA rounds again.
By the way, developers shouldn't rely on DX10 to be completely invariant on every platform supporting it. Some driver bugs can still go uncaught in the WHQL tests. And there are still things that cause undefined behaviour, which can create the expected effect on one machine but cause trouble on another. DX10 has a lot less of these potential dangers, but you can't rely on it blindly. QA on different systems remains necessary.
Yes.So you believe the new driver model and all the incompatibility it causes wasn't primarily Microsoft's decision, 3-5 years ago?
Of course they would have been significant in pushing it through, but in one of our chats with the DX team over in Seattle it was mentioned that the stakeholders were well aware of the problems it would cause but that it was a "lesser of two evils" decision - tidy up the API and take the hit we're discussing now, or have a D3D9+1 API that has all of the caps-induced horrors we've learnt to 'love'...
Stability is going to have been a big motivation, but I wouldn't discount performance like you do. The whole "batch, batch, batch" talk and the draw call overheads were having a serious impact on the capabilities of the applications - quite genuinely: performance was a big problem.I think Microsoft is interested in stability more than performance and this was their first motivation to change the driver model and clean up the API. Supporting DX10 on XP would be a step back in stability and this is why I think they won't support it, not performance.
Look back over archives in DirectXDev and you'll see a huge number of discussions solely around how to optimally design your D3D9 architecture to minimize state changes and get optimal batching etc..etc.. There isn't so much discussion of the new all singing all dancing shiny effects because that is, within reason, one of the easier parts of D3D9 programming
Back-porting WDDM and/or D3D10 to XP is technically possible - Microsoft has a huge number of extremely talented SDE's that would be capable of such a task.So unless anyone can convince me of the contrary I believe it's not a big technical issue to support DX10 on XP. It's just a hard decision they made to make the future of computer graphics brighter.
But ultimately it will have been a financial and resourcing decision - the cost involved in it (and not just developing it but maintaining it as well) and the amount of effort involved (time=money of course ) just didn't balance the books. Then factor in the stakeholders - Microsoft aren't the only ones that would take a hit by having such a big change to the landscape.
Consider that, even with MS's seemingly bottomless bank account, they invest the time and resources into doing what you (+others) seem to want (D3D10 on XP) and you'd probably find we'd get XPDM+0.5 and D3D9.5 instead of WDDM and D3D10. Things would have gotten dropped because you're no longer working with a clean slate, you've got a mountain more work to do in the same time frame with (probably) the same number of engineers...
I'd like to think of myself as a proper 'techie' - I like to solve the problems in the best way I know how. But ultimately we're in a business world where books have to be balanced, money has to be made and shareholders kept happy and this has a knock-on effect with what can and can't be achieved...
Risk vs Reward and Cost vs Benefit
Yes, I concur - hard but not impossible. I'm ready to be proven wrong - as I said earlier, I feel there's a good chance you, if anyone, mightYou already list a huge number of reasons that made it hard to make it happen but only hard not impossible.
Compared to the challenge to run console games on a PC getting D3D10 games running on Windows XP is easier.
Cheers,
Jack