Why does Dridver Of Dx9 and Dx11 Have Different Behavior ?

Started by
8 comments, last by laiyierjiangsu 5 years ago

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.

 

Stay hungry, stay foolish!

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.

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.

Stay hungry, stay foolish!

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.

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 .

Stay hungry, stay foolish!

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.

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!

Stay hungry, stay foolish!

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

 

.:vinterberg:.

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.

 

Stay hungry, stay foolish!

This topic is closed to new replies.

Advertisement