Closed Bug 594877 Opened 10 years ago Closed 10 years ago

Update intel driver versions in GfxInfo blocklist

Categories

(Core :: Graphics, defect)

x86
Windows 7
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla2.0b7
Tracking Status
blocking2.0 --- betaN+

People

(Reporter: vlad, Assigned: bjacob)

References

(Blocks 2 open bugs)

Details

Attachments

(3 files, 3 obsolete files)

The GfxInfo blocklist has incorrect intel driver versions; we need to update it with correct versions, which seem to be per OS.  For intel, the driver versions seem to follow this pattern:

8.15.10.x    Win7
7.15.10.x    Vista DX10
7.14.10.x    Vista DX9
6.14.10.X    XP

So we'd need to block >= 8.15.10.0 and < 8.15.10.good, where good is whatever the good suffix is.  Same with between 7.15.10.0 and 7.15.10.x etc.  (Alternatively, we can add OS version support in to gfxinfo as well.)
blocking2.0: --- → betaN+
It is too simple : .good depends on DeviceID !!!!
Blocks: 595364
Attachment #474363 - Attachment mime type: application/xml → application/ods
Could you give me the source URL for this compliance matrix?
Assignee: nobody → bjacob
The source URL are indicated at the end of each sheet :
* DeviceID : http://en.wikipedia.org/wiki/Intel_GMA
* Driver version : intel.com, more accurately http://downloadcenter.intel.com/default.aspx?iid=gg_support-EN_01+home_downloadctr, then select Graphics, finally select manually each graphic card type, each OS (hard work).

Nota bene :
* In DeviceID sheet, "946 1" must be replaced by "945 2", and "947 1" by "945 3"
* Now the latest graphic driver version for GMA x4500y/HD is .2202, but I think it is a good idea to freeze the intel matrix in order to allow the latest and the previous versions of the recent graphic cards.
Ah, thanks. But what do you mean by compliance? Compliance with what?

Is it the case, that you put in this matrix the latest available versions of these drivers as of today? Would the rationale be that we don't want to use old drivers as they might be unstable?
Attached patch Update intel driver blocklist (obsolete) — Splinter Review
Here's a patch. Please check for compilation on windows, I only checked the relevant part of this file isolatedly on linux.

Changed GfxDriverInfo to store a Windows version and a zero-terminated list of device IDs.
Attachment #475450 - Flags: review?(vladimir)
I will be more generic than a graphic driver version issue :First, HW acceleration (D2D, DW, D3D, WebGL) must be enabled according to HW graphic card capabilities.Intel has several kinds of HW graphic cards : 500 series, 900 series, 950 series, 3000 series, 3100 seris, 3150 series, 3500 series, 4500 series, HD series.I think among these cards some of them can support no acceleration or partial acceleration (D3D only, webgl only) and others can support complete acceleration.So a first selection must be done according to DeviceID.Once, HW selection is done, a check on Intel driver version can be done according to the attached intel matrix.8.15.10.1930 is stable for 3000 series, but unstable to 4500 series.
Can you have a look at the patch I just attached and tell me if the blocking logic is OK? I have implemented the logic that for each deviceID and Windows version, if the driver version is lower than what you put in the matrix, all capabilities are blocked. Does that need to be more fine grained (e.g. blocking only D3D, etc?) In addition, I have kept existing logic making OpenGL "not recommended" on intel graphics.
FWIK, D2D/DW is an API that exist only in Win Vista and +. It must be disabled for previous OS for every graphic card. But may be it is already done in other parts of code. For D3D and webgl, i have no clue. Ask Bas for that.

Replace deviceFamilyIntelGMAX4500 by deviceFamilyIntelGMAX4500HDGraphics.

For Intel graphic card that does not exist yet, add a new device family deviceFamilyIntelDummy that has 0xFFFF as mask and that matches the same driver version as deviceFamilyIntelGMAX4500HDGraphics.

For Windows 2000, block all features.

For Windows 8 and upper (anything about 6.1), use the Windows 7 match.
Blocks: 596431
Comment on attachment 475450 [details] [diff] [review]
Update intel driver blocklist

s/IMPLEMENT_INTEL_COMPLIANCE_MATRIX/BLOCK_INTEL_DRIVER_LESS_THAN/; "implement the compliance matrix" doesn't really have any meaning.  Also keep the comment that explains why we're blocking those devices (specifically the D2D crash with the MS hotfix installed).

I like the zero-terminated change, but in that case there's no need to have separate static entries for each device ID -- just put the values directly into the arrays.  Looks great other than that.
(In reply to comment #10)
> FWIK, D2D/DW is an API that exist only in Win Vista and +. It must be disabled
> for previous OS for every graphic card. But may be it is already done in other
> parts of code. For D3D and webgl, i have no clue. Ask Bas for that.

Yes, this is already handled. We need only take care of driver-specific issues here.

> 
> Replace deviceFamilyIntelGMAX4500 by deviceFamilyIntelGMAX4500HDGraphics.

OK.

> 
> For Intel graphic card that does not exist yet, add a new device family
> deviceFamilyIntelDummy that has 0xFFFF as mask and that matches the same driver
> version as deviceFamilyIntelGMAX4500HDGraphics.

OK. I don't know that I have a way to tell the difference between a device that doesn't exist yet, and a super old device that's too old to be on our list. But since this approach means that we would require a recent driver in that case, it would block old devices anyway.

> 
> For Windows 2000, block all features.

Letting others decide here, not feeling competent.

> 
> For Windows 8 and upper (anything about 6.1), use the Windows 7 match.

OK.
(In reply to comment #11)
> Comment on attachment 475450 [details] [diff] [review]
> Update intel driver blocklist
> 
> s/IMPLEMENT_INTEL_COMPLIANCE_MATRIX/BLOCK_INTEL_DRIVER_LESS_THAN/; "implement
> the compliance matrix" doesn't really have any meaning.  Also keep the comment
> that explains why we're blocking those devices (specifically the D2D crash with
> the MS hotfix installed).

OK

> 
> I like the zero-terminated change, but in that case there's no need to have
> separate static entries for each device ID -- just put the values directly into
> the arrays.  Looks great other than that.

Actually this is how I initially wrote it, but I figured that writing the actual device names would help a lot maintain this file in the future. Otherwise, e.g. if there's a mistake somewhere or if we need to make a tweak, we'll have a hard time reading hex values.
Attached patch Update intel driver blocklist (obsolete) — Splinter Review
Here's the new patch.

After all I haven't done anything about Windows 8 because gfxWindowsPlatform.h doesn't know about it and I was lazy to find out the right hex value. Feel free.

Also made it all const.

Tested on Windows/MSVC 2010. Going back to linux now. "So long and thanks for all the fish".
Attachment #475450 - Attachment is obsolete: true
Attachment #475673 - Flags: review?(vladimir)
Attachment #475450 - Flags: review?(vladimir)
(In reply to comment #13)
> (In reply to comment #11)
> > 
> > I like the zero-terminated change, but in that case there's no need to have
> > separate static entries for each device ID -- just put the values directly into
> > the arrays.  Looks great other than that.
> 
> Actually this is how I initially wrote it, but I figured that writing the
> actual device names would help a lot maintain this file in the future.
> Otherwise, e.g. if there's a mistake somewhere or if we need to make a tweak,
> we'll have a hard time reading hex values.

...
   0xabcd,   // Intel GMA 4500 Fancypants HD
...

?  Should definitely keep the device names, but they can go in a comment.
Comment on attachment 475673 [details] [diff] [review]
Update intel driver blocklist

Move the hex values in the arrays please; this has the potential for getting very large, and I'd rather have things consolidated as much as possible.
Here you go. Don't know why I didn't think about this.
Attachment #475673 - Attachment is obsolete: true
Attachment #475686 - Flags: review?(vladimir)
Attachment #475673 - Flags: review?(vladimir)
Attachment #475686 - Flags: review?(vladimir) → review+
If someone wants this pushed quick, can you please push it for me?

    Benoit Jacob <bjacob@mozilla.com>

Don't know when's the next time I push stuff.
Keywords: checkin-needed
GMA 4500MHD 1 & 2 miss. Please add them.
Thanks a lot for catching this.

Also made it an actual changeset ready to push.

Carrying forward r+.
Attachment #475686 - Attachment is obsolete: true
Attachment #475771 - Flags: review+
Blocks: 594025
Attachment #475686 - Attachment is obsolete: false
http://hg.mozilla.org/mozilla-central/rev/de02d0483a7f
Status: NEW → RESOLVED
Closed: 10 years ago
Keywords: checkin-needed
Resolution: --- → FIXED
Target Milestone: --- → mozilla2.0b7
i don;t know about programming but Χ3100 (GMA965) supports full DX10 and has hardware TL engine.
(In reply to comment #22)
> i don;t know about programming but Χ3100 (GMA965) supports full DX10 and has
> hardware TL engine.

We're not blocking it. We're only requiring a recent enough driver version.
(In reply to comment #23)
> (In reply to comment #22)
> > i don;t know about programming but Χ3100 (GMA965) supports full DX10 and has
> > hardware TL engine.
> 
> We're not blocking it. We're only requiring a recent enough driver version.

the latest driver for GMA965 is  8.15.10.1930 (for both 32 and 64 bits)
right now with today's minefield i have full D2D/D3D accelaration with GMA965 and  8.15.10.1930 in windows 7
(In reply to comment #24)
> (In reply to comment #23)
> > (In reply to comment #22)
> > > i don;t know about programming but Χ3100 (GMA965) supports full DX10 and has
> > > hardware TL engine.
> > 
> > We're not blocking it. We're only requiring a recent enough driver version.
> 
> the latest driver for GMA965 is  8.15.10.1930

Right, that's what we are now requiring.
According to comment 24 of bug 594025, D2D/DW is not enabled for G965 chipset with the latest graphic driver for GMA X3000 series (8.15.10.1930) but it should be.
I am wondering if it is not a side effect of the match of a DeviceID that does not exist yet (0 in deviceFamilyIntelGMAX4500HD) that overwrite the match of any others previous series (deviceFamilyIntelGMAX3000 in that case).
According to me, a new bug must be filled for old Intel card.
Benoit, am I right ?
The 0 is special-cased in this line:  for (const PRUint32 *devices = info->devices; *devices; ++devices) {here, if *devices = 0, we exit the for loop.So if GMA X3000 is blocked with driver version 8.15.10.1930, that's indeed a bug, and indeed it would be good to file a new bug about it. From a look at my code, I can't find where my mistake would be. I also don't have intel hardware to test. Ideally we need someone with intel hardware to set a breakpoint there and step through this code to see where it's going wrong.
See patch attached to bug 585832
Just thought I'd add that while my drivers have been blacklisted. My HA was working properly after one or two issues.
Is there a way I can bypass the blocklist so as to test and report on the compatibility of custom drivers like those from http://9xxssf.info/downloads/ ("alpha" and "sigma") and http://groups.google.com/group/intel9x-gaming/browse_thread/thread/b32142d1e2934bfc/c83088d635f31ad5?q=sherry&lnk=ol&  ("Sherry 1.2" with a custom driver version string) ?
You can by-pass the Intel driver blocklisting:
* D2D feature : set gfx.direct2d.force-enabled to true
* DW feature : set gfx.font_rendering.directwrite.enabled to true
It is at your own risk because you are not protected against some kinds of crash.
Can't do. "GPU Accelerated Windows" is 0/1. "Direct2D Enabled" is false. Are there any other settings I can toggle?
> Can't do. "GPU Accelerated Windows" is 0/1. "Direct2D Enabled" is false. Are
> there any other settings I can toggle?
No. You must file a bug for D2D and DW that can not be forced.
I'm looking forward to seeing Intel chipsets being taken off the blocklist if custom drivers can complete or update the necessary feature sets for hardware acceleration in Firefox.
(In reply to comment #33)
> > Can't do. "GPU Accelerated Windows" is 0/1. "Direct2D Enabled" is false. Are
> > there any other settings I can toggle?
> No. You must file a bug for D2D and DW that can not be forced.

Indeed... while there is currently no way of forcing layers.accelerate, you should definitely have been able to force D2D and DW with these prefs.

The fact that it's still disabled for you seems to mean there's either a deeper problem in your graphics setup, or a bug in our code, so it's trying to use e.g. D2D and fails to.
How about this bug https://bugzilla.mozilla.org/show_bug.cgi?id=604771 ? Is there also a blocklist for older ATi cards like the 9550 on the legacy 10.2 drivers?
I'm using the 945GM with the latest .1930 drivers. Is this chipset completely blacklisted?
> How about this bug https://bugzilla.mozilla.org/show_bug.cgi?id=604771 ? 
bug 604771 is an enhancement for developers to help debugging issues with blacklisting of drivers and devices.

> Is there also a blocklist for older ATi cards like the 9550 on the legacy 10.2
> drivers?
There is no known crash that is related to out-of-date drivers from ATI or Nvidia. So blacklisting is not necessary for the moment.

> I'm using the 945GM with the latest .1930 drivers. Is this chipset completely
> blacklisted?
Now, this information is available in the graphic section of the "about:support" page.
945GM is a DX9c card, graphic driver 8.15.10.1930 is for DX9c cards. So it is not blacklisted. Only DX10 cards that use this graphic driver are blacklisted.
File a new bug if you have D2D disabled with a new profile.
D2D is supposed to be disabled for Dx9c chipsets like the 945GM. However, accelerated windows is supposed to still be possible. Interestingly, I created a new profile for the computer with ATi 9550 and acceleration remains completely off. I noticed that Video RAM for both cards are shown as Unknown, can that be part of the problem?

Are there any news on extending the allowed driver versions to custom drivers? How much testing is needed by the developers and users for this?
Shaun,
I think it is time to file one or several bugs and not spamming this one that it is fixed.
(In reply to comment #40)
> Shaun,
> I think it is time to file one or several bugs and not spamming this one that
> it is fixed.

I agree :) so this is the last reply that I write here.

(In reply to comment #38)
> Now, this information is available in the graphic section of the
> "about:support" page.
> 945GM is a DX9c card, graphic driver 8.15.10.1930 is for DX9c cards. So it is
> not blacklisted. Only DX10 cards that use this graphic driver are blacklisted.

Actually that's not the case, we do have driver version blacklist for all intel cards, not only for DX10 cards.

With Intel 945GM, the minimum driver versions are:
 - on win vista: 7.14.10.1504
 - on win 7: 8.15.10.1930

(In reply to comment #36)
> How about this bug https://bugzilla.mozilla.org/show_bug.cgi?id=604771 ?

Yes, this allows you to circumvent/ignore/spoof the blacklisting. Watch this bug for when the patch will be landed. Instructions given there.

> Is
> there also a blocklist for older ATi cards like the 9550 on the legacy 10.2
> drivers?

There is currently no driver blocklist for ATI cards (we need one).
(In reply to comment #38)
> File a new bug if you have D2D disabled with a new profile.

Just filed a tightly related issue (bug 605053) where I'm hoping we can start
hunting this (weird) things down. ;-)
I forgot to tell something important! Since the landing of bug 604771, you can now circumvent the blocklists. Instructions are given in that bug, but the short version is that just doing

   MOZ_GFX_SPOOF_VENDOR_ID=0 firefox

in a terminal ("command line prompt"), i.e. running firefox with the environment variable MOZ_GFX_SPOOF_VENDOR_ID set to 0, will cause the whole blacklist to be ignored.
The following commands (fresh profile used)

   E:\Minefield> set MOZ_GFX_SPOOF_VENDOR_ID=0
   E:\Minefield> firefox.exe -p Minefield -no-remote

leads to following result in about:support

---------------------------------------------------------
  Graphics
        Adapter Description
        Intel(R)  G965 Express Chipset Family

        Vendor ID
        0000

        Device ID
        29a2

        Adapter RAM
        Unknown

        Adapter Drivers
        igdumd64 igdumdx32

        Driver Version
        8.15.10.1930

        Driver Date
        9-23-2009

        Direct2D Enabled
        false

        DirectWrite Enabled
        false

      GPU Accelerated Windows
      1/1 Direct3D 9
------------------------------------------------------

From visual inspection, Direct2D is still not working, so I guess the issue is not related to driver block-list, at least on G965/x3000. The firefox version used was 
  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b8pre) Gecko/20101116 Firefox/4.0b8pre
Blocks: 601079
You need to log in before you can comment on or make changes to this bug.