Directx 9.0c (December 2005), what's new?

Mendel

Mr. Upgrade
Veteran
First of all, isn't this like third or fourth version of DirectX 9.0c?

I still think this version numbering, or lack thereof is kind of confusing to users, why not increment the version number?

What is new in this version, why is it required for 3dmark?
 
Mendel said:
First of all, isn't this like third or fourth version of DirectX 9.0c?

I still think this version numbering, or lack thereof is kind of confusing to users, why not increment the version number?

What is new in this version, why is it required for 3dmark?
At the end of 2004, the D3DX library was changed from a statically linked library to a dynamically linked library.

You can read about it on Avery Lee's, the creator of VirtualDub, homepage in this news article.

Basically, with each new edition of DX9.0c they install a new d3dx9_(n+1).dll where n is a positive integer and the last version of the file. The december 2005 update came with d3dx9_28.dll, thus the next update should be d3dx9_29.dll.

This is the reason many new demos and games must ship with DirectX because it may be an updated d3dx-file someone out there does not have and because the game requires just that version of the file.
 
Last edited by a moderator:
isn't this like third or fourth version of DirectX 9.0c?
There have been 11 versions of the SDK, but only ONE version of DirectX 9.0c ;)

DirectX 9 (November 2002?), Summer 2003 Update, Summer 2004 Update, October '04, December '04, Feb '05, Apr '05, June '05, Aug '05, Oct '05, Dec '05 and we're soon to get Feb '06.

The D3DX library only changes when they update the library. IIRC, '28' was the October '05 build. December didn't change anything thus it's still '28'. I'm not expecting any more changes in February, so I'd guess it'll still be '28'. The DirectX team are working flat out on Vista/D3D10 at the moment, so the DX9 side of things is starting to slow down now...

I still think this version numbering, or lack thereof is kind of confusing to users, why not increment the version number?
Because the runtime hasn't changed. If the runtime doesn't change then there should be no version number changes - it's that simple :smile:

Technically the D3DX components have had a version numbering change, BUT they are *optional* components - most D3D applications use D3DX, but it is perfectly possible to not use it.

The SDK update cycle/system is for us developers to deal with - the end user shouldn't need to know much about it.

This is the reason many new demos and games must ship with DirectX because it may be an updated d3dx-file someone out there does not have and because the game requires just that version of the file.
In all fairness, any person or company who distributed their application without the dependencies was taking a big risk. Assuming anything about the end-user is nothing short of a gamble.

There is the DX web installer (new with Dec '05) that should make the redistribution easier.

Hope that clears things up a bit!

Jack
 
JHoxley said:
In all fairness, any person or company who distributed their application without the dependencies was taking a big risk. Assuming anything about the end-user is nothing short of a gamble.

Yes, I agree but some mirror sites for downloading game demos used in the past to strip out the DirectX redist to save space and bandwidth. Now they can't do that, but some still may because they don't know why they can't.
 
Thanks Bludd, I'd wondered about the differences 'tween the versions of 9.0c but never enough to ask...your explanation helped a lot. :)
 
All said and done , my Empire At War Demo refused to work with it until I 'updated' to the August 2005 version lol. So i chose to have the demo install over only 'older' files and what do you know ............ both that and 3dMark 2006 work .
 
Does that mean the most updated d3dx9_?.dll will also work for games requiring previous versions? I just usually search for the particular dll and dump into windows/system folder. Not even registered. Seems to work fine, at least for the couple of games that needs it before they run.
 
CI said:
Does that mean the most updated d3dx9_?.dll will also work for games requiring previous versions? I just usually search for the particular dll and dump into windows/system folder. Not even registered. Seems to work fine, at least for the couple of games that needs it before they run.
No.
 
Yes, I agree but some mirror sites for downloading game demos used in the past to strip out the DirectX redist to save space and bandwidth. Now they can't do that, but some still may because they don't know why they can't.
Yeah, there is that. A lot of indies were up in arms about it for the Feb '05 / Apr '05 builds as it really messed up their distribution medium. Microsoft heard this and got on the case with the limited D3DX-only distribution (weighs in at about 1mb I think) mode and later the DX web setup. Mis-education is a terrible thing, but there isn't any excuse short of laziness these days...

geo said:
Why didn't MS push this with Windows Update?
From what the DirectX team told me, it's to do with the "scare factor" of having a new update distributed every 2 months. Especially in the corporate market where they tend to independently verify any new files from Windows Update before letting it distribute across their internal network.

It's an optional component used/included in only a small subset of software thus they can't justify having it distibuted in that way.

I just usually search for the particular dll and dump into windows/system folder. Not even registered.
Well I'll enjoy laughing at you when your computer implodes on you if a security vulnerability is ever detected with D3DX ;)

