Transferring textures across adapters in DirectX 11 causes crash in nvwgf2umx.dll

I’m capturing the desktop with the Desktop Duplication API (on Windows 8) from one GPU and need to copy the texture (which is in GPU memory) to another GPU. To do this I have a capture thread that acquires the desktop image then copies it to a staging resource (created on the same device) using ID3D11DeviceContext::CopyResource. I then map that staging resource with Read, map the destination dynamic resource (which was created on the other device) with WriteDiscard and copy the data. On the rendering thread, I do a ID3D11DeviceContext::CopyResource from the dynamic texture onto the final render target.

This works but I will get a crash in nvwgf2umx.dll (Exception code: 0xc0000005) after a while (usually within 30 seconds). Both devices are created without the SingleThreaded creation flag. I did a bit of research and using a dynamic texture seemed like the best way to do this.

This seems to be a bug in the Nvidia driver as it works without issues with ATI cards.
Driver version: 344.11

Could you please add some more information about the reproducing system?
OS version, OS bitness, application bitness, installed GPU(s).
A reproducer in failing state would be required to analyze this.

Thanks for the quick reply Detlef.

OS: Windows 8.1 Pro 64-bit
Application: Virtual Desktop 64-bit (http://www.vrdesktop.net)
Installed GPUs:

  • GeForce GTX 770
  • GeForce 9800 GT

I’ve had reports that this also occurs on Optimus configurations so this is not specific to my setup. Let me know if you need anything else.

Are you sure the GeForce 9800 GT is actually running with the same driver?
It’s not listed in the supported products of the 344.11 drivers:
[url]GeForce Game Ready Driver | 344.11 | Windows 7 64-bit, Windows 8.1 64-bit, Windows 8 64-bit, Windows Vista 64-bit | NVIDIA
To verify you could open the Control Panel and save the system information.

There is no incentive to check your combination of GPU architectures from so many GPU generations apart. That simply cries unsupported multi-GPU combination.
If this also happens with recent identical boards or if you have more information on what Optimus system exactly shows this behavior that might be helpful.

I was running drivers 340, sorry for the mistake. I had reports of the bug with the MSI GT70 laptops and people with the GTX 980 in combination with an onboard Intel graphic chip.

It it not an issue specific with my setup.

Any updates on this?

If you could isolate this behavior in a standalone DirectX application without 3rdparty dependencies like the Oculus runtime it would be easier to analyze this.

Will do, what’s the best way to send it to you?

File sharing sites are normally not accessible from within the offices here. If you do no want to attach it to this forum (paper clip icon when hovering over a submitted post), I can set up a temporary FTP account for file exchange to move it over to a bug report for the DirectX driver team. Let me know when you’re done and I’ll send you account information to your registration e-mail.