PDA

View Full Version : DirectX 10 = DirectX 9 for Vista


Nick
09-May-2007, 12:45
Hi all,

I wonder to what degree we can consider DirctX 10 to be functionally equivalent to DirectX 9. I know it has a totally new interface and adds Shader Model 4.0 and a totally new driver model. But from an end-user point of view, are there any 'effects' that DirectX 10 games will be able to produce which DirectX 9 practically can't?

In other words, did Microsoft decide not to release DirectX 10 for XP primarily to help Vista sales, or is there just little point in having an equivalent API without the new driver model?

Thanks for your opinions,

Nicolas

Andrew Lauritzen
09-May-2007, 14:50
There are certainly a number of new features and many performance enhancements that make it possible/reasonable to implement more complicated effects.

Of course you'll always get the people who say "you can do everything that you can do in D3D10 in D3D9" and while that's technically true (since you can always multi-pass, read back and execute on the CPU, etc. etc.), it's not a useful observation.

Off the top of my head, the geometry shader and stream out will certainly enable more effects (cascades gives a good example). Texture arrays are also quite useful, as is accessing the pre-resolved MSAA buffer. The resource/views/render targets design also avoids a lot of useless data movements that had to be done in D3D10 just because textures and buffers were too inflexible. The reduction in pass overhead also allows more complicated algorithms to be implemented.

Furthermore the D3D10 specifications have forced the hardware to become a lot more orthogonal which, while it is somewhat exposed in D3D9, allows a whole range of possibilities.

So I think the answer to the thread title is "no, Direct3D 10 has a lot more than Direct3D 9" but again it will take people a while to realize the possibilities. In the mean time we still have fast, much more flexible hardware even in Direct3D 9.

Plus it's just a lot easier and more fun to write in Direct3D 10 than 9... 9 was a bit of mess although not as much as OpenGL 2.0 IMHO.

Anarchist4000
09-May-2007, 18:18
DX10 is all about improved efficiency and the WDDM goes a long way towards aiding it in that goal. That being said I don't think the Vista driver model should be a requirement for DX10. Why DX10 is available only for Vista and not 2k/XP does seem more like marketing or a lack of wanting to recode the API for a different driver model.

Demirug
09-May-2007, 19:45
Direct3D 10 is about doing more with less calls and move work from the CPU to the GPU.

As Andy TX already have written with Direct3D 10 PC games programming get a little bit more in the direction of console game programming. You still need to scale for different performance but not for different features sets. But it will take some time until we finally reach the point when we can drop Direct3D 9.
Therefore I expect that the first wave of Direct3D 10 enabled games will use this API mostly for performance improvements and maybe one or two new eyecandy effects.

Just to add two examples. For the first group the possibility to render to all six faces of a cube at the same time could be interesting. Direct rendering to volume texture slices could produce new effects.

But I would not call it “DirectX9 for Vista” as a great number of new Vista systems are still sold without Direct3D 10 hardware. It may reach this state some time after D3D10 hardware would become a requirement for the “Designed for Vista” logo program.

DX10 is all about improved efficiency and the WDDM goes a long way towards aiding it in that goal. That being said I don't think the Vista driver model should be a requirement for DX10. Why DX10 is available only for Vista and not 2k/XP does seem more like marketing or a lack of wanting to recode the API for a different driver model.

From the technical point of View Microsoft is able to write the necessary stuff to get Direct3D 10 running on Windows XP. But this would not be cheap and I am sure not that many people are willing to pay for it. Additional nvidia and AMD need to provide a second set of Direct3D 10 drivers in such a scenario. At least nvidia still have trouble with only one.

JHoxley
10-May-2007, 11:14
I'd summarise D3D10's value to end users is that in allowing developers greater and easier expression we'll get a LOT more of the 'eye candy'.

Sure, as AndyTX commented, you can probably achieve 90% of D3D10 effects via D3D9/XP but end-users don't realise just how damned hard this can be. Not only is stringing all of the features together into some sane architecture hard, scaling this over both features (e.g. FF-SM1-SM2-SM3 hardware) and performance (your 7300LE to your 7950's) is a horrific challenge.

The consequence of this is that in any commercial environment (read: games rather than tech demo's) you have to consider the cost (time/effort) of implementing all the features for as many or all of the target audience. I'm sure it comes as no surprise that a lot of things get cut as a consequence :wink:

So with D3D10, if these things are easier to implement across a more fixed console-like platform then a huge number of the aforementioned problems get thrown away.

Demirug mentioned the render-to-cube-map enhancements. This makes it easier for developers and, within reason, why can't we have lots MORE cubemaps now? If its less hassle to implement and more efficient to execute then I'll put a cube map on less important aspects of the scene whereas in D3D9 I'd of prioritised them to only those parts that absolutely required them.

So, bottom line, if its quicker easier and cheaper to use 'more of the same' then thats no bad thing. Just because its not a new shiny buzzword that you haven't heard of before doesn't mean it's not important :smile:

Jack

Nick
10-May-2007, 12:29
Thanks all for the information and opinions!

I understand that the uniform features of DirectX 10 hardware opens a lot of possibilities, but wouldn't most games for the next 2-3 years also support DirectX 9? This means they need an engine which abstracts all rendering operations for both API's, which automatically minimises the use of DX10-only features. They also can't really justify doing things that are fast on any DX10 card but unacceptably slow even on a high-end DX9 card.

Considering that, offering DX10 'support' for XP would have only slowed the process of switching to the 'real' DX10, right?

I'm actually asking all this because I regularly visit other forums where Microsoft is bashed for not offering DX10 for XP. I think Microsoft is doing the right thing, but I'm looking for a one-liner to explain this to the masses. ;) The title of this thread is an attempt but not a very good one...

JHoxley
10-May-2007, 15:49
wouldn't most games for the next 2-3 years also support DirectX 9? This means they need an engine which abstracts all rendering operations for both API's, which automatically minimises the use of DX10-only features. They also can't really justify doing things that are fast on any DX10 card but unacceptably slow even on a high-end DX9 card.Yes, this is all potentially true. Only time will tell whether developers/publishers follow the "clean cut" approach and go to 10, or if they try to invent some sort of grey-area hybrid approach. I'd imagine most will try the latter, but I doubt it'll carry on past the first year and/or first generation of engines/games...

