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:
-
Wasn’t Google Earth using OpenGL by default? Maybe Windows is looking for the (probably not yet implemented) WDDM OpenGL User Mode Driver DLL?
-
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.
-
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.
-
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
And there is a texture that is very consistent with the final image to be displayed except the globe part, like this:
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