Spout Error 87 & Cannot create DirectX/GL interop

Hi,

I’m using an Intel(R) Core™ i7-10750H CPU with NVIDIA GeForceRTX 3070 Laptop GPU.
I got some troubles with sending HeavyM into Resolume.
I can find the HeavyM spout output but when I try to use it there is an Error saying : Cannot create DirectX/GL interop

When I’m using the Demo Receiver I can select heavyM output but there is nothing.

The logs :

Settings Panel :

Spout log file

========================
2022-01-22 20:24:39
[notice] SpoutSettings : SpoutPanel already registered
[notice] spoutGL::OpenDirectX
[notice] spoutDirectX::OpenDirectX11()
[notice] spoutDirectX::CreateDX11device - pAdapterDX11 (0x0000000)
[notice] device (0xE6BACE68)
[notice] spoutGL::CleanupDX11()
[notice] spoutDirectX::CloseDirectX11()
[notice] spoutGL::OpenDirectX11
[notice] spoutDirectX::OpenDirectX11()
[notice] spoutDirectX::CreateDX11device - pAdapterDX11 (0x0000000)
[notice] device (0xE61209F8)
[notice] spoutGL::GLDXready - testing for GL/DX interop compatibility
[notice] GL/DX interop extensions available
[notice] spoutGL::GLDXready - testing GL/DX interop functions
[notice] spoutDirectX::CreateSharedDX11Texture
[notice] pDevice = 0xE61209F8, width = 256, height = 256, format = 87
[notice] pTexture = 0xE67C35F8 : dxShareHandle = 0x0003082
[notice] Linking test - OpenGL texture (0x0000001) DX11 texture (0xE67C35F8)
[notice] spoutDirectX::ReleaseDX11Texture (0xE61209F8)
[notice] Test OpenGL and DX11 textures created and linked OK
[notice] spoutGL::CleanupInterop
[notice] spoutGL::CleanupDX11()
[notice] spoutDirectX::CloseDirectX11()

Demo Receiver :

Spout log file

========================
2022-01-22 20:25:21
[notice] spoutGL::OpenSpout - 64bit 2.007 - this 0x578CB500
[notice] spoutGL::OpenDirectX
[notice] spoutDirectX::OpenDirectX11()
[notice] spoutDirectX::CreateDX11device - pAdapterDX11 (0x0000000)
[notice] device (0x5AAF4C48)
[notice] spoutGL::GLDXready - testing for GL/DX interop compatibility
[notice] GL/DX interop extensions available
[notice] spoutGL::GLDXready - testing GL/DX interop functions
[notice] spoutDirectX::CreateSharedDX11Texture
[notice] pDevice = 0x5AAF4C48, width = 256, height = 256, format = 87
[notice] pTexture = 0x5AAB4CF8 : dxShareHandle = 0x00027C2
[notice] Linking test - OpenGL texture (0x0000002) DX11 texture (0x5AAB4CF8)
[notice] spoutDirectX::ReleaseDX11Texture (0x5AAF4C48)
[notice] Test OpenGL and DX11 textures created and linked OK
[notice] spoutGL::OpenSpout - GL/DX interop compatible
[notice] Using GPU OpenGL GL/DX methods
[error] spoutDirectX::OpenDX11shareHandle (0x00009C2) failed : error = 87 (0x0000057)

I tried my best with these two topics, but nothing change.

Thank you for your help.

It looks like the same problem the Nestdrop user had with a GeForceRTX 3070. As you point out, we see the same error 87 OpenDX11shareHandle failed. Does your system also have integrated Intel UHD graphics?

Could you confirm that updating the NVIDIA driver and attaching a monitor does not solve the problem. What is the driver version number?

As mentioned in the post concerning NestDrop, OpenDX11shareHandle can fail if the sender and receiver use a DirectX device created on different graphics adapters. To confirm that, you can make the same test with “Tutorial04.exe” to find if the Intel graphics is shown when you first open the “Select graphics adapter” dialog.

Also, Tutorial04 should be received by HeavyM. If not, try selecting different adapters. HeavyM should be received by Tutorial07. Again try selecting different graphics adapters.

Tutorial04/Tutorial07 should work together if using the same graphics adapter.

Demo Sender/Receiver should also work together, although you can’t select adapters.

Good evening,
I do have the latest version of NVIDIA, version 511.23.
Having added a screen, I now have the NVIDIA box which is available in SpoutSettings. I have set it to “High performance” and “Auto” for Threaded optimization. If I unplug the monitor and restart SpoutSettings, the NVIDIA box is no longer available.

Using Tutorial04, first I saw 0: Intel UHD 1: NVIDIA 3070(…).
I managed to get 0: NVIDIA 3070 with the monitor plugged in. Now when I remove the monitor and restart Tutorial04, I get 0: NVIDIA 3070 1: Intel UHD.

I forced Resolume & HeavyM to use my NVIDIA card in the NVIDIA settings.
Everything seems to be used on my GPU.

But I still get the same error message when using HeavyM in Resolume or when I run the Spout Demo Receiver trying to retrieve HeavyM, I get nothing and error 87.

Demo Sender & Demo Receiver work together as well as Tutorial04 and Tutorial07.
But Tutorial07 does not receive HeavyM using 0:NVIDIA 3070 but works using 1: Intel UHD.

On Resolume, I can receive and send to Tutorial04 and Tutorial07.

So the problem seems to be HeavyM using Intel UHD instead of NVIDIA despite the fact that I try to force it. (Software window and projection window)

I don’t really know what else I can try, if you have an idea, I’m interested.

Thanks

Edit : After checking, it seems to be the HeavyM projection display window running on the Intel UHD GPU. When I look in my task manager, my intel UHD GPU is at 90% usage with the projection window open and only 9% when it is closed.

Your tests show the same result as the NestDrop user that the monitor seems to be necessary.

I think there could be a possible solution. First, confirm that Tutorial04 has “0: NVIDIA 3070” listed by default. Close without changing adapter and check “Auto switch adapter” on.
Now you should receive from HeavyM. Open the adapter selection dialog to confirm the Intel UHD.

While “Auto switch adapter” is checked on, open Tutorial04.exe and it should be received successfully. Now in Tutorial04, select a different adapter. Tutorial07 receiver should switch to it. Again open the adapter selection dialog to confirm.

Let’s see if all that works.

Hello,

I finally found it!
Indeed it was indeed the HeavyM projection screen that was not running on my Nvidia graphics card.
Despite having set it to ultra with the Nvidia control panel, it was forcing the use with the Intel UHD card.
By forcing the use of the Nvidia card for the HeavyM projection screen (in addition to Resolume and HeavyM) in the Windows graphics settings, it finally works!

Thank you very much for your quick answers!

Edit : It works also without 2nd monitor !

That’s a good outcome.
Laptops with dual graphics have been a problem for some time, but It seems that the Intel UHD / NVIDIA 3070 combination is particularly difficult to configure.