Considering that, offering DX10 'support' for XP would have only slowed the process of switching to the 'real' DX10, right?I really don't think it would have helped anything. So many low-level details have changed you'd either have to accept getting an XP+1 OS (e.g. XP-SP3 with all new Kernel and all new drivers) or a D3D10 -1 API (e.g. 10 syntax mapped to 9 hardware). As painful as it is, a clean cut was necessary - take a look at OpenGL, they desperately need one and have been talking about it more and more lately (I'm not familiar with the finer details)...

I'm actually asking all this because I regularly visit other forums where Microsoft is bashed for not offering DX10 for XP.Plenty of us have been trying to hammer this point, but what can I say - there is no shortage of stupid people around? :lol: The internet is terrible at giving anyone and everyone a soap box to shout from - and its a lot easier to slam "M$" for some underhand marketing tactic to get people onto Vista than it is to understand the technical details about driver models and software development :roll:

Try this for size: DirectX 10 for Windows XP? Repeat after me: No. No. No. (http://letskilldave.com/archive/2006/10/17/DirectX-10-for-Windows-XP_3F00_--Repeat-after-me_3A00_-No.-No.-No_2E00_.aspx).

hth
Jack

Nick
10-May-2007, 16:43
Yes, this is all potentially true. Only time will tell whether developers/publishers follow the "clean cut" approach and go to 10, or if they try to invent some sort of grey-area hybrid approach. I'd imagine most will try the latter, but I doubt it'll carry on past the first year and/or first generation of engines/games...
Considering that developing a cutting-edge game takes ~3 years (Far Cry: March 2004, Crysis: summer 2007), I believe it's going to stretch a little further than one year. Besides, there are just too many people with a good DirectX 9 card (think of laptops too) who would be pissed off. According to the Valve Survey (http://www.steampowered.com/status/survey.html) 35% of people still run DirectX 8 or lower...
So many low-level details have changed you'd either have to accept getting an XP+1 OS (e.g. XP-SP3 with all new Kernel and all new drivers) or a D3D10 -1 API (e.g. 10 syntax mapped to 9 hardware).
Why would the XP+1 option require an all new kernel? As far as I know DirectX 10 can be implemented perfectly with the old driver model, just not with the highest performance. Anyway, that wouldn't be much of a solution of course. Just like upgrading your CPU sometimes requires a new motherboard as well, DirectX 10 requires a new O.S.
Try this for size: [b]DirectX 10 for Windows XP? Repeat after me: No. No. No. (http://letskilldave.com/archive/2006/10/17/DirectX-10-for-Windows-XP_3F00_--Repeat-after-me_3A00_-No.-No.-No_2E00_.aspx)
It's strongest argument is that Direct 10 cannot run on XP, but with the recent 'hack' that's just no longer true... That's why a lot of people feel Microsoft has been lying, to force gamers to upgrade to Vista.

Demirug
10-May-2007, 16:45
I understand that the uniform features of DirectX 10 hardware opens a lot of possibilities, but wouldn't most games for the next 2-3 years also support DirectX 9?

Yes, there would properly even a number of games that only use D3D 9.

This means they need an engine which abstracts all rendering operations for both API's, which automatically minimises the use of DX10-only features.

I had hoped that Microsoft offers such an abstraction as part of D3DX.

They also can't really justify doing things that are fast on any DX10 card but unacceptably slow even on a high-end DX9 card.

There were always “details” sliders and multiple paths in PC games. We had games that use SM2 as basis and offers addition effects when run on SM3 hardware.

Considering that, offering DX10 'support' for XP would have only slowed the process of switching to the 'real' DX10, right?

Depends on what you call „real“ DX10. There are some “soft” features like the lower overhead that is hard to get on Windows XP. SM 4 itself would be less a problem.

I'm actually asking all this because I regularly visit other forums where Microsoft is bashed for not offering DX10 for XP. I think Microsoft is doing the right thing, but I'm looking for a one-liner to explain this to the masses. ;) The title of this thread is an attempt but not a very good one...

I think there is no one line explain because the decision have it pros and cons.

Demirug
10-May-2007, 16:50
Why would the XP+1 option require an all new kernel? As far as I know DirectX 10 can be implemented perfectly with the old driver model, just not with the highest performance. Anyway, that wouldn't be much of a solution of course. Just like upgrading your CPU sometimes requires a new motherboard as well, DirectX 10 requires a new O.S.

I am already had prepare something about this possible solution. But it is not published yet.

It's strongest argument is that Direct 10 cannot run on XP, but with the recent 'hack' that's just no longer true... That's why a lot of people feel Microsoft has been lying, to force gamers to upgrade to Vista.

If you talk about the "Alky Project"? The pre preview sucks. It proves nothing at all.

Nick
10-May-2007, 23:23
There were always “details” sliders and multiple paths in PC games. We had games that use SM2 as basis and offers addition effects when run on SM3 hardware.
I know, but my point was that nobody with an expensive high-end DirectX 9 card will accept a game that uses a DirectX 10 feature that causes it to faster on a cheap mid-end DirectX 10 card. It's just another reason for game developers not to switch to DirectX 10 too soon.
I think there is no one line explain because the decision have it pros and cons.
Good point.

I wonder whether Microsoft 'should' have delayed DirectX 10 itself: provide IHVs with all the details, let them market the unified cards as DirectX 9.1 or something like that, and only release DirectX 10 a year later when the drivers and games are ready and Vista is more common.

Nick
10-May-2007, 23:30
I am already had prepare something about this possible solution. But it is not published yet.
Do you mean running the DX10 driver in XP by providing some emulation layers? That would be awesome!
If you talk about the "Alky Project"? The pre preview sucks. It proves nothing at all.
I know, but it made people rethink "DirectX 10 cannot run on XP". The project has some potential, although it takes quite a detour. Anyway, I work for TransGaming, so I know how far emulation can go...

Davros
11-May-2007, 00:15
Furthermore the D3D10 specifications have forced the hardware to become a lot more orthogonal which, while it is somewhat exposed in D3D9, allows a whole range of possibilities.



nicked from wikipedia ;)
"An instruction set is said to be orthogonal if any instruction can use any register in any addressing mode. This terminology results from considering an instruction as a vector whose components are the instruction fields. One field identifies the registers to be operated upon, and another specifies the addressing mode. An orthogonal instruction set uniquely encodes all combinations of registers and addressing modes."

is this what you mean ?

Andrew Lauritzen
11-May-2007, 01:24
is this what you mean ?
Not that specific... when I say that features are "orthogonal", I mean that your choice of when and how to use one doesn't affect the other.

In D3D9 this was certainly not the case. For example if you choose to use 32-bit floating point textures, you lose multi-sampling, blending and filtering (among other things). Another example is the few texture formats that worked with vertex texture fetch.

In D3D10 this still exists to an extent, but it is much less pronounced. Generally one can use any feature with any other feature where it makes sense. This makes programming a whole lot easier and more flexible.

PSU-failure
11-May-2007, 03:35
Do you mean running the DX10 driver in XP by providing some emulation layers? That would be awesome!

I know, but it made people rethink "DirectX 10 cannot run on XP". The project has some potential, although it takes quite a detour. Anyway, I work for TransGaming, so I know how far emulation can go...
Don't think emulation, simply think D3D10 is a software layer on top of the hardware/driver combo, just like any HAL...

Now, Micro$oft added a requirement specifically to this one: hardware must be capable of all what the API can request whereas D3D9 and older ones only needed the driver to allow it. We could say D3D10 no longer has an HAL role.

For example, if AMD wanted to port D3D10 on XP or even UNIX, all they would have to do is an interpreter, and since everything is quite well documented, there's no need for reverse engeneering.

Demirug
11-May-2007, 06:58
Do you mean running the DX10 driver in XP by providing some emulation layers? That would be awesome!

No I was talking about an article that I have written about this. Using driver from a different OS is a very hard task and I haven’t had the time to solve all the problems.

Don't think emulation, simply think D3D10 is a software layer on top of the hardware/driver combo, just like any HAL...

Now, Micro$oft added a requirement specifically to this one: hardware must be capable of all what the API can request whereas D3D9 and older ones only needed the driver to allow it. We could say D3D10 no longer has an HAL role.

For example, if AMD wanted to port D3D10 on XP or even UNIX, all they would have to do is an interpreter, and since everything is quite well documented, there's no need for reverse engeneering.

There are some legal problems with this. Additional the official documentation is incomplete. AMD/ATI has the full set but I am not sure if they allowed using it for anything else then driver development.

Nick
11-May-2007, 07:09
Don't think emulation, simply think D3D10 is a software layer on top of the hardware/driver combo, just like any HAL...
If you mean this in the same sense that "Wine Is Not an Emulator" then I completely understand. ;)
We could say D3D10 no longer has an HAL role.
Apart for the removal of device caps I can't see how this makes D3D10 significantly different to D3D9 when it comes to HAL. Or is the D3D9 runtime more complex than I imagine?

