How Can I use HW acceleration decode/encode without connect Intel GPU to a monitor ?
1. I have i7-2600 / GeForce GT 640, both can see in the Windows control panel
2. I connect both two monitors to GT 640,
3. I use no DX9 and DX11 to do decode/encode
4. when I use MFXInit(MFX_IMPL_HARDWARE_ANY, &HWversion, &HWsession); the return mfxStatus is MFX_ERR_NONE;
BUT MFX_WRN_PARTIAL_ACCELERATION show and it work in SW mode.
And the SDK System Analyzer tells can't work in HW ? WHY?
Intel Media SDK System Analyzer (64 bit)
The following versions of Media SDK API are supported by platform/driver:
Version Target Supported Dec Enc
1.0 HW No
1.0 SW Yes X X
1.1 HW No
1.1 SW Yes X X
1.3 HW No
1.3 SW Yes X X
1.4 HW No
1.4 SW Yes X X
1.5 HW No
1.5 SW Yes X X
1.6 HW No
1.6 SW Yes X X
Name Version State
Intel(R) HD Graphics 184.108.40.20662 Active
NVIDIA GeForce GT 640 220.127.116.112 Active
CPU: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
OS: Microsoft Windows 7
Installed Media SDK packages (be patient...processing takes some time):
Analysis complete... [press ENTER]
And I see some video encode / decode software can work at this situation, or with Lucidlogix Technologies\VIRTU MVP soft's help
Is there a way , I can run hw in this situation by using Intel Media SDK 2013 ?
It appears your system is setup to use 2 adapters, where the Intel adapter is secondary. The MFXInit call is succeeding because the device can be used with DX11, or with DX9 and a monitor attached, as a secondary adapter.
For hardware-accelerated encode/decode operations to succeed, the MSDK requires usable DirectX, even if you are not using DirectX surfaces.
The "Lucidlogix Technologies\VIRTU MVP" solution allows the user to choose which adapter is used as primary for specific applications.
In general, DX9 applications require a monitor to be attached to the device providing acceleration.
Hi, thanks for your reply, Tony .
As mention above, I connect both two monitors to GT 640.
If I create DX9 by // IDirect3D9* pD3D9 = Direct3DCreate9( D3D_SDK_VERSION );
only two adapters find // UINT num_adp = pD3D9->GetAdapterCount();
both are NVIDIA GeForce GT 640 (can see from adapterIdentifier.Description);
while MFXInit return MFX_ERR_NONE at this situation,
I get to know I am using MFX_IMPL_HARDWARE2 by MFXQueryIMPL();
according to mfxstructures.h
//MFX_IMPL_HARDWARE = 0x0002, /* Hardware Accelerated Implementation (default device) */
//MFX_IMPL_HARDWARE2 = 0x0005, /* Hardware accelerated implementation (2nd device) */
//MFX_IMPL_HARDWARE3 = 0x0006, /* Hardware accelerated implementation (3rd device) */
//MFX_IMPL_HARDWARE4 = 0x0007, /* Hardware accelerated implementation (4th device) */
I understand MFX_IMPL_HARDWARE2 equal to de Adapter = 1;
so I use pD3D9->GetAdapterIdentifier(1 , 0, &adapterIdentifier);
but i get adapterIdentifier.Description == "NVIDIA GeForce GT 640 ";
And NO Intel's Device;
Run encode/decode in this situation, MFX_WRN_PARTIAL_ACCELERATION return ,
run DecodeFrameAsync() always get MFX_WRN_DEVICE_BUSY;
Please help me to know how should I get a workable d3d device ?
and Is is conflict MFXInit return MFX_ERR_NONE, while sys_analyzer.exe indicate NO HW supported ?