Sign in to follow this  
flobadob

Windows 7 & Directx9 ?

Recommended Posts

Am I going to have to update my dx9 code (again) to some later version of DX to get it working with Windows 7? Does anyone know what dx version will ship with windows 7 and what backward compatability it will have?

Share this post


Link to post
Share on other sites
it will ship with directx 10 or 10.1, which is backwards compatible with directx 9 so no worries.
even the latest SDK includes also the directx 9 development files apart from the directx 10 ones.

Share this post


Link to post
Share on other sites
Quote:
Original post by a2ps
it will ship with directx 10 or 10.1, which is backwards compatible with directx 9 so no worries.
even the latest SDK includes also the directx 9 development files apart from the directx 10 ones.

Thanks. Otherwise I was thinking about switching to Ogre3D.

Share this post


Link to post
Share on other sites
You might want to upgrade to D3D11, check the latest SDK, you'll see that it covers hardware range from D3D9 (different levels) to D3D11.
A single good API for all hardware and OS, that's rather nice.
[well only Vista & 7 ^^;]

(Look up D3D_FEATURE_LEVEL in the doc.)

Share this post


Link to post
Share on other sites
Quote:
Original post by Ingenu
A single good API for all hardware and OS, that's rather nice.
[well only Vista & 7 ^^;]

Exactly - no XP which means that DX 11 is rather useless. Why do M$ do this? I have to use dx9 because 99.9% of customers use it. In hindsight I should have gone with Ogre3D or OpenGL. Never mind.

Share this post


Link to post
Share on other sites
Quote:
Original post by flobadob
Quote:
Original post by Ingenu
A single good API for all hardware and OS, that's rather nice.
[well only Vista & 7 ^^;]

Exactly - no XP which means that DX 11 is rather useless. Why do M$ do this? I have to use dx9 because 99.9% of customers use it. In hindsight I should have gone with Ogre3D or OpenGL. Never mind.
For the same reason that D3D11 isn't available on Windows 98. The driver model is completely different for D3D10 and D3D11, and it's not worth spending millions of dollars to include a new driver model in XP - which wasn't designed for it at all, so would have all sorts of driver problems. Not to mention the time and effort required for NVidia, ATI/AMD and Intel to produce D3D10 drivers for XP.

XP is a last generation platform; you can continue to use it if you like, but it'll be unsupported a few years before Vista will.

Share this post


Link to post
Share on other sites
Well I think M$ should include an old driver model in windows 7 if that's what it takes. Them spending a few million dollars is much better than every company on the planet spending collectively much much more updating dx code every two dx versions. If M$ continue doing this they will drive people away. OpenGL doesn't have problems with 'driver models' (whatever they are) and Ogre3D is a wrapper around whatever you like so no problems there either.

Share this post


Link to post
Share on other sites
Quote:

Well I think M$ should include an old driver model in windows 7 if that's what it takes. Them spending a few million dollars is much better than every company on the planet spending collectively much much more updating dx code every two dx versions.

The shift from 9 to 10 is a big one. From 10 to 11, less so. From 8 to 9, less so. Big shifts in APIs are a foregone conclusion that software developers are aware of. The practical software developers will weight the pros and cons and chose an appropriate path. In my experience, the upshot of this is that most studios will elect to remain on a 9 codebase since the attach rate for 10 and the extra features it provides are not worth the switch to a 10-only codebase and that the effort of maintaining both isn't practical. This is a transitory phase in the DX API, it is not the way that life has always been or will always be. Get over it.

Quote:

If M$ continue doing this they will drive people away.

This is unlikely; it's not as big a deal as you want to make it -- you seem to have a chip on your shoulder about Microsoft for some reason, but that doesn't constitute a logical argument. Hell, look at OpenGL. The 3.0 specification was supposed to engender some fundamental changes in the API -- similar in scope to the 9 -> 10 transition in D3D10. And when those changes didn't happen, there was an uproar. This is exactly the opposite of what you are suggesting would be the case.

Quote:

OpenGL doesn't have problems with 'driver models' (whatever they are)

No, but it has an equivalent class of versioning and feature compatibility issues in its use of extensions. They cause the same kinds of issues for developers, it's just that OpenGL's choice of solution to the problem of distinct feature sets does not involve the ARB modifying the OpenGL specification. Just because the number doesn't change doesn't mean a damned thing.

Quote:

Ogre3D is a wrapper around whatever you like so no problems there either.

Just because it wraps OpenGL and D3D doesn't make the problems go away. It just means you have to cope with them in a different form, or suffer the wrapper's choice of least-common-denominator. It may make things easier, certainly, but it doesn't make problems vanish.

Share this post