JHoxley
11-May-2007, 16:02
Before I get started, how about consider this analogy:

Imagine the whole set up like a house. Your OS and driver model are your foundations - start messing with those and you destabilise the entire building. It might not fall down, but you probably don't want to live in it regardless of the fact it looks fine from the outside. Likewise, you can't just pick the walls, doors, windows and roof and plonk them on top of the foundations in place on the other side of the city...

So many low-level details have changed you'd either have to accept getting an XP+1 OS (e.g. XP-SP3 with all new Kernel and all new drivers) or a D3D10 -1 API (e.g. 10 syntax mapped to 9 hardware).

Why would the XP+1 option require an all new kernel? As far as I know DirectX 10 can be implemented perfectly with the old driver model, just not with the highest performance. Anyway, that wouldn't be much of a solution of course. Just like upgrading your CPU sometimes requires a new motherboard as well, DirectX 10 requires a new O.S.You're over simplifying the relationship between the core driver stack and the API. You are aware that API just stands for Application Programming Interface, right? Sure its not just some pass-through layer, but in itself it is just a standard way for us programmers to target a variety of hardware that adheres to a given standard.

Few people have access to the D3D10/WDDM functional specifications, but there are a lot of bits in it that are dependent on certain hardware requirements as well as software characteristics.

It's strongest argument is that Direct 10 cannot run on XP, but with the recent 'hack' that's just no longer true... That's why a lot of people feel Microsoft has been lying, to force gamers to upgrade to Vista.I know Demirug sees some potential (and given how smart he is, I'm just waiting to be proven wrong :lol:) but I don't think these "hacks" or emulators or whatever will EVER do more than get tech-demos running. To go for a sound-bite: You won't play D3D10/Vista games on XP even if they do 'hack' the D3D10 API to run on XP.

So you make a wrapper than re-maps D3D10 calls to some OpenGL equivalent that runs on a G80 driver for XP. Same hardware but effectively just bypassing the WDDM and using GL+XPDM instead.

That assumes that OpenGL is capable of mapping all the features in exactly the same way (may sound simple, but look closely enough and you'll see that the two API's have differed over the years on how they expose hardware details).

The D3D10 API, and the application writers targetting it, are working to a fixed platform and there is relatively few ways for the API to report meaningful hardware capability/functionality problems. There is less enumeration code as the App developer can safely assume things Just Work. The up-shot is that you rip out a Vista game to run on XP and your GL+XPDM behaves slightly differently you're going to be in a world of hurt - image quality issues being the nicer of the options here.

That's also assuming that any programmer targetting Vista+D3D10 writes perfect code. Any developer knows that, try as we might, this just doesn't happen for any sufficiently large codebase. If I accidentally write something that abuses the API slightly, but somewhere deep-down it's getting massaged and handled correctly then I'll think my code is fine and it'll pass the official QA tests. Now combine that again with the possibility of marginally different behaviour of a GL+XPDM route and you go crashing down in flames again.

Then there's a rather minor point that most builds targetting just Windows Vista will probably using a Vista SDK and may well utilize new API features that don't exist under XP. That's nothing to do with D3D10, but it may well mean that you get a whole bunch of other issues with a Vista game not working on the XP OS.

So, bottom line, you might get the SDK samples and a few tech demos running via these emulators, but I don't think you'll get any more than that.

I wonder whether Microsoft 'should' have delayed DirectX 10 itself: provide IHVs with all the details, let them market the unified cards as DirectX 9.1 or something like that, and only release DirectX 10 a year later when the drivers and games are ready and Vista is more common.I don't think this would have worked at all if you think it through.