D3DX was moved to a dynamic and versioned package so that it could be serviceable/maintainable. I gather it was part of the general Microsoft push for better security and all that...

Thus, if you have any unregistered system DLL's it's highly likely that any Windows Update / whatever won't know about them thus can't/won't patch them. That big bad program running around trashing your system will be able to find it though.

hth
Jack
 
digitalwanderer said:
Thanks Bludd, I'd wondered about the differences 'tween the versions of 9.0c but never enough to ask...your explanation helped a lot. :)
My pleasure. :)
 
JHoxley said:
From what the DirectX team told me, it's to do with the "scare factor" of having a new update distributed every 2 months. Especially in the corporate market where they tend to independently verify any new files from Windows Update before letting it distribute across their internal network.

It's an optional component used/included in only a small subset of software thus they can't justify having it distibuted in that way.

I don't see the big deal. Don't they already have an optional section to Windows Update? Put it there.
 
JHoxley said:
Well I'll enjoy laughing at you when your computer implodes on you if a security vulnerability is ever detected with D3DX ;)

D3DX was moved to a dynamic and versioned package so that it could be serviceable/maintainable. I gather it was part of the general Microsoft push for better security and all that...

Thus, if you have any unregistered system DLL's it's highly likely that any Windows Update / whatever won't know about them thus can't/won't patch them. That big bad program running around trashing your system will be able to find it though.

hth
Jack

I'll just delete it off when the game's done. :)

What I don't quite understand is that for every new game that comes around, there'll be a need to install the DirectX redist that comes on the disc? And will it remove previous dll thereby creating problems for the previous game that needs it? Since they are not backwards compatible, that means I have to start collecting these dlls along with the patches for particular games if I wanna avoid the DX reinstall over and over again. Right?
 