Link to post
Share on other sites
Quote:
Original post by flobadob
Well I think M$ should include an old driver model in windows 7 if that's what it takes. Them spending a few million dollars is much better than every company on the planet spending collectively much much more updating dx code every two dx versions. If M$ continue doing this they will drive people away. OpenGL doesn't have problems with 'driver models' (whatever they are) and Ogre3D is a wrapper around whatever you like so no problems there either.
As far as I know, D3D9 still works on Windows 7. D3D is supposed to be backwards compatible, eliminating D3D9 support would cause a huge number of applications to fail to work and would cause a massive support headache for Microsoft.

OpenGL gets around it because it has an utterly ridiculous mess of extensions. It's effectively D3D1, and everything above that you need to query for support for.

The driver model is the way that the OS interacts with the driver. The Vista driver model allows the GPU to be a shared resource rather than a one-application-at-a-time job. I don't know how OpenGL gets around things.

Ogre3D used D3D9 or OpenGL the last time I checked, I wouldn't be surprised if there's also D3D10 and D3D11 support in or coming soon too. You could use any of the other hundred graphics APIs that wrap D3D/OpenGL too.

Share this post


Link to post
Share on other sites
*sigh*

Due diligence on your chosen technology is par of the course for any professional developer. Have a look into all those available, realise that Steve and Josh highlight that other API's also have other problems and weigh up all of these factors and pick whichever suits your criteria. It's how everyone else does it - be it a database vendor, a programming language, or a file format.

Maybe, just maybe, Microsoft and/or Direct3D are not the right choice for you. Unless you whine and rant about it in public no one's going to give you a hard time for choosing a more suitable platform for your product!


As of current the 10.1 API is by far the best choice for support and will very quickly get superceded by 11.0; the only caveat here is if you must still support XP.

From memory I think the DWM in Win7 is written in D3D 10.1 and uses 10-level-9's 9_1 (basically D3D9+SM2) feature set.


hth
Jack

Share this post


Link to post
Share on other sites
Quote:
Original post by flobadob
...and Ogre3D is a wrapper around whatever you like so no problems there either.


Because Ogre3D is the pinnacle of software engineering. I mean, hell why doesn't Microsoft just ditch DirectX and use Ogre3D and OpenGL!

Share this post


Link to post
Share on other sites
Well this thread has gotten a bit silly. It's turned into a slagging match. I made a comment about my annoyance at being forced to rewrite perfectly good code just to keep up with frequent OS / DX changes and now I'm accused of being a Microsoft hater, unpractical, unprofessional, whining and ranting. It's really a bit of overkill. There have been some intelligent replies and I thank you for them (Evil Steve, a2ps).

Share this post


Link to post
Share on other sites
Quote:
Original post by flobadob
Well this thread has gotten a bit silly. It's turned into a slagging match. I made a comment about my annoyance at being forced to rewrite perfectly good code just to keep up with frequent OS / DX changes and now I'm accused of being a Microsoft hater, unpractical, unprofessional, whining and ranting. It's really a bit of overkill. There have been some intelligent replies and I thank you for them (Evil Steve, a2ps).
The Microsoft hater comments are probably because of your use of "M$" [smile]

The point is that you don't have to rewrite anything - it should all be backwards compatible. If you want to take advantage of new features (E.g. Geometry shaders), then you'll have to upgrade; but that's expected really.

Share this post


Link to post
Share on other sites
Oops - I didn't realise that M$ was offensive. I recently upgraded a heap of dx7 3d code to work with dx9 interfaces just so that our software would work with vista. It sounds like the dx9 code will still work with windows 7 (since it ships with dx10.1). Hopefully when dx11 comes out the dx9 compatability on windows 7 will remain. Otherwise I will have to write a dx11 interface also.

Share this post


Link to post
Share on other sites
I thought Windows 7 was going to ship with DirectX 11?
Anyway just my 2 cents: if you move to a version higher than DirectX 9, directly go for 11, 10 would be a waste of time.
You might want to wait a bit longer to use it though if you want an effect system, since it's not in the SDK yet :)

Share this post


Link to post
Share on other sites
Quote:
Original post by flobadob
Oops - I didn't realise that M$ was offensive. I recently upgraded a heap of dx7 3d code to work with dx9 interfaces just so that our software would work with vista. It sounds like the dx9 code will still work with windows 7 (since it ships with dx10.1). Hopefully when dx11 comes out the dx9 compatability on windows 7 will remain. Otherwise I will have to write a dx11 interface also.
DX7 code should work fine too - DX is backwards compatible. All calls to DX7 functions get routed through to the DX9 driver, so IHVs just need a D3D9 and D3D10 driver path (Not sure how D3D11 comes in here though).

Share this post


Link to post
Share on other sites
Quote:
DX7 code should work fine too - DX is backwards compatible. All calls to DX7 functions get routed through to the DX9 driver, so IHVs just need a D3D9 and D3D10 driver path (Not sure how D3D11 comes in here though).

I thought compatibility was dropped every 2 versions? Do you think a dx7 exe will work in a system with dx9 installed? Our dx7 application used d3drm.dll and retained mode was dropped completely. We can actually get our old dx7 code to work on vista but that requires copying over d3drm.dll which breaks licensing (you have to install the whole of dx, you can't just install the libs you really need). I know vista has a dx9 capability (which is why I recently upgraded the code to dx9) but not sure about windows 7. Hopefully it's ok. Maybe what you say about backward compatibility it true but hopefully retained mode is the only exception.

Share this post


Link to post
Share on other sites
Quote:
Original post by flobadob
I thought compatibility was dropped every 2 versions? Do you think a dx7 exe will work in a system with dx9 installed? Our dx7 application used d3drm.dll and retained mode was dropped completely. We can actually get our old dx7 code to work on vista but that requires copying over d3drm.dll which breaks licensing (you have to install the whole of dx, you can't just install the libs you really need). I know vista has a dx9 capability (which is why I recently upgraded the code to dx9) but not sure about windows 7. Hopefully it's ok. Maybe what you say about backward compatibility it true but hopefully retained mode is the only exception.
Ah, I'm not sure about retained mode. Although, you should be installing the DX runtimes as part of your installer anyway - in which case d3drm.dll will be installed as well surely? If you don't install the DX runtimes as part of your installer, your app won't work on a lot of PCs.

Share this post


Link to post
Share on other sites
Quote:
Ah, I'm not sure about retained mode. Although, you should be installing the DX runtimes as part of your installer anyway - in which case d3drm.dll will be installed as well surely? If you don't install the DX runtimes as part of your installer, your app won't work on a lot of PCs.

We do include dx runtime with our app but you can't install dx 7 (or 8) runtimes on vista.

Share this post


Link to post
Share on other sites
Yeah I think DX10 will likely be skipped by many developers. Currently there isn't much reason to support DX10 since:

(a) still less than 25% of the average gamer PC can run DX10 (vista + DX GPU)

http://store.steampowered.com/hwsurvey/

(b) the Xbox 360 doesn't support it

(c) we have yet to see any huge image or framerate improvements over the DX9. In fact, many early benchmarks showed the same games ran at lower FPS in DX10 than DX9, but that was likely early driver issues.

Personally I'm going straight from XP to Windows 7. Early benchmarks show Win7 is good for gaming even in beta. Whatever version of DX the next Xbox supports will likely be the one that hangs around for years like DX9.

Share this post


Link to post
Share on other sites
d) DirectX 11 supports DX9 and DX10 hardware :p

Also regarding image/performance improvement, the main issue is that generally when there is both a DX9 and DX10 path, the DX10 path has more complex shaders, which isn't always obvious when looking at the game, but in the end it means it won't be faster either.

However as drivers evolve (DX10 is still recent, and see how much a driver update can still do with DX9 games) there'll be much more space for improvements with DX10 (and even more with 11) than DX9, mostly because of the design itself...

Share this post


Link to post
Share on other sites
Here is the way I see things: To MS, having DX10 and DX11 work with XP can only hurt Vista sales since, to the average user/gamer, that's about the only thing Vista has to offer over XP, beside the ridiculous useless bloat of course. So they're not going to do it, and whether the "driver model" business is real or just a bullshitical excuse becomes irrelevant. Following similar reasoning, I don't think backwards compatibility with DX9 will not be dropped any time soon. OpenGL is, as mentioned above, a complete mess, becuase it's in the hands of a bunch of people who are seemingly either not interested anymore or are simply inadequate.

What should happen is Nvidia should just make an API for their drivers that developers can use to directly access graphics, physx, and CUDA stuff! These guys are real fanatics... who better to trust the future of PC gaming with? This would have a lot of various effects, including geometry shaders on XP... yay! But until then, I think sticking with DX9 is the way to go.

Share this post


Link to post
Share on other sites
Nobody seems to have mentioned one of the main reasons D3D9 won't get killed off anytime soon. The Aeroglass desktop is D3D9Ex based. Upgrading Aeroglass to a newer API is surely going to be easier than the initial change to a 3D system. But, I don't think Microsoft is eager to rewrite the desktop any sooner than needed.

I don't think Microsoft is eager to force a huge percentage of their existing customers to purchase new hardware, again, just to upgrade their next OS. Especially the ones who just got a new machine or D3D9 card to run Vista, which wasn't that long ago. Those cards can still render the desktop just fine.

Killing D3D9 support anytime soon just wouldn't be a good move. It will be there for quite a while.

Share this post


Link to post
Share on other sites
Actually, rumor has it that Aero in 7 is based on 10.1 with 10level9 for backwards compatibility.

That doesn't change the fact that DirectX9 support isn't going anywhere. Other than the hundreds of products using it, XNA Game Studio is DX9 only, and I doubt there are plans to cut XNAGS support.

[EDIT] and while we're on the topic, even DX3 games run fine on Vista (and probably 7 too), so saying there's no support for DX7 in Vista seems incorrect.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this