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.

Decode acceleration when Intel head is NOT primary display

RLinc
Beginner
1,366 Views

Hello,

This one has eluded me for sometime and you thoughts are appreciated :)

Our system/product is working great when the Intel display is active, the primary display device and using D3D9_MEMORY under Windows 10.

We also have an AMD graphics device in the system.

If however, we just change the primary display to be one of the AMD output heads (Note, Intel is still an active head in the system)

m_session.InitEx(initPar); fails with unsupported and only software decoding is permitted.

Does Intel acceleration only work if an Intel head is not the primary display device?

Here is our initialisation code, let me know if you require any further information:

initPar.Version.Major = 1;
initPar.Version.Minor = 0;

initPar.Implementation = MFX_IMPL_HARDWARE_ANY;
res = m_session.InitEx(initPar);
if (res < MFX_ERR_NONE)
{
   // now try to fall back to software
   initPar.Implementation = MFX_IMPL_AUTO_ANY;
   res = m_session.InitEx(initPar);
   if (res < MFX_ERR_NONE)
   {
   }
 }

Cheers.

 

0 Kudos
7 Replies
Mark_L_Intel1
Moderator
1,366 Views

Hi Rich,

Sorry for the late response to your question, we are busy on other urgent project and short handed.

What you have is a known issue and it doesn't have a consistent solution, you can refer to the following document at "Appendix D" to see if it helps.

https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.pdf

Mark

0 Kudos
RLinc
Beginner
1,366 Views

Hello Mark,

Thanks for the reply, we appreciate your time on this.

I've followed the instruction in Appendix D (as detailed above initially) and see the error only in the DirectX9 usage model.

Note DirectX11 is OK, however performance using DirectX9 is x3 better!

I've had to resort to writing a windows service that monitors and moves adaptors around if the user changes the primary, installing this on new builds, then having to setup the Windows out of the box configuration for OEM licencing, pretty ugly business.

The 'issue' is quite simple to setup with a foreign non-intel GC installed in a system, does anyone know a way around this?

Cheers.

0 Kudos
Mark_L_Intel1
Moderator
1,366 Views

Hi Rich,

If you want to activate Intel graphic driver in DX9 framework even if Intel graphic is not the primary display, this is very hard.

The limitation is on DirectX side, until 2013, supporting hardware acceleration in a multi-gpu environment was bound by a fundamental constraint - the Intel Graphics adapter needed to have a monitor associated with the device to be active. This constraint was due to the capabilities of the Microsoft DirectX 9 infrastructure.

DirectX11 improved its capability so this issue was fixed. But for DX9, we need a complicated solution because Media SDK depends on graphic driver which is controlled by Windows platform.

So I would say, unless a large number of customers requests this feature, it is very hard to put this into the request.

Mark

0 Kudos
RLinc
Beginner
1,366 Views

Hi Mark,

Thanks for the update, to be clear, when you state 'active' you mean 'primary', as all Intel heads are active in our system setup, just not set as the primary display adapter..

Correct?

FYI, performance is nearly 3 fold better using Dx9 compared to Dx11 when decoding and displaying.

Cheers,

Rich.

 

0 Kudos
Mark_L_Intel1
Moderator
1,366 Views

Yes, that was I meant.

Again, this is the limitation of the DirectX 9 framework

Mark

0 Kudos
RLinc
Beginner
1,366 Views

Hi Mark,

After updating to the latest Intel SDK (8.3.26.352), m_session.InitEx(initPar) no longer fails with unsupported with only software decoding permitted when Intel is NOT the Primary display!

Then use m_hwdev->Init(.., .., AdapterOrdinal (in my case '2')

And decode performance is no different, Intel Primary display or Not.

This is now great for us, I'll revisit and confirm what exactly changed the next time I step through libmfx_vs2015.lib on a working and non-working code base.

Cheers

Rich.

0 Kudos
Mark_L_Intel1
Moderator
1,366 Views

Hi Rich,

Good to know this works, it might be also related to Intel driver update because it will update the MSDK runtime library.

Let me know if there are still issues.

Mark

0 Kudos
Reply