how can I let the function pfnSetStreamSourceUm in user-mode display driver be called?

I’m implementing a WDDM display driver for a virtual video card in a virtual machine in Windows 7,
the most functions have been done, and some DirectX 9 examples in DirectX SDK (June 2010) can
work correctly with my driver, but the Google Earth can’t work correctly, just dispaly a black screen.

I have debuged it, and I found that the directx subsystem calls the function pfnSetStreamSourceUm
in user-mode display driver when Google Earth runs, but the DirectX 9 examples in DirectX SDK will
not cause the directx subsystem to call this fucntion.

Then I tested this in VirtualBox, I let the function pfnSetStreamSourceUm in VirtualBox display driver
returns S_OK immediately when this function be called (Stream Source related code wouldn’t be
executed), and the Google Earth in VirtualBox has the same result: a black screen.

I think the function pfnSetStreamSourceUm in my user-mode display driver has a bug in it, but I
don’t know how to cause the directx subsystem to call this function, I searched in Google and MSDN,
can’ t find any detailed information.

Once I know how to cause the directx system to call this function, I can implement a simple DirectX
APP to trigger this debug, this will help me to finish this bug.

I need help, thank you very much!

BR,
John

Hi All,

I have found my answer, when call the API DrawPrimitiveUP in DirectX APP, the function pfnSetStreamSourceUm then be called.

I have tested, the implementation of function pfnSetStreamSourceUm in my driver has no obvious error, I need more hard working
in finding the bug that let Google Earth can’t display correctly.

Thank you for reading my discussion.

Two thoughts:

  1. Wasn’t Google Earth using OpenGL by default? Maybe Windows is looking for the (probably not yet implemented) WDDM OpenGL User Mode Driver DLL?

  2. Maybe trying to run it as a non-fullscreen windowed DirectX application in Windows 7 Non-Aero mode? This is extremely difficult to implememnt in a virtual WDDM driver…

Marcel Ruedinger
datronicsoft

Hi Marcel,

Thank you for your reply.

  1. I have switched Google Earth to using DirectX mode, and with my own driver, Google Earth can work correctly in OpenGL mode except the
    displayed image has a light blue mask (The color of the background is not dark black but light blue), I think this is a bug of my driver, I will
    try to fix it later, I think it’s not a very serious problem.

  2. I have disabled the AERO mode in testing virtual machine with a Windows 7 OS, and Google Earth is working in non-fullscreen windowed
    mode. And yes, you are right, to implement a WDDM display driver for a virtual machine like VirtualBox does is very very difficult, I have
    spend one year at this project by myself.

BR,
John

Hi Marcel,

I have dumped the textures that Google Earth used to display the globe, list two of them below
Image 1

Image 2

And there is a texture that is very consistent with the final image to be displayed except the globe part, like this:
Image to display

What can cause this situation? I hope you can give some suggestions, thank you.

BTW: The text part is OK, these characters are Chinese, I come from China.

BR,
John