CI said:
What I don't quite understand is that for every new game that comes around, there'll be a need to install the DirectX redist that comes on the disc?
Advice directly from the DX team is that the installer should ALWAYS be executed as part of the general installation process. It's designed to quickly and silently return if it doesn't have to change anything (i.e. you're already up to date).

CI said:
And will it remove previous dll thereby creating problems for the previous game that needs it?
It shouldn't remove previous DLL's. A well behaved setup program won't remove core files that are needed for other applications.

CI said:
Since they are not backwards compatible, that means I have to start collecting these dlls along with the patches for particular games if I wanna avoid the DX reinstall over and over again. Right?
As it currently stands you should have 5 D3DX DLL's if you're up to date. If you have all of those then the applications should be fine. If you're missing one then it'll get installed (provided the ISV is behaving themselves). Provided they are installed correctly, then they'll get updated if theres a change necessary (e.g. a security flaw is found) - but that shouldn't break them for the applications.

I don't see any reason why you'd need to archive all the patches and DX redists. You can always run the DX Web installer to make sure you're ready to play.

hth
Jack
 
JHoxley said:
As it currently stands you should have 5 D3DX DLL's if you're up to date. If you have all of those then the applications should be fine. If you're missing one then it'll get installed (provided the ISV is behaving themselves). Provided they are installed correctly, then they'll get updated if theres a change necessary (e.g. a security flaw is found) - but that shouldn't break them for the applications.

hth
Jack

To make it easier to examine your system we have build a small app that look for all the optional files from different SDKs.
 
JHoxley said:
Advice directly from the DX team is that the installer should ALWAYS be executed as part of the general installation process. It's designed to quickly and silently return if it doesn't have to change anything (i.e. you're already up to date).

Oh! I never knew that. I always thought it's an optional thing and skipped it to shave off some installation time when the prompt came up asking whether DirectX should be installed.

It shouldn't remove previous DLL's. A well behaved setup program won't remove core files that are needed for other applications.

That's reasurring to know! :)

As it currently stands you should have 5 D3DX DLL's if you're up to date. If you have all of those then the applications should be fine. If you're missing one then it'll get installed (provided the ISV is behaving themselves). Provided they are installed correctly, then they'll get updated if theres a change necessary (e.g. a security flaw is found) - but that shouldn't break them for the applications.

I don't see any reason why you'd need to archive all the patches and DX redists. You can always run the DX Web installer to make sure you're ready to play.

hth
Jack

Not all PCs had a network connection so I always tried to run like a standalone. Download and burn all the needy stuff (patches, utils, etc) into a DVD+RW to share amongst them. Guess I have to start getting use to change the way things are done now.
 
Btw, what are you supposed to do with all the SDK updates?
Install all of them in the same base directory, new directory for each iteration, or maybe delete everything old before installing the new one. (I know the latest option isn't a good one.)

And where can I get all the updates? Just getting the latest won't give you all examples.
 
Basic said:
Btw, what are you supposed to do with all the SDK updates?
You only need one of them. I only have the December '05 SDK installed on my machine. It's "undefined" what will happen when you have multiple SDK updates installed at the same time...

Basic said:
Install all of them in the same base directory, new directory for each iteration, or maybe delete everything old before installing the new one. (I know the latest option isn't a good one.)
I have most of the SDK's downloaded and archived. The .exe that you download is just a double-zipped archive, so you can get all the files out just by using your favourite zip-extraction tool. Thus if you get into the pattern of downloading the SDK every 2 months regardless of whether you're going to install it you should be able to get all the files.

Basic said:
And where can I get all the updates? Just getting the latest won't give you all examples.
Bare in mind that changes to D3DX and DXUT (etc..) will break backwards compatability. For each release of the SDK the DX team have to check for any regressions against older samples - if there are any problems they have to upgrade as appropriate. As you can imagine, that's a lot of work ;)

As mentioned in the previous point, you can access all the old samples via WinZip - just they might not work straight away...

hth
Jack
 
JHoxley said:
Because the runtime hasn't changed. If the runtime doesn't change then there should be no version number changes - it's that simple :smile:

Technically the D3DX components have had a version numbering change, BUT they are *optional* components - most D3D applications use D3DX, but it is perfectly possible to not use it.

Right. The runtime hasn't changed but technically they have. and there should be no version number changes... yet there have been some optional ones. right. cool. very well done... sigh...

If the runtime has not changed, why MUST it be updated in order for games to work? This is very confusing for end users and has NOT been communicated through to them at all.

If there are required updates to a software, it should change the version number. That is what version numbers are for.

to quote that virtualdub guy:
From what I gather, this is becoming quite a mess, because applications are forced to start the DirectX installer in their setup process, and lots of people are canceling it because they think they already have DirectX 9.0c installed, only to find that the application doesn't start because of a cryptic link error on the missing D3DX library.
 
Mendel said:
Right. The runtime hasn't changed but technically they have.
Well, technically they haven't - this is nonthing more than a technicality. Direct3D is part of DirectX, it is the runtime and it is the core component. D3DX exists seperate to both of those - and is essentially a layer on top of Direct3D. For example, the core Direct3D runtime has no knowledge of the effects framework, HLSL and has no functionality for loading textures/graphics from disk (e.g. from bmp/png/jpg). That functionality is part of D3DX - the Direct3D helper library.

Where this gets confusing is that (at a guess) 99.999% of Direct3D programmers will use D3DX. Thus you end up with this notion that they are in fact one "entity". I don't have any facts to back it up, but from what I've heard a lot of the more cross-platform (esp. those who cross the MS/Sony boundaries) aren't likely to make heavy use of D3DX for its portability issues. They can write their own "in house" tools that offer the same functionality, yet work for MS and Sony platforms.

Mendel said:
If the runtime has not changed, why MUST it be updated in order for games to work?
It MUST be updated because the developer made the decision to use the optional component. It's basic software deployment to make sure that you install the components that your application depends on. Think of it as a set of prerequisites.

Mendel said:
This is very confusing for end users and has NOT been communicated through to them at all.
It's not communicated to them and shouldn't be. The end user should not even need to know this is happening.

Mendel said:
If there are required updates to a software, it should change the version number. That is what version numbers are for.
Agreed. Thats why we already have a number of D3DX DLL's - 24,25,26,27,28 - they are the version numbers for the D3DX component. "9.0c" is the version number for Direct3D (etc..).

From what I gather, this is becoming quite a mess, because applications are forced to start the DirectX installer in their setup process, and lots of people are canceling it because they think they already have DirectX 9.0c installed, only to find that the application doesn't start because of a cryptic link error on the missing D3DX library.
This is down to developers who haven't been paying enough attention for a number of years ;)

This one is dated recently, but it's pretty similar to a lot of the meltdown/PDC material I've seen over the years: Simplifying Game Installation:
Always install DirectX, and do it silently

It is strongly recommended that the game silently installs the DirectX redist that the game was built against. The DirectX install process is designed so that it will verify if anything needs to be updated and quickly return if it doesn't so there is no need to ask the user if they want DirectX installed.

Asking the user if they want DirectX installed can cause a lot of problems if the user assumes they have the latest DirectX redist installed and skips it, and the installer continues successfully. If the game requires specific version of D3DX or other updated functionality that was accidentally skipped, then the game won't work and the user will get very frustrated.

If for some reason, you must ask the user if they want to install DirectX at least abort and rollback the entire install process if they choose not to install DirectX. This will avoid any errors caused because the user doesn't have the latest DirectX redist installed when the game launches.

I've lost track of how many times I've seen the "good deployment" practices for Windows slides - they appear at every Meltdown and PDC event :smile: I've also seen a number of industry articles criticiscing the way that most developers will knock out an installer at the very end of development - and it's rarely given much attention despite it's the VERY FIRST THING your customer is going to see!!

Jack
 
Back
Top