We noticed that our application is no longer able to use QuickSync hardware acceleration for customers that have upgraded to the new Intel DCH driver.
We have analyzed the problem I will describe the behavioral change in the QuickSync implementation by comparing:
- The DCH driver: 18.104.22.16844 further referred to as 'DCH'
- with the latest..
- Non-DCH driver: 22.214.171.12473 further referred to as 'STD'
- DCH installs QuickSync/MSDK binaries of version 8.0.0.083
- STD installs QuickSync/MSDK binaries of version 8.0.0.068
- DCH installs all MSDK libraries into %PROGRAMFILES%\Intel\Media SDK, %WINDIR%\System32 and %WINDIR%\SysWow64
- STD installs MSDK libraries only into %PROGRAMFILES%\Intel\Media SDK
=> Bug #1: DCH does not remove the installed files from %WINDIR%\System32 and %WINDIR%\SysWow64 during uninstallation (via Control Panel > Programs > Uninstall)
The actual showstopping bug is a change of behavior regarding device initialization (=> MFXInit)
For Windows there has always existed a direct correspondence between the mfxIml enum value and the D3D device's adapter number like follows:
mfxImplD3D Device Adapter number MFX_IMPL_HARDWARE 0 MFX_IMPL_HARDWARE2 1 MFX_IMPL_HARDWARE3 2 MFX_IMPL_HARDWARE4 3
With the MSDK libraries version 8.0.0.083 this is no longer true. I will illustrate the change of behavior with an example:
mfxImplD3D Dev# D3D Device Name MFXInit (8.0.0.068) MFXInit (8.0.0.083) MFX_IMPL_HARDWARE 0 NVIDIA GeForce GTX 750 Ti MFX_ERR_UNSUPPORTED MFX_ERR_NONE MFX_IMPL_HARDWARE2 1 NVIDIA GeForce GTX 750 Ti MFX_ERR_UNSUPPORTED MFX_ERR_UNSUPPORTED MFX_IMPL_HARDWARE3 2 NVIDIA GeForce GTX 750 Ti MFX_ERR_UNSUPPORTED MFX_ERR_UNSUPPORTED MFX_IMPL_HARDWARE4 3 Intel(R) HD Graphics 530 MFX_ERR_NONE MFX_ERR_NONE**
** No error, but doesn't report the same encoding and decoding capabilities as with 68 and dev 0
This is obviously a bug. MFXInit succeeds, but as soon as an application tries to create a D3D surface on the GeForce device and tries to use that with QuickSync, everything will fail.
That problem is not only specific to our own application, it also affects the use of QuickSync with ffmpeg - which is officially supported and documented by Intel as usage scenario for QuickSync.
=> This is bug #2: