Media (Intel® Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools like Intel® oneAPI Video Processing Library and Intel® Media SDK
Announcements
The Intel Media SDK project is no longer active. For continued support and access to new features, Intel Media SDK users are encouraged to read the transition guide on upgrading from Intel® Media SDK to Intel® Video Processing Library (VPL), and to move to VPL as soon as possible.
For more information, see the VPL website.

MFX_ERR_NOT_FOUND when second monitor is connected

alex78
New Contributor I
1,426 Views

Hi all,

being really stuck here and I hope that anybody can explain this. I have the following setup: i7 - 6700K GPU 3.4 GHz (Skylake) with an Intel 530 HD Graphics and an NVIDIA NVS 315 with two monitor outputs. Both of the GPUs are properly configured and latest drivers are used (Win 8.1). If I connect one monitor to the NVIDIA, I have no problems to run HW accelerated decoding on the 530 HD Graphics card and render it on the screen. But once I connect a second monitor to the NVIDIA (the second monitor is automatically detected, no restart of the comupter is needed), the MFXVideoSession->Init(MFX_IMPL_HARDWARE_ANY, &version) call returns MFX_ERR_NOT_FOUND. But the Intel GPU is still properly configured and visible in the Windows device manager.

I have been able to reproduce this on two computers with a i7 - 6700K CPU.

Does anybody have an idea what is going on here?

Thanks.

Alex

0 Kudos
1 Solution
alex78
New Contributor I
1,426 Views

Ok, for everyone encountering this issue with the two adapters. The solution is to configure the NVIDIA in the "Mosaic" mode, or the so called stretched mode instead of just extending the desktop to other monitor using Windows controls. When configuring multiple monitors "properly", you will be able to use Intel GPU acceleration even with multiple monitors connected to the NVIDIA.

Have a nice day

Alex

View solution in original post

0 Kudos
7 Replies
James_B_9
Beginner
1,426 Views

Hi Alex,

Are you using DirectX11 surfaces?  If not then hardware acceleration will not work unless the Intel decoder is the primary device.  Have you read

https://software.intel.com/sites/default/files/managed/09/02/Intel_Media_Developers_Guide.pdf

section 4.18 Handling Multiple Graphics Adapters?

I had a similar problem on a laptop, which I was able to resolve using the Nvidia control panel, setting the Intel card to be the default adapter.  Unfortunately as far as I am aware this option is only available on laptops.   From memory, however, I did not get a MFX_ERR_NOT_FOUND, error, just the wrong adapter number returned, but things may have changed.

Regards,

James.

0 Kudos
alex78
New Contributor I
1,426 Views

Hi James,

ok, thanks a lot, that makes sense - I am not using DX 11 surfaces. What puzzles me, however, is the fact that when just one monitor is connected to the NVIDIA card, I can accelerate just fine. I would expect that (when not using DX 11 surfaces) this should fail. Or am I still misunderstanding something?

Alex

0 Kudos
James_B_9
Beginner
1,424 Views

Hi Alex,

I am not sure.  I have just checked with DirectX 9 surfaces, with the NVIDIA card, as the preferred graphics processor (laptop setting).  I do not get MFX_ERR_NOT_FOUND retuned when calling.

MFXVideoSession->Init(MFX_IMPL_HARDWARE_ANY, &version)

The function is executed successfully the problem is when I query the implementation which has actually been assigned, as a result of using MFX_IMPL_HARDWARE_ANY, with

    mfxIMPL imp;
    MFXQueryIMPL(*pSession, &imp);
    imp = MFX_IMPL_BASETYPE(imp);

 I get

   MFX_IMPL_HARDWARE2    = 0x0005,  /* Hardware accelerated implementation (2nd device) */

and not

    MFX_IMPL_HARDWARE     = 0x0002,  /* Hardware Accelerated Implementation (default device) */

The call to CreateDeviceEx then fails when passed the 2nd device.

This is on a laptop and not on Skylake so the situation may be different for you.

James.

0 Kudos
alex78
New Contributor I
1,424 Views

Hi James,

thanks again. But it still does not answer my original question. Could maybe one of the Intel gurus put some light on this problem?

Thanks in advance.

Alex

0 Kudos
Anna_B_Intel
Employee
1,424 Views

Hi Alex,

Do you run sample_decode.exe? If yes, please provide me a command line options that you use. 

Best wishes, Anna

0 Kudos
alex78
New Contributor I
1,426 Views

Hi Anna,

thanks for your reply. No, I am not using this sample executable, because I am decoding live media. But I am pretty sure that it would make no difference. The basic questions is, why the call to MFXVideoSession->Init(MFX_IMPL_HARDWARE_ANY, &version) succeeds when one monitor is connected to the NVIDIA card (and I can GPU decode just fine) and why it fails, when a second monitor is added. No monitor output is connected to the Intel HD Graphics during both tests. I am decoding to system memory.

Thanks.

Alex

0 Kudos
alex78
New Contributor I
1,427 Views

Ok, for everyone encountering this issue with the two adapters. The solution is to configure the NVIDIA in the "Mosaic" mode, or the so called stretched mode instead of just extending the desktop to other monitor using Windows controls. When configuring multiple monitors "properly", you will be able to use Intel GPU acceleration even with multiple monitors connected to the NVIDIA.

Have a nice day

Alex

0 Kudos
Reply