New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 659030 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Closed: Nov 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 1
Type: Bug



Sign in to add a comment

Google Maps renders incorrectly on some GPUs with Core Profile

Project Member Reported by cwallez@chromium.org, Oct 25 2016

Issue description

Google Maps rendering is broken on Mesa Optimus for the following GPU info:
GL_VENDOR       Intel Open Source Technology Center
GL_RENDERER     Mesa DRI Intel(R) Skylake ULT GT2
GL_VERSION      3.3 (Core Profile) Mesa 11.0.2

We agreed to not try using a core profile on this configuration.

See b/32369088 for the original report.
 
Here's a patch that should fix this except that:
 - I have not tested it because I don't have access to a Linux box
 - The added include violates checkdeps
https://codereview.chromium.org/2446103002

Mo can you TAL?

Comment 2 by kbr@chromium.org, Oct 28 2016

Cc: vmi...@chromium.org
Let's please work to get this blacklist entry added ASAP. Apparently Google Maps is broken for a lot of Linux users with Optimus chipsets.

Labels: Hotlist-ConOps
+gCon Hotlist
Cc: cwallez@chromium.org
Owner: zmo@chromium.org
Someone need to pick up the CL in comment 1, I don't have a Linux box for the next 10 days. Tentatively assigning Mo.

Comment 5 by kbr@chromium.org, Nov 2 2016

Cc: dongseon...@intel.com reed@chromium.org bsalomon@chromium.org
Components: Internals>Skia Blink>WebGL
Owner: vmi...@chromium.org
Status: Assigned (was: Available)
We tested switching back to the Compatibility Profile and it didn't seem to work on the reporter's machine.

There's a report that color channels are swizzled in top-of-tree Chrome on some users' installations:

https://productforums.google.com/forum/#!topic/maps/9hqk0kEVwrs

Were there changes to Skia's or the compositor's behavior in M54? Dongseong, could your CMAA patches have affected the behavior?

more reports of similar issues:

https://productforums.google.com/forum/#!category-topic/maps/linux/chrome/xgkeEKd6MSk
https://productforums.google.com/forum/#!category-topic/maps/linux/chrome/q8G5ZpeCLNA

One user reports their GPU is:
Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller

I don't know what HD version that corresponds to.

Victor, could we find Mo some help reproducing this problem? We can't reproduce it in house with the Linux laptop we have.

Comment 6 by kbr@chromium.org, Nov 3 2016

Owner: cwallez@chromium.org
Summary: Google Maps renders incorrectly on some GPUs with Core Profile (was: Incorrect rendering on Mesa Optimus)
Received several about:gpu pages on this thread:

https://productforums.google.com/forum/#!category-topic/maps/linux/CqvELpJgaxI

Analyzing the about:gpu feedback, here are the affected devices:

GL_VENDOR:
Intel Open Source Technology Center
GL_RENDERER:
Mesa DRI Intel(R) Sandybridge Mobile
Mesa DRI Intel(R) Sandybridge Desktop
DEVICE:
0x0102
0x0116
0x0126

