I've been using Intel Media SDK VPP to apply some image pre-processing effect under Win32 Service (Session 0).
This code works normally under Intel HD Graphics 4000.
But I am just discover a very weird behaviour when I switch to my new laptop.
My new laptop has two display adapters Intel HD Graphics 4600 and NVIDIA GT 745M.
I installed Intel Media SDK 2013 R2 and use the API version 1.6
The Driver version of my Intel HD Graphics 4600 is 184.108.40.20665
MFXVideoSession::Init (MFX_IMPL_VIA_D3D11 , version) return MFX_ERR_NONE.
But When I query the implementation type using MFXQueryIMPL() function , the return implementation type is 1 (MFX_IMPL_SOFTWARE).
Normally the return implementation type should be 770 (MFX_IMPL_VIA_D3D11 | MFX_IMPL_HARDWARE).
I am also need to comment this line "VPPRequest.Type |= WILL_READ;" , otherwise the output frame of MEDIA SDK VPP will be green color (the value of Y , U and V channel are all zero).
I also found out that it used NVIDIA GT 745 to create the D3D11 Device Instead of Intel HD Graphics 4600.
This weird behavior did slow down my apps, because the actual implementation is MFX_IMPL_SOFTWARE not MFX_IMPL_VIA_D3D11 ,but I am using DX11 as the memory allocator. (Processing time around 22ms on 640X480 input frame , normal processing time around 2-4ms on 640X480 input frame).
This problem only exist when I am using MEDIA SDK VPP VIA DX11 under the Win32 Service(Session 0).
I didn't see it when I am using MEDIA SDK VPP VIA DX11 in Desktop or Metro mode.
Any suggestions and helps are highly appreciated.