Closed Bug 1407461 Opened 6 years ago Closed 2 months ago

Intel 965 Express: Direct2D: Blocked for your graphics driver version mismatch between registry and DLL.

Categories

(Core :: Graphics, defect, P2)

57 Branch
defect

Tracking

()

RESOLVED FIXED
111 Branch
Tracking Status
firefox-esr102 --- wontfix
firefox57 --- wontfix
firefox58 --- wontfix
firefox59 --- wontfix
firefox109 --- wontfix
firefox110 --- wontfix
firefox111 --- fixed

People

(Reporter: poizan, Assigned: bradwerth)

References

(Blocks 1 open bug)

Details

(Whiteboard: [gfx-noted])

Attachments

(1 file)

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
Build ID: 20171009192146

Steps to reproduce:

Installed Firefox 57 Developer Edition on Windows 10 on a machine with a Intel 965 Express GPU.


Actual results:

about:support shows

Direct2D: Blocked for your graphics driver version mismatch between registry and DLL.

and several times shows the failure:

[GFX1-]: Mismatched driver versions between the registry 8.15.10.2697 and DLL(s) 8.14.10.2697, reported.


Expected results:

Firefox should not expect graphics drivers to have a match between claimed driver version in INF file and file versions on DLLs in driver because device manufactures cannot be expected to make those match.
I should note that the message is correct in that several of the DLLs do have the file version 8.14.10.2697 while the driver it self is version 8.15.10.2697. Note that the build numbers are the same, so seemingly this is intentional on Intel's part.

Also this is as far as I know the newest driver that exists, the one from Intel's website is only 8.(15|14).10.1930.

(Also I wonder where the mismatch is supposed to be reported to, /dev/null?)
Btw. the kernel part of the driver (igdkmd64.sys) is also version 8.14.10.2697, so at least that matches the userspace parts, it is just the inf file that claims the version number of 8.15.10.2697.
Component: Untriaged → Graphics
Product: Firefox → Core
We currently tag for mismatches, the versions below 9.17.10.0 - these ones being 8.* get caught in that test.  We block these mismatches for historical reasons - bug 590373 and bug 595364.

Arguably, this was 2010, so this legacy may not be necessary.


On a side note, yes, about:support is the only place where we report this (stdout if you're catching it.)
Priority: -- → P3
Whiteboard: [gfx-noted]
I tried force enabling Direct2D with gfx.direct2d.force-enabled=true and also tried setting the environment variable MOZ_GFX_SPOOF_DRIVER_VERSION to 9.17.10.0, but it still says "Direct2D	Blocked for your graphics driver version mismatch between registry and DLL.". Is that a bug?

This blocking logic is a nasty anti-feature which is causing unplayable video performance. Google Chrome video performance is much snappier on the same hardware (in my case HP 6710b) apparently because it does leverage hardware acceleration. I'm also using driver 8.15.10.1930 under WIndows 10 64 bit.

As noted above, force enabling and spoofing cannot bypass this tangled web of version number blocking and dll/inf version checks. Note the Intel Mobile 965 Express is not even meant to be blocked by Bug 843273 which is for the later HD Graphics generation. After 5 years please for the love of humanity just fix it!

Please remove this dll/registry version mismatch check (it cannot by bypassed by spoofing or force enabling). Should have been done under Bug 1762125.

This version mismatch is common with these old drivers and not due to bad driver installations. The whole premise for the original patch appears to be due to speculation only.

Not everyone is running the latest hardware, and every opportunity should be taken to provide acceleration for all end users to maximize the lifetime of old hardware and minimize landfill.

Decision Log
Blocklisted; failure code BLOCKLIST_FEATURE_FAILURE_MISMATCHED_VERSION

Failure Log
Mismatched driver versions between the registry 8.15.10.1930 and DLL(s) 8.14.10.1930, reported.

Flags: needinfo?(jmuizelaar)
Severity: normal → S3

I’ve switched the severity to S2 since this can affect some older computers that cannot take advantage of hardware acceleration.

As Smythe Bacchus said 3 months ago, this cannot be bypassed by spoofing or force enabling. There’s no workaround available at this time.

It would be nice if we would have a preference to tell Firefox not to block due to graphics driver version mismatch between the registry and DLL(s).

A satisfactory workaround is still needed.

Severity: S3 → S2
Priority: P3 → P2

I'll remove this check by believing the registry version number exclusively.

Assignee: nobody → bwerth
Flags: needinfo?(jmuizelaar)

Mismatched driver versions will be noted in any associated crash
reports, but otherwise will not be reported and will not prevent
hardware acceleration from activating.

Attachment #9316197 - Attachment description: Bug 1407461: Allow hardware acceleration for Windows drivers with mismatched DLL and registry versions. → Bug 1407461: Allow hardware acceleration for Windows drivers with mismatched DLL and registry versions on Nightly.
Pushed by bwerth@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f36d7b2b0ea1
Allow hardware acceleration for Windows drivers with mismatched DLL and registry versions on Nightly. r=gfx-reviewers,jrmuizel

Backed out for causing build bustages on GfxInfo.cpp.

[task 2023-02-07T19:07:28.582Z] 19:07:28     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/widget/windows'
[task 2023-02-07T19:07:28.587Z] 19:07:28     INFO -  /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/clang-cl -Qunused-arguments -Xclang -std=c++17 -Xclang -ivfsoverlay -Xclang /builds/worker/fetches/vs/overlay.yaml -FoUnified_cpp_widget_windows0.obj -c  -I/builds/worker/workspace/obj-build/dist/stl_wrappers -Xclang -ftrivial-auto-var-init=pattern -guard:cf -DDEBUG=1 -DUNICODE -D_UNICODE -D_CRT_RAND_S -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -D_SECURE_ATL -DCHROMIUM_BUILD -DU_STATIC_IMPLEMENTATION -DOS_WIN=1 -DWIN32 -D_WIN32 -D_WINDOWS -DWIN32_LEAN_AND_MEAN -DCOMPILER_MSVC -DMOZ_UNICODE '-DMOZ_APP_NAME="firefox"' '-DMOZ_TOAST_APP_NAME="Firefox"' -DMOZ_ENABLE_D3D10_LAYER -DWINAPI_NO_BUNDLED_LIBRARIES -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DSTATIC_EXPORTABLE_JS_API -I/builds/worker/checkouts/gecko/widget/windows -I/builds/worker/workspace/obj-build/widget/windows -I/builds/worker/workspace/obj-build/ipc/ipdl/_ipdlheaders -I/builds/worker/checkouts/gecko/ipc/chromium/src -I/builds/worker/checkouts/gecko/gfx/cairo/cairo/src -I/builds/worker/checkouts/gecko/layout/forms -I/builds/worker/checkouts/gecko/layout/generic -I/builds/worker/checkouts/gecko/layout/style -I/builds/worker/checkouts/gecko/layout/xul -I/builds/worker/checkouts/gecko/toolkit/xre -I/builds/worker/checkouts/gecko/widget -I/builds/worker/checkouts/gecko/widget/headless -I/builds/worker/checkouts/gecko/xpcom/base -I/builds/worker/workspace/obj-build/dist/include -I/builds/worker/workspace/obj-build/dist/include/nspr -I/builds/worker/workspace/obj-build/dist/include/nss -MD -FI /builds/worker/workspace/obj-build/mozilla-config.h -DMOZILLA_CLIENT -fcrash-diagnostics-dir=/builds/worker/artifacts -TP -Zc:sizedDealloc- -D_HAS_EXCEPTIONS=0 -Gy -Zc:inline -Gw -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING -GR- -Z7 -Xclang -load -Xclang /builds/worker/workspace/obj-build/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O2 -Oy- -Werror -W3 -Wbitfield-enum-conversion -Wdeprecated-this-capture -Wempty-body -Wformat-type-confusion -Wignored-qualifiers -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtautological-constant-in-range-compare -Wtype-limits -Wno-error=tautological-type-limit-compare -Wunreachable-code -Wunreachable-code-return -Wunused-but-set-parameter -Wno-invalid-offsetof -Wclass-varargs -Wempty-init-stmt -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wno-range-loop-analysis -Wc++2a-compat -Wenum-compare-conditional -Wenum-float-conversion -Wvolatile -Wno-ambiguous-reversed-operator -Wno-error=deprecated -Wno-error=deprecated-anon-enum-enum-conversion -Wno-error=deprecated-enum-enum-conversion -Wno-error=deprecated-pragma -Wno-error=deprecated-this-capture -Wcomma -Wimplicit-fallthrough -Wstring-conversion -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=atomic-alignment -Wno-error=deprecated-builtins -Wno-unknown-pragmas -Wno-ignored-pragmas -Wno-deprecated-declarations -Wno-microsoft-enum-value -Wno-microsoft-include -Wno-invalid-noreturn -Wno-inconsistent-missing-override -Wno-implicit-exception-spec-mismatch -Wno-microsoft-exception-spec -Wno-unused-local-typedef -Wno-ignored-attributes -Wno-used-but-marked-unused -Wno-psabi -Wthread-safety -Wno-unknown-warning-option -fno-strict-aliasing -Xclang -ffp-contract=off  -Xclang -MP -Xclang -dependency-file -Xclang .deps/Unified_cpp_widget_windows0.obj.pp -Xclang -MT -Xclang Unified_cpp_widget_windows0.obj   Unified_cpp_widget_windows0.cpp
[task 2023-02-07T19:07:28.587Z] 19:07:28     INFO -  In file included from Unified_cpp_widget_windows0.cpp:20:
[task 2023-02-07T19:07:28.587Z] 19:07:28    ERROR -  /builds/worker/checkouts/gecko/widget/windows/GfxInfo.cpp(1956,76): error: function definition is not allowed here
[task 2023-02-07T19:07:28.588Z] 19:07:28     INFO -  void GfxInfo::DescribeFeatures(JSContext* aCx, JS::Handle<JSObject*> aObj) {
[task 2023-02-07T19:07:28.589Z] 19:07:28     INFO -                                                                             ^
[task 2023-02-07T19:07:28.589Z] 19:07:28    ERROR -  /builds/worker/checkouts/gecko/widget/windows/GfxInfo.cpp(2009,66): error: function definition is not allowed here
[task 2023-02-07T19:07:28.589Z] 19:07:28     INFO -  NS_IMETHODIMP GfxInfo::SpoofVendorID(const nsAString& aVendorID) {
[task 2023-02-07T19:07:28.589Z] 19:07:28     INFO -                                                                   ^
[task 2023-02-07T19:07:28.589Z] 19:07:28    ERROR -  /builds/worker/checkouts/gecko/widget/windows/GfxInfo.cpp(2014,66): error: function definition is not allowed here
[task 2023-02-07T19:07:28.589Z] 19:07:28     INFO -  NS_IMETHODIMP GfxInfo::SpoofDeviceID(const nsAString& aDeviceID) {
[task 2023-02-07T19:07:28.589Z] 19:07:28     INFO -                                                                   ^
[task 2023-02-07T19:07:28.589Z] 19:07:28    ERROR -  /builds/worker/checkouts/gecko/widget/windows/GfxInfo.cpp(2019,76): error: function definition is not allowed here
[task 2023-02-07T19:07:28.589Z] 19:07:28     INFO -  NS_IMETHODIMP GfxInfo::SpoofDriverVersion(const nsAString& aDriverVersion) {
[task 2023-02-07T19:07:28.589Z] 19:07:28     INFO -                                                                             ^
[task 2023-02-07T19:07:28.589Z] 19:07:28    ERROR -  /builds/worker/checkouts/gecko/widget/windows/GfxInfo.cpp(2024,58): error: function definition is not allowed here
[task 2023-02-07T19:07:28.589Z] 19:07:28     INFO -  NS_IMETHODIMP GfxInfo::SpoofOSVersion(uint32_t aVersion) {
[task 2023-02-07T19:07:28.589Z] 19:07:28     INFO -                                                           ^
[task 2023-02-07T19:07:28.590Z] 19:07:28    ERROR -  /builds/worker/checkouts/gecko/widget/windows/GfxInfo.cpp(2029,42): error: function definition is not allowed here
[task 2023-02-07T19:07:28.590Z] 19:07:28     INFO -  NS_IMETHODIMP GfxInfo::FireTestProcess() { return NS_OK; }
[task 2023-02-07T19:07:28.590Z] 19:07:28     INFO -                                           ^
[task 2023-02-07T19:07:28.590Z] 19:07:28     INFO -  In file included from Unified_cpp_widget_windows0.cpp:29:
[task 2023-02-07T19:07:28.591Z] 19:07:28    ERROR -  /builds/worker/checkouts/gecko/widget/windows/IEnumFE.cpp(10,17): error: qualified reference to 'CEnumFormatEtc' is a constructor name rather than a type in this context
[task 2023-02-07T19:07:28.591Z] 19:07:28     INFO -  CEnumFormatEtc::CEnumFormatEtc() : mRefCnt(0), mCurrentIdx(0) {}
[task 2023-02-07T19:07:28.591Z] 19:07:28     INFO -                  ^
[task 2023-02-07T19:07:28.591Z] 19:07:28    ERROR -  /builds/worker/checkouts/gecko/widget/windows/IEnumFE.cpp(10,34): error: expected ';' after expression
[task 2023-02-07T19:07:28.592Z] 19:07:28     INFO -  CEnumFormatEtc::CEnumFormatEtc() : mRefCnt(0), mCurrentIdx(0) {}
[task 2023-02-07T19:07:28.592Z] 19:07:28     INFO -                                   ^
[task 2023-02-07T19:07:28.592Z] 19:07:28     INFO -                                   ;
[task 2023-02-07T19:07:28.592Z] 19:07:28    ERROR -  /builds/worker/checkouts/gecko/widget/windows/IEnumFE.cpp(10,36): error: type '::mozilla::ThreadSafeAutoRefCnt' does not provide a call operator
[task 2023-02-07T19:07:28.592Z] 19:07:28     INFO -  CEnumFormatEtc::CEnumFormatEtc() : mRefCnt(0), mCurrentIdx(0) {}
<...>
Flags: needinfo?(bwerth)
Pushed by bwerth@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/37d5f6302d09
Allow hardware acceleration for Windows drivers with mismatched DLL and registry versions on Nightly. r=gfx-reviewers,jrmuizel
Status: UNCONFIRMED → RESOLVED
Closed: 2 months ago
Resolution: --- → FIXED
Target Milestone: --- → 111 Branch

Can you also create a custom preference for all Firefox editions that will allow hardware acceleration with mismatched DLL and registry versions?

It looks like only Nightly builds will allow that.

(In reply to Cristian Silaghi from comment #15)

Can you also create a custom preference for all Firefox editions that will allow hardware acceleration with mismatched DLL and registry versions?

Consider that if we added a pref, now unless we uplifted it, that pref would only exist in Nightly until it became Beta and then became Release. In other words, any user who wants to try Firefox without this feature active would need to run Nightly anyway. I'll file a follow-up to review the prevalence of this issue appearing in crash reports, and we'll remove this check entirely if the data supports it. If not, then we'll probably add a pref so users can opt-out, as you suggest.

Flags: needinfo?(bwerth)
Blocks: 1815740

I'm aware it will take time before landing in the Release channel, but it would be nice to have a preference that will help experienced users in the future.

Either remove the check entirely or let us have a custom preference to bypass the check. Just my two cents.

You need to log in before you can comment on or make changes to this bug.