Last Comment Bug 726797 - Multi-GPU Detection Broken on Windows Gecko 11
: Multi-GPU Detection Broken on Windows Gecko 11
Status: RESOLVED FIXED
[qa-]
: regression
Product: Core
Classification: Components
Component: Graphics (show other bugs)
: 11 Branch
: x86 Windows 7
: -- major (vote)
: mozilla13
Assigned To: Justin Wood (:Callek)
:
Mentors:
Depends on:
Blocks: 679110
  Show dependency treegraph
 
Reported: 2012-02-13 14:50 PST by Justin Wood (:Callek)
Modified: 2012-03-08 23:40 PST (History)
5 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---
+
fixed
fixed


Attachments
REG file of my driver heirarchy here for GPU's (915.51 KB, text/plain)
2012-02-14 11:27 PST, Justin Wood (:Callek)
no flags Details
Implement c#6 (871 bytes, patch)
2012-02-16 18:16 PST, Justin Wood (:Callek)
ajuma.bugzilla: review+
akeybl: approval‑mozilla‑aurora+
akeybl: approval‑mozilla‑beta+
Details | Diff | Review

Description Justin Wood (:Callek) 2012-02-13 14:50:08 PST
So I noticed today that my Beta Firefox (and SeaMonkey) are not showing my second GPU (nVidea). After talking to #gfx it was suspected that Bug 679110 may have regressed this.

After loading my stable-SeaMonkey (Gecko 10) it certainly is a regression since Gecko 10, and 679110 looks like a very likely suspect.

If need be I am willing to test/drop into a debugger/etc. [prefer time investment to test though, so try build better than locally building]

The following is my about:support graphics sections for Gecko 10 and Gecko 11

Gecko 10:
--------------------------
Graphics
        Adapter Description Intel(R) HD Graphics Family
        Vendor ID 0x8086
        Device ID 0x0116
        Adapter RAM Unknown
        Adapter Drivers igdumd64 igd10umd64 igd10umd64 igdumdx32 igd10umd32 igd10umd32
        Driver Version 8.15.10.2462
        Driver Date 7-26-2011
        Vendor ID (GPU #2) 10de
        Device ID (GPU #2) 0dec
        Adapter RAM (GPU #2) 1024
        Adapter Drivers (GPU #2) nvd3dumx,nvwgf2umx,nvwgf2umx nvd3dum,nvwgf2um,nvwgf2um
        Driver Version (GPU #2) 8.17.12.8562
        Driver Date (GPU #2) 10-15-2011
        Direct2D Enabled true
        DirectWrite Enabled true (6.1.7601.17563)
        ClearType Parameters ClearType parameters not found
        WebGL Renderer Google Inc. -- ANGLE (Intel(R) HD Graphics Family) -- OpenGL ES 2.0 (ANGLE 1.0.0.930)
        GPU Accelerated Windows 1/1 Direct3D 10
-----------------------------

Gecko 11:
--------------------------
Graphics
        Adapter Description Intel(R) HD Graphics Family
        Vendor ID 0x8086
        Device ID 0x0116
        Adapter RAM Unknown
        Adapter Drivers igdumd64 igd10umd64 igd10umd64 igdumdx32 igd10umd32 igd10umd32
        Driver Version 8.15.10.2462
        Driver Date 7-26-2011
        Direct2D Enabled true
        DirectWrite Enabled true (6.1.7601.17563)
        ClearType Parameters ClearType parameters not found
        WebGL Renderer Google Inc. -- ANGLE (Intel(R) HD Graphics Family) -- OpenGL ES 2.0 (ANGLE 1.0.0.930)
        GPU Accelerated Windows 7/7 Direct3D 10
        AzureBackend direct2d
-----------------------------
Comment 1 Justin Wood (:Callek) 2012-02-13 14:52:10 PST
(In reply to Justin Wood (:Callek) from comment #0)
> Gecko 10:
> --------------------------
> Graphics
>         Adapter Description Intel(R) HD Graphics Family
>         Vendor ID 0x8086
>         Device ID 0x0116
>         Adapter RAM Unknown

Err actually just for clarity these were not |0x| prefixed ID's and were just mistakenly edited when I transcribed this from 11's
Comment 2 Ali Juma [:ajuma] 2012-02-14 07:36:01 PST
Adding a bit of context from irc:

"well what basically happened is (a) system hung/froze (b) restarted via forced power cycle (c) Samsung System Restore popped up a dialog saying system software was not found [nvidia driver] proceeded to install that from its local backup +reboot (d) reinstalled my local download of the latest nvidia driver + reboot (e) verified that the nVidia control panel finds the card, but Firefox..."
Comment 3 Ali Juma [:ajuma] 2012-02-14 07:51:12 PST
The fact that the GPU is appearing in Firefox 10 means that it has an entry in the registry (since that's where Firefox 10 looks for a second GPU). The fact that it's not showing up in Firefox 11 means that Windows isn't including this GPU when enumerating devices in the display adapter device interface class. This makes me wonder whether something went wrong with the driver re-installation. Are you able to use this GPU (e.g. by forcing it on through the nVidia control panel)?
Comment 4 Justin Wood (:Callek) 2012-02-14 08:07:07 PST
When I right click on a icon on my desktop for another program I can choose to launch with my nVidia GPU and it launches/displays fine.

E.g. tried with Thunderbird --> "Run with Graphics Processor" --> "High Performance NVIDIA Processor"
Comment 5 Justin Wood (:Callek) 2012-02-14 11:27:56 PST
Created attachment 597114 [details]
REG file of my driver heirarchy here for GPU's

Attached is my Driver Registry Export for GPU's

As I found that http://hg.mozilla.org/mozilla-central/annotate/62695656d7bd/widget/windows/GfxInfo.cpp#l513 was where I was failing, and looking at the registry I can see that indeed I do not have |Device Description| for my NVIDIA but I do have it for my Intel.

I do however have |DriverDesc| for both, and for intel it matches the key we are checking for.

I am not able to extrapolate the expected here, but figured the hard-list of my REG here could help.
Comment 6 Ali Juma [:ajuma] 2012-02-14 11:29:58 PST
I think we should add a check for "DriverDesc" when a "Driver Description" isn't found.
Comment 7 Justin Wood (:Callek) 2012-02-16 18:16:29 PST
Created attachment 598090 [details] [diff] [review]
Implement c#6

Ali, this implements what you suggested in c#6. I have no idea if it is the RIGHT thing to do, I'll leave that to you, but functionally it should be fine. I do have yet to actually test it, and intend to do so before landing if this is fine.

If it needs review from someone else, please retarget that r?
Comment 8 Ali Juma [:ajuma] 2012-02-17 06:33:05 PST
Comment on attachment 598090 [details] [diff] [review]
Implement c#6

This is a good thing to do for avoiding false negatives when looking for a second GPU, but after it lands we'll need to keep an eye out to see if it allows false positives to sneak in again.
Comment 9 Alex Keybl [:akeybl] 2012-02-17 14:23:19 PST
What user pain does this bug cause to be considered for tracking? Have you had noticeable graphics perf regressions caused by this?
Comment 10 Ali Juma [:ajuma] 2012-02-17 14:28:06 PST
(In reply to Alex Keybl [:akeybl] from comment #9)
> What user pain does this bug cause to be considered for tracking? Have you
> had noticeable graphics perf regressions caused by this?

This has no effect on performance (since we don't use this information for blacklisting decisions), and causes no user pain other than a user being confused that their second GPU isn't listed in about:support.

I believe Justin nominated this for tracking on the basis that it could potentially make crash reports less useful, in that we'd fail to recognize that a crash report is coming from a user with a dual-GPU machine.
Comment 11 Justin Wood (:Callek) 2012-02-17 14:31:16 PST
Comment on attachment 598090 [details] [diff] [review]
Implement c#6

https://hg.mozilla.org/mozilla-central/rev/ec5493518d22

[Approval Request Comment]
Regression caused by (bug #): Bug 679110
User impact if declined: Some Legitimate GPU's missing from about:support. (maybe just not used? ajuma?)
Testing completed (on m-c, etc.): Tested locally in a quick one-off test, and just landed on m-c.
Risk to taking this patch (and alternatives if risky): Minimal, just adds an extra registry key to search for in the enumeration of Graphics Hardware eliminating extra false negatives. [Might add some false positives again, which we will merely have to watch for]
String changes made by this patch: None
Comment 12 Alex Keybl [:akeybl] 2012-02-17 14:43:29 PST
(In reply to Justin Wood (:Callek) from comment #11)
> Risk to taking this patch (and alternatives if risky): Minimal, just adds an
> extra registry key to search for in the enumeration of Graphics Hardware
> eliminating extra false negatives. [Might add some false positives again,
> which we will merely have to watch for]

Ali - is there any risk to incorrectly reporting hardware in the second GPU as opposed to not reporting it? Any other opportunities for fallout here?
Comment 13 Ali Juma [:ajuma] 2012-02-17 14:48:23 PST
(In reply to Alex Keybl [:akeybl] from comment #12)
> (In reply to Justin Wood (:Callek) from comment #11)
> > Risk to taking this patch (and alternatives if risky): Minimal, just adds an
> > extra registry key to search for in the enumeration of Graphics Hardware
> > eliminating extra false negatives. [Might add some false positives again,
> > which we will merely have to watch for]
> 
> Ali - is there any risk to incorrectly reporting hardware in the second GPU
> as opposed to not reporting it? Any other opportunities for fallout here?

No, reporting (or not reporting) a second GPU in about:support has no effect on anything else.
Comment 14 Ali Juma [:ajuma] 2012-02-17 14:53:15 PST
(In reply to Ali Juma [:ajuma] from comment #13)
> (In reply to Alex Keybl [:akeybl] from comment #12)
> > (In reply to Justin Wood (:Callek) from comment #11)
> > > Risk to taking this patch (and alternatives if risky): Minimal, just adds an
> > > extra registry key to search for in the enumeration of Graphics Hardware
> > > eliminating extra false negatives. [Might add some false positives again,
> > > which we will merely have to watch for]
> > 
> > Ali - is there any risk to incorrectly reporting hardware in the second GPU
> > as opposed to not reporting it? Any other opportunities for fallout here?
> 
> No, reporting (or not reporting) a second GPU in about:support has no effect
> on anything else.

(That is, no effect on anything other than what is reported in crash reports.)
Comment 15 Alex Keybl [:akeybl] 2012-02-21 11:40:58 PST
Comment on attachment 598090 [details] [diff] [review]
Implement c#6

[Triage Comment]
Low risk. Approved for Aurora 12 and Beta 11 in the hope that this will improve hardware reporting for crashes.
Comment 16 Justin Wood (:Callek) 2012-02-27 15:36:02 PST
https://hg.mozilla.org/releases/mozilla-beta/rev/57fb8741dfc7
Comment 17 Justin Wood (:Callek) 2012-02-28 11:30:25 PST
I didn't land on aurora yet, so unless you did thats still todo
Comment 18 Anthony Hughes (:ashughes) [GFX][QA][Mentor] 2012-03-05 16:27:52 PST
Can someone who was able to reproduce this issue please verify it is fixed in Firefox 11?
Comment 19 Justin Wood (:Callek) 2012-03-08 22:50:23 PST
(In reply to Anthony Hughes, Mozilla QA (irc: ashughes) from comment #18)
> Can someone who was able to reproduce this issue please verify it is fixed
> in Firefox 11?

I can indeed verify it is fixed, but of course I am also the patch author. If that is good enough, great!

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