QT mf.dll error presumably OpenGl error
-
I get the following runtime errors when I run an QWebengineView program.I am on Windows 10 64bit.
I read abit aout the issue(though i am not sure if is the same exact problem) here BUG REPORT.But it says merged code review1 and code review 2.I presume this means , it has been integrated into QT 5.9 framework.[9964:3004:0702/204303.476:INFO:dxva_video_decode_accelerator_win.cc(1120)] mf.dll is required for hardware video decoding [9964:3004:0702/204303.476:INFO:dxva_video_decode_accelerator_win.cc(1120)] mf.dll is required for hardware video decoding [9964:3004:0702/204303.774:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.774:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.775:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.787:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.789:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.775:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.787:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.789:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.909:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.909:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.911:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.921:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.922:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.911:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.921:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.922:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. qt.network.ssl: QSslSocket: cannot resolve SSL_set_alpn_protos qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_alpn_select_cb qt.network.ssl: QSslSocket: cannot resolve SSL_get0_alpn_selected
The mf.dll error specifically is what has me worried.
-
I get the following runtime errors when I run an QWebengineView program.I am on Windows 10 64bit.
I read abit aout the issue(though i am not sure if is the same exact problem) here BUG REPORT.But it says merged code review1 and code review 2.I presume this means , it has been integrated into QT 5.9 framework.[9964:3004:0702/204303.476:INFO:dxva_video_decode_accelerator_win.cc(1120)] mf.dll is required for hardware video decoding [9964:3004:0702/204303.476:INFO:dxva_video_decode_accelerator_win.cc(1120)] mf.dll is required for hardware video decoding [9964:3004:0702/204303.774:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.774:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.775:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.787:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.789:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.775:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.787:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.789:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.909:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.909:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.911:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.921:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.922:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.911:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. [9964:3004:0702/204303.921:ERROR:gl_context_wgl.cc(78)] Could not share GL contexts. [9964:3004:0702/204303.922:ERROR:gpu_command_buffer_stub.cc(623)] Failed to create context. qt.network.ssl: QSslSocket: cannot resolve SSL_set_alpn_protos qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_alpn_select_cb qt.network.ssl: QSslSocket: cannot resolve SSL_get0_alpn_selected
The mf.dll error specifically is what has me worried.
I too noticed these two things:
- Windows 10 reported as Windows NT 6.2 - specifically by QtWebEngine
e.g.: QtWebEngine (demobrowser.exe) vs Chromium - UA
Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.9.1 Chrome/56.0.2924.122 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
but I thought it was erroneously hard-coded at build time vs run-time detection
- aforementioned mf.dll
there is actually mf.dll in Windows 10 (not sure that's what QtWebEngine is looking for) - C:\Windows\System32\mf.dll
I tried to copy it in my projects folders - both debug and release without success.. perhaps we should copy it into some web engine deployment folder like .../resources or even within a *.pak
I'm still looking for a solution (and a proper documentation too - still not sure it is searching for the same mf.dll in system32 folder)
Keep us posted if you find an answer..
-
Finally found the offending code
https://fossies.org/linux/qt-everywhere-opensource-src/qtwebengine/src/3rdparty/chromium/media/gpu/dxva_video_decode_accelerator_win.ccconstexpr const wchar_t* const kMediaFoundationVideoDecoderDLLs[] = { L"mf.dll", L"mfplat.dll", L"msmpeg2vdec.dll", }; //... VideoDecodeAccelerator::SupportedProfiles DXVAVideoDecodeAccelerator::GetSupportedProfiles( const gpu::GpuPreferences& preferences) { //... for (const wchar_t* mfdll : kMediaFoundationVideoDecoderDLLs) { if (!::GetModuleHandle(mfdll)) { // Windows N is missing the media foundation DLLs unless the media // feature pack is installed. DVLOG(ERROR) << mfdll << " is required for hardware video decoding"; return profiles; } } }
which implies I have so called Windows N (or KN - these come without Media Player/Framework at all) and I should install "Media Feature Pack for N editions of Windows 10 Version 1607"
https://support.microsoft.com/en-us/help/3133719/media-feature-pack-for-n-editions-of-windows-10-version-1607...but I'm on Windows 10 Enterprise (no N, KN whatsoever) and mf.dll is already present
so far my best guess is - since GetModuleHandle parameter must point to "The name of the loaded module" for some reason that module (mf.dll) was not added as a dependency and/or not loaded at run-time (before the aforemetnoined call to GetModuleHandle) therefore not found and that's a totally different bug...
-
You can ingore the mf.dll warnings. They will be removed once the patch at https://codereview.qt-project.org/#/c/201773/ is applied.