Risky Business: Microsoft's Direct3D Backwards-Compatibility Discard
I've just returned from two WinHEC morning sessions on DirectX, armed with even more concerns for potential Vista O/S upgraders (and the hardware and software developers targeting them). Windows Vista will ship with the next edition of the Direct3D API, DirectX v10, whose details you can discern at Microsoft's consumer- and developer-targeted web portals. DirectX 10 will deliver impressive feature and performance improvements (I'm particularly excited about its enhanced support for GPU-accelerated still and video image processing, along with the more robust DirectX VA v2 video acceleration API), but it'll be a Vista-only play; versions of DirectX v10 for Windows XP and other prior-generation operating systems won't be offered.
It gets worse (or better, depending on your perspective). Applications written for the Direct3D v10 API must run on DirectX 10-supportive hardware; as this foil makes abundantly clear, there'll be no API support for DX9- or prior-generation graphics chips and cards. So if you're a developer contemplating a DirectX 10-compliant app, you're staring at a potential customer market that's restricted first by the Vista-only requirement, and then by the DX10 graphics-only requirement. Note, please, that DX10-compliant GPUs currently don't exist. Those 200 million "Vista-ready" PCs users? They'll all need to buy new graphics cards (an upgrade option that's unavailable to most notebook PC owners) in order to run DX10-targeted apps. Or chuck their existing systems and buy new hardware….which I strongly suspect is Microsoft and its hardware partners' underlying aspiration. More deception, it seems from where I'm sitting, in the "Ready for Vista" collateral.
When I pointed out this issue during the post-presentation Q&A, Microsoft's Sam Glassenberg, Lead Program Manager of the Graphics Platforms Unit, pointed out that by using the XNA Framework Toolset, it was possible to develop (in a to-be-determined straightforward manner) parallel versions of an application targeting the v9 and v10 versions of DirectX. I suppose that, to minimize consumer confusion, if I was a developer I would label one 'for Windows XP' and the other 'for Windows Vista'. But that differentiation wouldn't paint the full picture. The 'for Windows Vista' version would also need to include the 'requires DX10 graphics' qualifier. And how consumer-friendly is that?
I admit to feeling a bit wishy-washy as I type these words. On the one hand, as a dual-platform (Mac OS and Windows) computer user, I'm intimately familiar with Apple and Microsoft's historically very different approaches to O/S and application backwards-compatibility, and the significantly greater challenge that Microsoft's more lenient backwards-compatibility approach (in combination with a drastically longer list of potentially supported hardware and software) incurs. This impact of this challenge is exemplified, for example, by the ever-slipping Vista release schedule. Many pundits, myself among them, have in response called on Microsoft to more aggressively cull old hardware and software from its newer releases' support lists. But when they do, I complain. I guess the root of my concern in this case isn't so much with the Vista-only rollout of DX10, it's with the DX10 hardware-only stance.
What do you think….both in this specific situation and more generally, are Microsoft's actions appropriate? And how do you handle backwards-compatibility in your hardware and software development scenarios?
garmoshka commented:















