Google Maps renders incorrectly on some GPUs with Core Profile |
|||||||||||||||||
Issue descriptionGoogle 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.
,
Oct 28 2016
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.
,
Oct 28 2016
+gCon Hotlist
,
Oct 28 2016
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.
,
Nov 2 2016
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.
,
Nov 3 2016
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.
,
Nov 3 2016
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.
,
Nov 3 2016
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.
,
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.
,
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
,
Nov 4 2016
,
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
,
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.
,
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.
,
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.
,
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.
,
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
,
Nov 5 2016
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.
,
Nov 6 2016
[Automated comment] Request affecting a post-stable build (M54), manual review required.
,
Nov 6 2016
Your change meets the bar and is auto-approved for M55 (branch: 2883)
,
Nov 6 2016
[Automated comment] Request affecting a post-stable build (M54), manual review required.
,
Nov 7 2016
Corentin: I'll take care of this merge.
,
Nov 7 2016
Thank you!
,
Nov 7 2016
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
,
Nov 7 2016
Merged to M55 in https://codereview.chromium.org/2482923003 and https://codereview.chromium.org/2486493002 .
,
Nov 7 2016
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?
,
Nov 7 2016
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.
,
Nov 7 2016
Approved for merging into M54
,
Nov 7 2016
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
,
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
,
Nov 7 2016
Merged to M54 in https://codereview.chromium.org/2481973002 and https://codereview.chromium.org/2479393002 . |
|||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||
Comment 1 by cwallez@chromium.org
, Oct 25 2016