WPF and DX9/DX11 interop problem


I’m developing WPF application that has a 3D view port where 3D scene is rendered using DX11. Now I’m hosting WinWorms control using WPF WindowsFormsHost to render into it, but for some reason I have to develop pure WPF control for DX11 rendering.
Found this http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/437/Direct3D-10-11-Direct2D-in-WPF.aspx article on how to share DX10 rendering surface with DX9 device, assign DX9 surface to D3DImage and display its content using WPF Image control.
I’ve tried the example from the link above, and it seems to work on video cards NVIDIA Quadro 2000/200M, but it doesn’t work on NVIDIA Quadro K4000M/K2100M/K2000 and Intel HD Graphics 4400.
Tried to turn on Debug version of DX9/10/11, set maximum validation level, but no errors/warnings were displayed. I have updated video driver to the same latest version on both groups of video cards - still the same problem - empty white client area instead of rotating DX logo.
Further investigation showed that on “bad” video cards D3DImage.IsFrontBufferAvailableChanged event gets fired once after program has started, notifying that device has been lost (even though I didn’t log off or switch the user), and never gets called again. On “good” video cards it never gets called and everything works okay.

Does anyone have an idea what’s going wrong here?
Please give possible solution on that.

Thank you in advance,

I wish I had an answer for you. I had the same problem with a K5000 card. Finally gave up and just bring the frame in and change it into a bitmap and display that as the background on a Canvas object. After that no more problems.

I hope to circle back around and look into this again as I would much prefer keeping the frames on the GPU and only render each frame and the end of the process on to a D3DImage object.