Jump to content
  • Advertisement
Sign in to follow this  
laiyierjiangsu

DX11 Why does Dridver Of Dx9 and Dx11 Have Different Behavior ?

Recommended Posts

Hi , guys!

I have two different projects (A &&B) , they all target windows platform ,

 A is using DX9, target winxp and later; and B is using DX11, target win7 and later.   

As to A , it's using dx9 ,and it loads nvldumd.dll.

clipboard1.thumb.png.249944e3705681f49d78bd43a2f43386.png

And to B , it's using DX11 , it loads nvwgf2umx.dll.

clipboard2.thumb.png.18210fee61a16f75098b29365224e7ad.png

We have a dump collection system to collect all exception happened of the games . We found a lot of nvwgf2umx.dll crash on B , but no nvldumd.dll on A . This results confused me .

My questions are :

1、 Why are A and B loading  different user mode video card dirvers ?  I guess this may be is a mechanism of WDDM .  WDDM has a different mechanism for DX9 and Dx11,  That's

a bit complex for me .

2 、As to B , nvwgf2umx.dll  may be caused by some bugs in dirvers. I can find some similar feedback on nvidia forums.  But why there isn't any crash of nvldumd.dll on A with DX9 ,

this doesn't make sense ?

I hope some one could give me some hints , so I can move forward.

 

Share this post


Link to post
Share on other sites
Advertisement
24 minutes ago, laiyierjiangsu said:

We found a lot of nvwgf2umx.dll crash on B 

The simple explanation is that your own D3D11 code is incorrect (e.g. passing invalid pointers into the API) which is causing the driver to crash.

Share this post


Link to post
Share on other sites
2 minutes ago, Hodgman said:

The simple explanation is that your own D3D11 code is incorrect (e.g. passing invalid pointers into the API) which is causing the driver to crash.

Thank you , Hodgman.  It's a reasonable explanation. But why there isn' any crash of DX9 On A ? It doesn't make sense.

Share this post


Link to post
Share on other sites

Likely because it's a very different API with different calls.  The code in A is not the same as the code in B, which means there is likely a bug in your code for B that is causing the driver to crash due to something unexpected being done.

Share this post


Link to post
Share on other sites
On 3/14/2019 at 11:34 PM, xycsoscyx said:

Likely because it's a very different API with different calls.  The code in A is not the same as the code in B, which means there is likely a bug in your code for B that is causing the driver to crash due to something unexpected being done.

Thanks.  A use dx9 and B use dx11,  does nvidia need offer different usermode driver of these two dx version? This really confused me .

Share this post


Link to post
Share on other sites
5 hours ago, laiyierjiangsu said:

Thanks.  A use dx9 and B use dx11,  does nvidia need offer different usermode driver of these two dx version? This really confused me .

Short answer: yes.

Longer answer: technically no, they could use the same DLL for D3D9 and D3D11 UMDs, but the models between 9 and 11 are so significantly different that they've decided not to. See https://docs.microsoft.com/en-us/windows-hardware/drivers/display/user-mode-display-driversThe user-mode display driver can consist of one DLL that supports both Direct3D version 9 DDI and Direct3D version 10 DDI or it can consist of two separate DLLs, one for version 9 and the other for version 10 of Direct3D DDI. Replace version 10 with version 11 of course, since we're talking about D3D11 here. 10 and 11 are very similar, and 12 is more similar to 11 than it is different, so NVIDIA uses the same DLL for 10 through 12, but a different one for 9.

Share this post


Link to post
Share on other sites
23 hours ago, SoldierOfLight said:

Short answer: yes.

Longer answer: technically no, they could use the same DLL for D3D9 and D3D11 UMDs, but the models between 9 and 11 are so significantly different that they've decided not to. See https://docs.microsoft.com/en-us/windows-hardware/drivers/display/user-mode-display-driversThe user-mode display driver can consist of one DLL that supports both Direct3D version 9 DDI and Direct3D version 10 DDI or it can consist of two separate DLLs, one for version 9 and the other for version 10 of Direct3D DDI. Replace version 10 with version 11 of course, since we're talking about D3D11 here. 10 and 11 are very similar, and 12 is more similar to 11 than it is different, so NVIDIA uses the same DLL for 10 through 12, but a different one for 9.

Wow, it's great . It's just the answer I want . I will read the document . Thanks!

Share this post


Link to post
Share on other sites

You're looking in the wrong place: you shouldn't be concerned at all with how DX9/11 drivers works under the hood: if your app crashes, you're doing something wrong and you should go bughunting in your code :)

 

Share this post


Link to post
Share on other sites
On 3/19/2019 at 10:04 PM, vinterberg said:

You're looking in the wrong place: you shouldn't be concerned at all with how DX9/11 drivers works under the hood: if your app crashes, you're doing something wrong and you should go bughunting in your code :)

Thanks! I think I should try to reproduce this problem , then dig more about it.

 

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  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!