cudaErrorDevicesUnavailable when using Direct3D9 instead of Direct3D9Ex in simpleD3D9Texture


I have got an old D3D9 application where I have developed a plugin which make use of CUDAs D3D9 interop API.
The application is still doing well on old systems (Kepler cards and Windows 7). However, on my Windows 10 machine cudaGetTexture/SurfaceReference() invocations are failing when I call cudaD3D9SetDirect3DDevice().

After playing a little bit with the simpleD3D9Texture example application, I could find another issue - which I think might be related to my original problem.
When I use Direct3D9 instead of Direct3D9Ex I get the following error message:

simpleD3D9Texture.cpp(375) : getLastCudaError() CUDA error : cudaGraphicsD3D9RegisterResource (g_texture_2d) failed : (46) all CUDA-capable devices are busy or unavailable.

The machine where I have problems is running Windows 10 64-bit and Cuda 9.1 on a 980GTX with the 388.19 driver.
On my old machine, which is using Windows 7 SP1 64-bit, a Kepler based Titan card and the 376.51 driver, the modified simpleD3D9Texture is running fine.

I guess my question is, if (non-ex) D3D9 interop is working at all under Windows 10 and if so, are there any restrictions, which are not covered by the documentation?

Thank you for any help,

I think this is pretty much expected behavior. D3D9 was deprecated in favor of D3D9Ex some time ago.

Sorry, I was missing this bit of information.
Thanks for the quick reply.