Nvidia/ATI have had access to the specs for YEARS - think about it, Vista was in development in some form or another for ~5 years (XP was out in 2001, and we know they turn-around quickly as there was a blog post saying that (some of) the MS engineers are already working on Vienna) and this wasn't some big surprise to them. The Direct3D Architecture Board has all the IHV's and a few key ISV's involved, so D3D10 isn't just what MS decided - it's born of all the key stakeholders inputs.

There was nothing stopping them releasing unified hardware a year or two years ago. My interpretation is that they chose not to because of market factors rather than technical ones (although the two are obviously going to be related). Why release it earlier than they have to? Why not wait till the software is ready as it gives us (the IHV's) a few extra months to better the competition?

The exact same argument applies if they released Vista without D3D10. They wouldn't have any technical requirement to release the new generation until the software was there as a lot of the functionality would go unused - where's the sense in pushing hard to get the HW to market when there is no SW? Chicken and egg anyone? :wink:

Part of the big problem is the drivers and the driver model - D3D10 is effectively a client of WDDM, so what you're proposing makes no sense here either. You've looked at it backwards.

Now, Micro$oft added a requirement specifically to this one: hardware must be capable of all what the API can request whereas D3D9 and older ones only needed the driver to allow it.You do realise how this works with the DDI's, right? I forget the details, but the reason why previous D3D's would allow such a wide range of capabilities and hardware was that deep down it supported several DDI's - the D3D9 *API* would allow DDI7-9 drivers (although might even have gone to DDI6) whereas the D3D10 *API* only allows DDI10 drivers. You still had hardware requirements (Admittedly, not quite so strict) to be a DDI9 driver so MS putting restrictions in isn't such a new thing...

Nick
11-May-2007, 20:46
Imagine the whole set up like a house. Your OS and driver model are your foundations - start messing with those and you destabilise the entire building. It might not fall down, but you probably don't want to live in it regardless of the fact it looks fine from the outside. Likewise, you can't just pick the walls, doors, windows and roof and plonk them on top of the foundations in place on the other side of the city...
Very good analogy, thanks!
You're over simplifying the relationship between the core driver stack and the API. You are aware that API just stands for Application Programming Interface, right?
I've implemented DirectX 9 in software (http://www.transgaming.com/index.php?module=ContentExpress&file=index&func=display&ceid=8), so yeah I know what an API is. ;)
Sure its not just some pass-through layer, but in itself it is just a standard way for us programmers to target a variety of hardware that adheres to a given standard.
Sure, but what does this have to do with the driver model? 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.
Few people have access to the D3D10/WDDM functional specifications, but there are a lot of bits in it that are dependent on certain hardware requirements as well as software characteristics.
Could you give an example of that, even hypothetical if you have to?
...but I don't think these "hacks" or emulators or whatever will EVER do more than get tech-demos running. To go for a sound-bite: You won't play D3D10/Vista games on XP even if they do 'hack' the D3D10 API to run on XP.
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.
The up-shot is that you rip out a Vista game to run on XP and your GL+XPDM behaves slightly differently you're going to be in a world of hurt - image quality issues being the nicer of the options here.
If you have to choose between that or not running the game at all... Of course, such games should provide DX9 support in the first place, but then you also enter the gray zone of caps enumeration and such again.
If I accidentally write something that abuses the API slightly, but somewhere deep-down it's getting massaged and handled correctly then I'll think my code is fine and it'll pass the official QA tests. Now combine that again with the possibility of marginally different behaviour of a GL+XPDM route and you go crashing down in flames again.
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.
Then there's a rather minor point that most builds targetting just Windows Vista will probably using a Vista SDK and may well utilize new API features that don't exist under XP. That's nothing to do with D3D10, but it may well mean that you get a whole bunch of other issues with a Vista game not working on the XP OS.
True. That's another reason why the XP DX10 'hack' shouldn't be regarded a drop-in solution. But for individual games that perform the necessary tests I see it as a potential solution.

Say a company has realized too late that DX10 and Vista aren't as wide-spread as they expected when a project was started, or customers are creating a significant negative reputation because it doesn't run on XP. Then they have the choise of going through the trouble of implementing a DX9 engine, or they can resort to an on-the-shelf solution. The latter might require some extra testing, but it could be the cheaper option and just as reliable.
Nvidia/ATI have had access to the specs for YEARS...
I've done an internship in the NVIDIA DX driver team in 2004, so I know how far back these things originate. :)
The Direct3D Architecture Board has all the IHV's and a few key ISV's involved, so D3D10 isn't just what MS decided - it's born of all the key stakeholders inputs.
So you believe the new driver model and all the incompatibility it causes wasn't primarily Microsoft's decision, 3-5 years ago? 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.
They wouldn't have any technical requirement to release the new generation until the software was there as a lot of the functionality would go unused - where's the sense in pushing hard to get the HW to market when there is no SW? Chicken and egg anyone? :wink:
What I meant is to release the necessary documentation and software, but only for IHV's and ISV's, not the public. So they both can prepare well but end-users don't get cranky. There's another risk though: People might decide to buy a DirectX 9 card but later regret it when DirectX 9.1 cards turn out to support DirectX 10 for Vista as well.
Part of the big problem is the drivers and the driver model - D3D10 is effectively a client of WDDM, so what you're proposing makes no sense here either. You've looked at it backwards.
I don't see any big issue here to provide a layer that does the translation, both backward and forward.
You do realise how this works with the DDI's, right? I forget the details, but the reason why previous D3D's would allow such a wide range of capabilities and hardware was that deep down it supported several DDI's - the D3D9 *API* would allow DDI7-9 drivers (although might even have gone to DDI6) whereas the D3D10 *API* only allows DDI10 drivers.
As far as I know every version just kept adding commands. It's not like they're totally separate. Anyway, obviously DX10 support for XP can only be implemented with DX10 hardware.

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.

Demirug
12-May-2007, 10:43
I know Demirug sees some potential (and given how smart he is, I'm just waiting to be proven wrong :lol:) but I don't think these "hacks" or emulators or whatever will EVER do more than get tech-demos running. To go for a sound-bite: You won't play D3D10/Vista games on XP even if they do 'hack' the D3D10 API to run on XP.

Well people run D3D9 games with OpenGL wrappers on Linux. The same would be true some day for Direct3D 10 and Windows XP. But as with Windows games on Linux everyone who say that everything will work out of the box is very optimistic. You 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.

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.

Depends on what you call a big issue. Every line of code that you add to a “dead” project is wasted. And the WDK for Windows XP is dead.

JHoxley
12-May-2007, 13:25
I've implemented DirectX 9 in software, so yeah I know what an API is. :wink:heh, sorry! So you worked on SwiftShader then? Nice bit of work that :cool:

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.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.

Could you give an example of that, even hypothetical if you have to?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.

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.Okay, here's one way I see it:

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'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.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:

So you believe the new driver model and all the incompatibility it causes wasn't primarily Microsoft's decision, 3-5 years ago?Yes.

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'...

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.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.

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:!:

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.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.

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 :roll:) 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

You 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. 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, might :cool:


Cheers,
Jack

Nick
12-May-2007, 18:51
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.
Sorry, I'm not really following with that. The improvements to the API would also be improvements in XP, as long as you have DX10 hardware. You wouldn't get all of the efficiency benefits but I don't know of any API feature that can't be implemented without WDDM. The application is completely shielded from any driver details, so why wouldn't the API be implementable with the XPDM? Unless I'm missing something...
...but the interactions between resources - e.g. the "GPU as a shared resource"...
You need that for Vista Aero, but not on XP as far as I know. I mean, this isn't exposed in the API, is it?
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.
Definitely. It's just this transition period I'm talking about.
If so, I'd be surprised if developers of those titles would even use D3D10...
They won't, given the current situation, but I believe they would if it was supported on XP. It's just a nicer API. I realize that doesn't take away the fact that a DX10 card is needed though.
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".
Sooner or later there will be DX10 only applications, and people wanting to run them on XP. And a fraction of these could run efficiently enough on XP with a DX10 card. Anyway, that shouldn't be regarded as the norm of course. I just believe it's technically possible.
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:
It's not that bad, assuming of course there's really a DX10 card. It also depends on what software layers you have control over. If you're Microsoft, I really doubt it's hard to support the DX10 API on XP, as long as you can convince the IHVs to write a driver for it.
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.
Does DX10 really make "batch, batch, batch" less necessary?
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...
Isn't this mainly fixed by using state objects, which is an API-level feature instead of a driver model feature? Or is it really not possible to support them with the XPDM?
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.
That's my point, but I don't think back-porting all of WDDM is necessary. Really just a DDI10 extension should do it I believe. But a certain performance impact is unavoidable then...

Honestly I don't know all the low-level details, I'm just combining all the bits and peices of information I currently have. Again though, I'm not saying they should have taken this road. As you say it requires considerable investments and all it does is keep a small fraction of XP users happy.

Anyway, I don't really concern myself with it that much. :D I was primarily looking for simple arguments why people shouldn't blame Microsoft. The house+foundations analogy is excellent.

armchair_architect
13-May-2007, 01:45
You need that for Vista Aero, but not on XP as far as I know. I mean, this isn't exposed in the API, is it?

You can create a shared resource by setting D3D10_RESOURCE_MISC_SHARED in the MiscFlags member of the D3D10_TEXTURE2D_DESC struct you pass to ID3D10Device::CreateTexture2D().

You can open a shared resource created on a different device using ID3D10Device::OpenSharedResource().

Nick
13-May-2007, 03:47
You can create a shared resource by setting D3D10_RESOURCE_MISC_SHARED in the MiscFlags member of the D3D10_TEXTURE2D_DESC struct you pass to ID3D10Device::CreateTexture2D().

You can open a shared resource created on a different device using ID3D10Device::OpenSharedResource().
Thanks for pointing that out!

Not that it matters much, but couldn't this be implemented with AGP memory mapping? Performance might be low, but this isn't a feature that I expect to be used a lot.

JHoxley
13-May-2007, 12:43
The improvements to the API would also be improvements in XP, as long as you have DX10 hardware.Well a lot of the VRAM-MMU is implemented at the WDDM level rather than the hardware/driver level. Look up the WinHEC '06 slides - ISTR it's not until WDDM2.x (or maybe even 3.0) that the hardware (and by implication drivers) take substantial control of this functionality.

Sure, it's not a completely black-and-white case but my point is that some the WDDM does actually implement things that the hardware/driver doesn't.

...but the interactions between resources - e.g. the "GPU as a shared resource"... You need that for Vista Aero, but not on XP as far as I know. I mean, this isn't exposed in the API, is it?I see your point - a lot of it isn't explicitly exposed to the API (except Demirugs' example of inter-device resource sharing which CANNOT be done under existing D3D9c and is a routinely asked for feature) but the resource model is generally a lot more flexible under D3D10 than it is in D3D9 (temporarily ignoring anything outside of the API that us developers see).

That is, the characteristics of the new WDDM have allowed a more flexible resource model and implicitly shaped the API sitting on top of it. From what I know of XPDM you'd need some almost unholy hacks to implement it on XP - you'd probably need to write a whole new resource manager layer to get equivalent functionality.

I believe they would if it was supported on XP. It's just a nicer API. I realize that doesn't take away the fact that a DX10 card is needed though.I wish, as a developer, I could use the technology that I enjoy using but sadly that isn't the case. If the architect says we must support SM2 level hardware then we have to use the API that corresponds to this requirement. I don't really buy the idea that developers would use D3D10 if it were cross-OS unless you also loosened up the hardware requirements (which you're saying they wouldn't need to do).

As a side-track... in my day job I almost had to start doing Symbian/C++ mobile applications because of Nokia's huge market-share of handsets. Customers and architects wanted to use this hardware so we had no choice but to use the horrific software surrounding Symbian. Thankfully for me I got out of this one and my team have stuck with Windows Mobile which is really nice for us developers :grin:

Does DX10 really make "batch, batch, batch" less necessary?Yes, but its due to WDDM rather than the API.

The single-batch overhead which caused so much pain under D3D9 was all due to the architecture of XPDM and the way it caused lots of kernel/context switching. WDDM pretty much eliminates this (I understand this is due to the KM and UM driver partitioning). I'm not aware of anything in the API, drivers or hardware that is involved here - this would be a case where WDDM stomps all over XPDM :cool:

Isn't this mainly fixed by using state objects, which is an API-level feature instead of a driver model feature? Or is it really not possible to support them with the XPDM?I'd prefer Demirug to comment here as he's more familiar with the DDK side of things.

The D3D9 API has a very high granularity with making changes to the pipeline configuration. This is reflected via XPDM in that it communicates between the Application<->Driver through an equally granular interface. I understand that the drivers will compile 'state objects' for upload to the actual hardware and that the D3D9 API has state blocks to help with the API<->Application layer, but there is still this weak link in the middle that you can't get past.

This feeds back into the whole idea that you want to cross the App<->API<->XPDM<->driver<->GPU boundary as few times as possible, yet the granularity means you have little choice.

Really just a DDI10 extension should do it I believe. But a certain performance impact is unavoidable then...I'm sceptical in that this performance impact might well negate any features you manage to map back. If, at some point, you still have the old driver stack under you then you'll pick up some of these performance problems inherant in D3D9.

OpenGL under XP doesn't seem to suffer the same problems, so maybe a remapping layer as previously mentioned might well work... but I'm putting my money against it still - but I'm happy to be proven wrong :wink:

As you say it requires considerable investments and all it does is keep a small fraction of XP users happy.Maybe it's a little worse this time around, but for the most part there's always been a few months or a year of grumpy people who're happy with what they've got and will do anything they can to resist upgrading... yet sooner or later they probably will... then the next OS comes along and we repeat the exact same cycle :lol:

I was primarily looking for simple arguments why people shouldn't blame MicrosoftI think the main bit the "common gamer" has wrong is that they assume its evil M$ throwing their monopoly around and trying to stomp on the little guy just because they can. Or something like that. If they took the time to understand the business reasons and how the technological problems feed back into business justification they'd realise it's just a genuine tough decision (back to my 'lesser of two evils' comment) and chances are no one was going to be completely happy...

Cheers,
Jack

Reverend
16-May-2007, 05:11
I'm actually asking all this because I regularly visit other forums where Microsoft is bashed for not offering DX10 for XP. I think Microsoft is doing the right thing, but I'm looking for a one-liner to explain this to the masses. ;) The title of this thread is an attempt but not a very good one...
http://www.gameinformer.com/News/Story/200701/N07.0109.1737.15034.htm

Relevant bit :
It’s a tough thing for Microsoft, where, essentially, Windows XP was a just fine operating system. Before that, there were horrible problems with Windows. But once they got there, it did everything an operating system is supposed to do. Nothing is going to help a new game by going to a new operating system. There were some clear wins going from Windows 95 to Windows XP for games, but there really aren’t any for Vista. They’re artificially doing that by tying DX10 so close it, which is really nothing about the OS. It’s a hardware-interface spec. It’s an artificial thing that they’re doing there. They’re really grasping at straws for reasons to upgrade the operating system. I suspect I could run XP for a great many more years without having a problem with it.
No, not exactly a one-liner but maybe this is relevant?

Nick
16-May-2007, 10:40
No, not exactly a one-liner but maybe this is relevant?
It's certainly interesting to hear such opinion from one of the most respected game developers.

Lately I've also noticed that in reviews where they compare DX9 and DX10 images, there's a huge difference between the two. Not just improved shaders, but totally new textures as well (for no apparent reason). This gives a lot of people the idea that DX10 is way more revolutionary than it is...

Superpig
16-May-2007, 13:50
Performance might be low, but this isn't a feature that I expect to be used a lot.Maybe, but already it's an instance of the XPD3D10 failing to match the behaviour of VistaD3D10 (in performance terms at least). You may feel that it's not used often but all D3D10 applications that make use of the feature may be now unusable because of this performance drop.

I'm fairly sure there are other features that would run into similar problems, so how many D3D10 applications would have to fail to work correctly before you'd consider it to be an unsuitable/insufficient implementation?

JHoxley
16-May-2007, 14:06
No, not exactly a one-liner but maybe this is relevant?It's certainly interesting to hear such opinion from one of the most respected game developers.Agreed - that's an interesting comment from John Carmack. Can't say it'll change my stance on the issue though :razz:

Jack

Frank
16-May-2007, 17:22
I agree with John Carmac. There is no technical reason why it couldn't be done, or why it would be very hard.

The "driver" actually consists of multiple, separate parts: the hardware interface, the compiler and runtime (like a mini-OS for the GPU), and the interface with the Windows API (creating windows, reading and writing data, reading keypresses and mouse movement, playing sound and all that).

If you have the source code, it should be pretty easy to hook it up to the different API, use the old driver model for the hardware interface and recompile.

Reverend
17-May-2007, 05:59
Lately I've also noticed that in reviews where they compare DX9 and DX10 images, there's a huge difference between the two. Not just improved shaders, but totally new textures as well (for no apparent reason). This gives a lot of people the idea that DX10 is way more revolutionary than it is...
Do you have the links for these reviews?

armchair_architect
17-May-2007, 08:13
There is no technical reason why it couldn't be done, or why it would be very hard.

While I agree it can be done, I think you're underestimating how hard it is. They didn't just change the interfaces slightly, they fundamentally changed which components of the OS/driver are responsible for which parts of the system. An architecture where the driver is all one piece and responsible for the entire system (API->HW translation, memory management, scheduling, etc.) is very different from an architecture where the driver is in multiple pieces with limited/expensive communication between them and the OS handles all memory management and scheduling. These aren't the sorts of differences you can hide behind abstractions at the edges of the driver .. they have significant ripple effects throughout the entire design.

So think of it this way: both MS and the IHVs have finite resources. D3D10 has many very pervasive changes, I think it's the biggest change in D3D since they got rid of retained mode. Would you rather they were less ambitious and just delivered an incremental "9.1" on both XP and Vista? Or that they had delayed it by X months beyond the Vista launch? I'm sure some people would pick one of those two options, but I'm just trying to point out that an XP version is not free, so you have to consider what you'd be willing to give up in order to have it.

Nick
17-May-2007, 09:32
Do you have the links for these reviews?
I was most shocked by the difference in appearance for the mountains at the bottom of this page: http://vr-zone.com/?i=4946&s=3. Here are some more shots with huge differences: http://www.istartedsomething.com/20060817/directx10-fabulous/. Notice the red banner that say these images are faked. Well, that's great, but tons of people actually believe is this "freaking dooping fabulous". It questions who made these images, and why...

Reverend
21-May-2007, 05:44
I was most shocked by the difference in appearance for the mountains at the bottom of this page: http://vr-zone.com/?i=4946&s=3.
The second-to-last image (the one you're talking about, I think) is just crazy, it could be just down to an artistic change -- I find it hard to believe you can't have the exact same looking DX10 scene using DX9 with the same performance and with probably the same amount of coding/texturing effort and time.

Unless there's something quite obvious not revealed (which is very possible based on the page you linked), maybe the ATi guys can tell us here.

Silent_Buddha
30-May-2007, 07:24
I was most shocked by the difference in appearance for the mountains at the bottom of this page: http://vr-zone.com/?i=4946&s=3. Here are some more shots with huge differences: http://www.istartedsomething.com/20060817/directx10-fabulous/. Notice the red banner that say these images are faked. Well, that's great, but tons of people actually believe is this "freaking dooping fabulous". It questions who made these images, and why...

I wouldn't be surprised if that fish at the bottom was using the hardware Tesselator in the R600. However, since that isn't a part of DX10 (yet), that would qualify as "fake" in as far as it's not what DX10 can do now. Either that or they are using some other feature in DX10 to do it.

Regarding the CoJ screenies.

In general, I'd imagine it just goes along with the new WDDM driver model + DX10 makes it more efficient, thus you can do more with the same frame rate budget. It's to to both of them and how they interact with each other.

Sure you could do this in DX9, however you'll also take a rather massive frame rate hit I'd imagine.

Considering the already formidable delays and how much trouble Nvidia had making a working Vista Driver for their DX10 hardware...I think it was more of Microsoft having to decide between delaying Vista for another year to get DX10 (as it exists now) working on XP or shipping Vista and cutting XP out.

And just imagine the horror show if Nvidia ALSO had to make a working DX10 driver for XP. It took them 6 months to get a stable fairly well behaved driver for Vista and that's with a driver model that DX10 was designed to work with.

I can only imagine how much more difficult it would have been to make a driver for XP DX10 with a DX10 hacked to work on XP.

Regards,
SB

AlexV
30-May-2007, 07:47
The second-to-last image (the one you're talking about, I think) is just crazy, it could be just down to an artistic change -- I find it hard to believe you can't have the exact same looking DX10 scene using DX9 with the same performance and with probably the same amount of coding/texturing effort and time.

Unless there's something quite obvious not revealed (which is very possible based on the page you linked), maybe the ATi guys can tell us here.

I think that the approach to DX10 for first wave, patched-up titles will be different from what would normally happen:devs are forced to put something on-screen that makes the users go OMG OMG OMG TEH SAUCE, DX10 ZA KILLAH-they have to pile stuff on to make it significantly different from the DX9 version. As such, I`d doubt that the performance benefits due to increased efficiency that comes with DX10 will be apparent in their case. Most likely, performance will take a nose-dive. Second-tier, ground-up DX10 targeted titles will probably be a different story though, IMHO.

Geo
01-Jun-2007, 17:30
I'm actually asking all this because I regularly visit other forums where Microsoft is bashed for not offering DX10 for XP. I think Microsoft is doing the right thing, but I'm looking for a one-liner to explain this to the masses. ;) The title of this thread is an attempt but not a very good one...

We actually have a guest article on this subject in the works. . . don't we, Demirug? :smile:

AlStrong
01-Jun-2007, 18:35
We actually have a guest article on this subject in the works. . . don't we, Demirug? :smile:

A one line article? :D


:p

Geo
01-Jun-2007, 19:45
No, but it will be a one-line URL to point others at. :grin:

JHoxley
01-Jun-2007, 20:23
Go Ralf :grin: Looking forward to it already...

I think that the approach to DX10 for first wave, patched-up titles will be different from what would normally happen:devs are forced to put something on-screen that makes the users go OMG OMG OMG TEH SAUCE, DX10 ZA KILLAH-they have to pile stuff on to make it significantly different from the DX9 version. As such, I`d doubt that the performance benefits due to increased efficiency that comes with DX10 will be apparent in their case. Most likely, performance will take a nose-dive. Second-tier, ground-up DX10 targeted titles will probably be a different story though, IMHO.I agree with your statement in general, but I don't think "forced" is quite right. I think a lot of dev's will be more "OMFG look what I can do" and then just use it to show off, rather than actually being poked by a sharp stick from management...

Even if we removed the API and OS, if you suddenly had a way of saying "nothing less than a G80 or R600 plays here" then you could do some amazing things as they are just criminally powerful toys :wink:

Jack

Arun
01-Jun-2007, 22:29
Even if we removed the API and OS, if you suddenly had a way of saying "nothing less than a G80 or R600 plays here" then you could do some amazing things as they are just criminally powerful toys :wink:If you aimed at 720p/30FPS on a 8800GTS, with no support for any lower-end GPU, I'm very confident you could do some ridiculously amazing things indeed. Console GPUs are pretty much toys compared to that...

Now, if someone actually did that. Hmm! ;)

Entropy
01-Jun-2007, 22:43
Since I just checked out Steam survey data, starting from the 30th of May this year (brand spanking new data!), I'll just pop in with some market numbers.

Steam users that run Vista is still less than 5%.
Steam users that run a DX10 capable system = 1.08%

http://www.steampowered.com/status/survey.html

BRiT
02-Jun-2007, 00:31
Hmmmm. Time to load up Steam and add to the Vista + 64bit + DX10 crowd.

Skrying
02-Jun-2007, 00:42
The Steam results make me cry, 24% have less than 512MB of RAM!

Davros
02-Jun-2007, 01:47
Well thats the real world
I repair a fair few pc's for people and i very rarely see a pc with more than 512mb
and even more rarely with a decent gfx card

Entropy
02-Jun-2007, 08:33
Hmmmm. Time to load up Steam and add to the Vista + 64bit + DX10 crowd.

That's the weakness of even such a large sample as the Steam survey.
How many Website reviewers and magazine reviewers are there all over the world? How many who are in QA at various companies? How many are in the industry and shop up just to keep themselves up to date, just as I read up on the latest happenings in my field?

Just how many of those 2500 people are NOT connected to the industry in one way or the other?

When we are talking about these very small populations (similar for SLI, not to mention Crossfire!), the people who end up on the survey for work related reasons likely skew the data significantly.

chenmengji
06-Jun-2007, 07:57
Comparing with DirectX9,DirectX10's disvantage is far greater than its advantage
relying on this point that DirectX10 is only for Vista.There is no problem for developing better visual effect based on DirectX9 than DirectX10.But there are not many cases around there.
http://www.ogre3d.org/phpBB2/viewtopic.php?t=21587&highlight=
http://forum.beyond3d.com/showthread.php?t=40805

Demirug
06-Jun-2007, 10:21
IMHO the question should not “Can D3D10 render better visual effects?”. We properly all know that beside of some corner case (were DX9 API hacks could help) D3D9 is able to produce all this “D3D10 effects” they show us. This may require some help from the CPU (Geometry shader as example). The real question is more like “Does D3D10 allows us to get the same visual effect with less overhead?”

Most developers are already able to produce much better visual effects but at the cost of lower FPS. When D3D10 can do the same at higher FPS it does anything we currently need most.

Albuquerque
06-Jun-2007, 22:17
Comparing with DirectX9,DirectX10's disvantage is far greater than its advantage
relying on this point that DirectX10 is only for Vista.There is no problem for developing better visual effect based on DirectX9 than DirectX10.But there are not many cases around there.
http://www.ogre3d.org/phpBB2/viewtopic.php?t=21587&highlight=
http://forum.beyond3d.com/showthread.php?t=40805

I'm not sure what you're trying to suggest; that first link has nothing to do with DX9 or DX10, the second link is about how the improved functionality and performance within DX10 is making a very realistic shadowing method possible on today's hardware.

If you're trying to say that the first link is somehow showing the same features as the second link, then you're mistaken.

Next, I still don't see how D3D10 is at a "disadvantage" at all. Compared to D3D9, D3D10 has nothing but advantages. If you want to say that being tied to Vista is a disadvantage, it's my opinion that you're wrong: the new OS is a requirement for the performance increases available in D3D10.

If you spent the time reading the feedback right here in this thread from people who are actually developers and not just forum junkies with non-graphics-related jobs, you'd find that nearly all of them agree that the performance set couldn't happen in XP.

The features can certainly be "back ported", but D3D10's main claim to fame is far-improved performance for tasks that previously were too compute-intensive. That performance is obtained through the new driver and kernel model, and is something that realistlcally couldn't be expected of XP.

chenmengji
07-Jun-2007, 10:45
I don't think opinions here will help to corret wrong thing.It's easier said than done!
"developing better visual effect based on DirectX9 than DirectX10."Do you know what does it mean?It means that all general ways you can think about are not enough,also needs extra thoughts which make use of unique solutions and algorithms etc(unconcerned with DirectX9 and DirectX10) that can be applied by DirectX9 and DirectX10 to produce much better visual effect without lower FPS.

For example,Real-Time animating Fluid Simulation
1
http://img204.imageshack.us/img204/3599/devr2007060611595443fv4.th.jpg (http://img204.imageshack.us/my.php?image=devr2007060611595443fv4.jpg)

http://img204.imageshack.us/img204/3599/devr2007060611595443fv4.jpg

2
http://img528.imageshack.us/img528/5067/devr2007060611595703nx0.jpg

3
http://img389.imageshack.us/img389/1095/devr2007060612014804ke0.jpg

4
http://img79.imageshack.us/img79/7549/devr2007060612014954ur2.jpg

P.S This idea came into my head on september 2005.I brought it up at website on July 2006.
http://www.devmaster.net/forums/showthread.php?t=6507

5 gow_head_pop.gif
http://img91.imageshack.us/img91/8600/gowheadpopkw9.th.gif (http://img91.imageshack.us/my.php?image=gowheadpopkw9.gif)

http://img91.imageshack.us/img91/8600/gowheadpopkw9.gif
It released similar effect on september 2006.

I have researched many solutions and refined algorithms and they can produce similar effect as Vray on realtime 3d based on DirectX9.More important thing is that they can continually improve to Maxwell level.In my own case,DirectX9 is only option for being less expense and better effect after considering large amout of customers' benefit!

Andrew Lauritzen
07-Jun-2007, 19:01
Alright this discussion is getting silly... of course you can implement everything in DX9 that you can in DX10 with no restrictions... I can implement everything on my Pentium 200MHz with no video card; it'll be pretty slow though.

There is no argument here: DX10 is simply more powerful and more efficient than DX9. It has a superset of the functionality - which allows better and more efficient implementations of algorithms - and less overhead. i.e. everything that can be done in DX9 can be done equally or better in DX10.


I have researched many solutions and refined algorithms and they can produce similar effect as Vray on realtime 3d based on DirectX9.More important thing is that they can continually improve to Maxwell level.In my own case,DirectX9 is only option for being less expense and better effect after considering large amout of customers' benefit!
Okay no one is arguing that we suddenly don't need new graphics algorithms - far from it! What DX10 does is further expand the scope of algorithms that can be expressed efficiently and executed on graphics hardware. A more apt comparison would be the DX9 version of the shadows demo that I posted earlier and the DX10 one that you linked: you may notice that the latter runs faster and provides many more features than the former.

Anyways I'm gonna stop talking. DX10 is better than DX9, period. Everything will eventually switch over to DX10 once people have suitable hardware, because there's no reason not to.

Frank
07-Jun-2007, 21:20
What would the chances be of devs implementing DX10 features and have an alternate OpenGL renderer that does the same for DX10 hardware on DX9 OSes?

Demirug
07-Jun-2007, 21:36
Well ATI doesn’t include the necessary extensions at the moment and maybe they never would. Therefore developers would not be very willing to invest time on such a port. The situation may change with Mount Evans but we are far away from this.

Even without knowing the exact details of Mount Evans I believe a DX10 core renderer can port in around 1 – 2 month to this new OpenGL API. But there is a much bigger problem. All the shaders written in HLSL need to be converted too.

Frank
07-Jun-2007, 21:59
But there is a much bigger problem. All the shaders written in HLSL need to be converted too.
I think that could be automated. You might not get the best bits that way, but it's much better than having to rewrite them by hand. Debug and profile.

Geo
12-Jun-2007, 15:50
Since I mentioned this upstream:

http://forum.beyond3d.com/showthread.php?p=1018694#post1018694