Also, Optimus machines (but the problem is really that the Intel GPU's being used for the rendering):
GPU0 VENDOR = 0x10de, DEVICE= 0x1051
GPU1 VENDOR = 0x8086, DEVICE= 0x0116 *ACTIVE*

GL_RENDERER:
Mesa DRI Intel(R) Ivybridge Mobile
3.1 (Core Profile) Mesa 9.2.5
DEVICE:
0x0166


VENDOR = 0x1002, DEVICE= 0x9832
GL_VENDOR:
X.Org
GL_RENDERER:
Gallium 0.4 on AMD KABINI
GL_VERSION:
3.1 (Core Profile) Mesa 10.1.3

So, to summarize:

Intel GPUs: 0x0102, 0x0116, 0x0126
AMD GPUs: 0x9832

We are implementing a new driver bug workaround in Chrome that allows fallback to the old context creation code path, i.e., the OpenGL compatibility profile rather than the Core Profile. These devices will be added to that workaround list.

cwallez@ said he'd own this bug. Reassigning.

Comment 7 by kbr@chromium.org, Nov 3 2016

Cc: yang...@intel.com yunchao...@intel.com qiankun....@intel.com
Components: -Internals>GPU -Internals>Skia Internals>GPU>VendorSpecific
Labels: -GPU-NVidia
Yang, Yunchao, Qiankun: we plan to disable the use of the Core Profile on Intel GPUs with PCI device IDs:
0x0102
0x0116
0x0126
0x0166

Please tell us as soon as possible if you feel that this will be too broad a blacklist. If it is, then we will need your help to identify why Google Maps' labels are rendering incorrectly with the Core Profile on these GPUs, and to develop a fix.

Cc: ligim...@chromium.org bustamante@chromium.org
Labels: ReleaseBlock-Stable M-54
Thanks for all the updates. 

We are planning to respin M54-stable soon. Does anyone think that we should have the blacklist entry added before we ship the build?

Tagging with an RB label for tracking purpose.

Comment 9 by yang...@intel.com, Nov 4 2016

What's Optimus? Is it a way for GPU switching between discrete and integrated GPU automatically?
I read through all the descriptions here and in some bug reports, my current thinking is:
1. 0x0102, 0x0116 and 0x0126 are Sandy Bridge GPU (GEN 6, year 2011), while 0x0166 is Ivy Bridge GPU (GEN 7, year 2012). These are old GPUs, however, the comment #1 is for Skylake (GEN 9, year 2015). So this problem seems not limited to old GPUs.
2. Comment #5 mentioned the problem couldn't be solved with compatibility profile. So what's your solution for blacklist?

We will start to investigate this right now. The first problem is how to repro this. We will update here once we have some findings. 
Project Member

Comment 10 by bugdroid1@chromium.org, Nov 4 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e8b4248621c4ed428eec4036f4918185cea23cd6

commit e8b4248621c4ed428eec4036f4918185cea23cd6
Author: cwallez <cwallez@chromium.org>
Date: Fri Nov 04 04:59:58 2016

gl_context_glx: add workaround to create default context

On old Mesa and hardware combos, creating the highest context version
possible leads to incorrect rendering in WebGL. Add a workaround to
fallback to creating a default context.

BUG= 659030 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2467103003
Cr-Commit-Position: refs/heads/master@{#429786}

[modify] https://crrev.com/e8b4248621c4ed428eec4036f4918185cea23cd6/content/browser/gpu/gpu_data_manager_impl_private.cc
[modify] https://crrev.com/e8b4248621c4ed428eec4036f4918185cea23cd6/content/browser/gpu/gpu_process_host.cc
[modify] https://crrev.com/e8b4248621c4ed428eec4036f4918185cea23cd6/gpu/config/gpu_driver_bug_list_json.cc
[modify] https://crrev.com/e8b4248621c4ed428eec4036f4918185cea23cd6/gpu/config/gpu_driver_bug_workaround_type.h
[modify] https://crrev.com/e8b4248621c4ed428eec4036f4918185cea23cd6/ui/gl/gl_context_glx.cc
[modify] https://crrev.com/e8b4248621c4ed428eec4036f4918185cea23cd6/ui/gl/gl_switches.cc
[modify] https://crrev.com/e8b4248621c4ed428eec4036f4918185cea23cd6/ui/gl/gl_switches.h

Cc: eranm@chromium.org

Comment 12 by yang...@intel.com, Nov 4 2016

Updates:
1. I can repro the issue, so I bisected it and found the commit introducing it is (r404697, r404702]. Though no more build from Google server is in between, I think the problem is r404698 (GLContextGLX: try all GL versions from the highest).
2. The commit in comment 10 couldn't fix the issue at my side.
3. I can repro the issue on a Sandy Bridge machine (GPU ID 0x0162) with core profile 3.1, however I couldn't repro it on a Skylake machine with same driver (It seemed to me the old driver couldn't work well with Skylake GPU as the glxinfo reported the incorrect info and Chrome used software rendering). I may have a try with other generation of Intel GPU later.
4. I tried Sandy Bridge with GPU ID 0x0102 (one of configurations reported the issue) on Ubuntu 14.04.5 (Mesa 11.2.0, core profile 3.3), everything is OK. So a solution is to upgrade the Mesa to be core profile >= 3.3.
5. You may follow below steps to repro the issue
a. Download the old Mesa binary that I built from source (commit "e58c2310b845ca809bb99d5fcdab909ff8598c28") as attached.
b. Untar it to <path>
c. Issue below command
VER=mesa-master-release-58000-e58c2310b845ca809bb99d5fcdab909ff8598c28 LD_LIBRARY_PATH=<path>/$VER/lib LIBGL_DRIVERS_PATH=<path>/$VER/lib/dri <path_to_chrome> https://maps.google.com


mesa-master-release-58000-e58c2310b845ca809bb99d5fcdab909ff8598c28.tar.gz
13.2 MB Download

Comment 13 by yang...@intel.com, Nov 4 2016

The fix couldn't work at my side is simply because my GPU ID (0x0162) is not in the workaround list. I added it and the fix can work well now.
But I just had a test on a Haswell machine (GPU ID 0x0412), with the old driver, the problem also exists. 
So It seems the workaround with a set of GPU IDs is not a good idea. According to current tests, SandyBridge, IvyBridge and HasWell all have the problem with core profile 3.1. The reasonable fix to me is to check the core profile version, then create context in different ways. 
Now we know core profile 3.3 is good, while 3.1 is bad. I will try to check the status of other core profile versions. But according to "chrome://gpu" info at https://productforums.google.com/forum/#!category-topic/maps/linux/CqvELpJgaxI, all the issues came from core profile 3.1. So a quick fix now seems to just workaround core profile 3.1.

Comment 14 by kbr@chromium.org, Nov 4 2016

Yang: could you please test https://codereview.chromium.org/2471883007/ locally and see whether it works around the problem? We would appreciate the testing help.

Comment 15 by yang...@intel.com, Nov 4 2016

Yes, https://codereview.chromium.org/2471883007/ fixes the issue. I noticed the GL_VERSION turned to "3.0 Mesa 9.3.0-devel (git-e58c231)" from "3.1 (Core Profile) Mesa 9.3.0-devel (git-e58c231)".
BTW, I tested Mesa core profile 3.2 (commit f118fc26e14b460e1dfb735892b1627948f592fc), and it also has no problem. I'm not sure if there is a real release for core profile 3.2 Mesa, as there are very few commits (less than 500) between 3.1 and 3.3. 
I still met some problems to build Mesa with core profile < 3.1. I solved a problem that has to use bison 2.7 instead of 3.0, but seems the build is still broken. If your patch is in good shape, I can just stop here. 

Comment 16 by kbr@chromium.org, Nov 4 2016

Thanks Yang for verifying. I'm CQ'ing https://codereview.chromium.org/2471883007/ ; not necessary for you to do any further testing. Thanks.

Project Member

Comment 17 by bugdroid1@chromium.org, Nov 5 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/79d13b8fa8301665906bfdd7de27643c8b411502

commit 79d13b8fa8301665906bfdd7de27643c8b411502
Author: kbr <kbr@chromium.org>
Date: Sat Nov 05 01:16:06 2016

Don't use OpenGL context versions between 3.0 and 3.2 on Mesa.

Compatibility problems have been seen with the 3.1 Core Profile
context.

Remove the earlier device ID-based workarounds, but leave in the code
for the create_default_gl_context workaround.

BUG= 659030 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2471883007
Cr-Commit-Position: refs/heads/master@{#430114}

[modify] https://crrev.com/79d13b8fa8301665906bfdd7de27643c8b411502/gpu/config/gpu_driver_bug_list_json.cc
[modify] https://crrev.com/79d13b8fa8301665906bfdd7de27643c8b411502/ui/gl/gl_context_glx.cc

Comment 18 by kbr@chromium.org, Nov 5 2016

Labels: Merge-Request-54 Merge-Request-55
Status: Fixed (was: Assigned)
Closing as fixed and marking Merge-Requested. This should definitely be merged to M55; not so sure about merging it (79d13b8fa8301665906bfdd7de27643c8b411502 , at this point) back to Stable. (Would be a manual merge)

Corentin, I'm happy to help with the merges.

Comment 19 by dimu@chromium.org, Nov 6 2016

Labels: -Merge-Request-54 Merge-Review-54 Hotlist-Merge-Review
[Automated comment] Request affecting a post-stable build (M54), manual review required.

Comment 20 by dimu@chromium.org, Nov 6 2016

Labels: -Merge-Request-55 Merge-Approved-55 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M55 (branch: 2883)

Comment 21 by dimu@chromium.org, Nov 6 2016

Labels: -Merge-Request-54 Merge-Review-54 Hotlist-Merge-Review
[Automated comment] Request affecting a post-stable build (M54), manual review required.

Comment 22 by kbr@chromium.org, Nov 7 2016

Corentin: I'll take care of this merge.

Thank you!
Project Member

Comment 24 by bugdroid1@chromium.org, Nov 7 2016

Labels: -merge-approved-55 merge-merged-2883
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4f902187c98d296e6184b9c767712290d0492931

commit 4f902187c98d296e6184b9c767712290d0492931
Author: Kenneth Russell <kbr@chromium.org>
Date: Mon Nov 07 20:06:15 2016

Don't use OpenGL context versions between 3.0 and 3.2 on Mesa.

Compatibility problems have been seen with the 3.1 Core Profile
context.

Remove the earlier device ID-based workarounds, but leave in the code
for the create_default_gl_context workaround.

BUG= 659030 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2471883007
Cr-Commit-Position: refs/heads/master@{#430114}
(cherry picked from commit 79d13b8fa8301665906bfdd7de27643c8b411502)

Review URL: https://codereview.chromium.org/2486493002 .

Cr-Commit-Position: refs/branch-heads/2883@{#483}
Cr-Branched-From: 614d31daee2f61b0180df403a8ad43f20b9f6dd7-refs/heads/master@{#423768}

[modify] https://crrev.com/4f902187c98d296e6184b9c767712290d0492931/gpu/config/gpu_driver_bug_list_json.cc
[modify] https://crrev.com/4f902187c98d296e6184b9c767712290d0492931/ui/gl/gl_context_glx.cc

We are planning to cut Stable RC at 4.00 PM PST today ( Monday - 11/07) and taking only CRITICAL fixes.

Ken/ Corentin,  Is this a critical fix which needs to be merged to M54?

Comment 27 by kbr@chromium.org, Nov 7 2016

Status: Verified (was: Fixed)
This was a pretty serious regression of a major product (Google Maps). The risk of further regressions with the fix is very low. I would support getting the fix out there sooner rather than later, knowing that Chrome 55 won't be released for another month.

Labels: -Merge-Review-54 Merge-Approved-54
Approved for merging into M54
Project Member

Comment 29 by bugdroid1@chromium.org, Nov 7 2016

Labels: -merge-approved-54 merge-merged-2840
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/84059adde3bf2263c0bf554d8dfbaac91a99ae70

commit 84059adde3bf2263c0bf554d8dfbaac91a99ae70
Author: Kenneth Russell <kbr@chromium.org>
Date: Mon Nov 07 23:32:17 2016

gl_context_glx: add workaround to create default context

On old Mesa and hardware combos, creating the highest context version
possible leads to incorrect rendering in WebGL. Add a workaround to
fallback to creating a default context.

BUG= 659030 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2467103003
Cr-Commit-Position: refs/heads/master@{#429786}
(cherry picked from commit e8b4248621c4ed428eec4036f4918185cea23cd6)

Review URL: https://codereview.chromium.org/2481973002 .

Cr-Commit-Position: refs/branch-heads/2840@{#826}
Cr-Branched-From: 1ae106dbab4bddd85132d5b75c670794311f4c57-refs/heads/master@{#414607}

[modify] https://crrev.com/84059adde3bf2263c0bf554d8dfbaac91a99ae70/content/browser/gpu/gpu_data_manager_impl_private.cc
[modify] https://crrev.com/84059adde3bf2263c0bf554d8dfbaac91a99ae70/content/browser/gpu/gpu_process_host.cc
[modify] https://crrev.com/84059adde3bf2263c0bf554d8dfbaac91a99ae70/gpu/config/gpu_driver_bug_list_json.cc
[modify] https://crrev.com/84059adde3bf2263c0bf554d8dfbaac91a99ae70/gpu/config/gpu_driver_bug_workaround_type.h
[modify] https://crrev.com/84059adde3bf2263c0bf554d8dfbaac91a99ae70/ui/gl/gl_context_glx.cc
[modify] https://crrev.com/84059adde3bf2263c0bf554d8dfbaac91a99ae70/ui/gl/gl_switches.cc
[modify] https://crrev.com/84059adde3bf2263c0bf554d8dfbaac91a99ae70/ui/gl/gl_switches.h

Project Member

Comment 30 by bugdroid1@chromium.org, Nov 7 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c8cde5d53de5adfe7c4cc91df7e97c66cd5518da

commit c8cde5d53de5adfe7c4cc91df7e97c66cd5518da
Author: Kenneth Russell <kbr@chromium.org>
Date: Mon Nov 07 23:50:29 2016

Don't use OpenGL context versions between 3.0 and 3.2 on Mesa.

Compatibility problems have been seen with the 3.1 Core Profile
context.

Remove the earlier device ID-based workarounds, but leave in the code
for the create_default_gl_context workaround.

BUG= 659030 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2471883007
Cr-Commit-Position: refs/heads/master@{#430114}
(cherry picked from commit 79d13b8fa8301665906bfdd7de27643c8b411502)

Review URL: https://codereview.chromium.org/2479393002 .

Cr-Commit-Position: refs/branch-heads/2840@{#827}
Cr-Branched-From: 1ae106dbab4bddd85132d5b75c670794311f4c57-refs/heads/master@{#414607}

[modify] https://crrev.com/c8cde5d53de5adfe7c4cc91df7e97c66cd5518da/gpu/config/gpu_driver_bug_list_json.cc
[modify] https://crrev.com/c8cde5d53de5adfe7c4cc91df7e97c66cd5518da/ui/gl/gl_context_glx.cc

Sign in to add a comment