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

Issue 682075 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug

Blocked on:
issue 449116
issue 471200
issue 674357
issue 696059

Blocking:
issue 682753
issue 696126
issue 698197
issue 716378
issue 756178
issue 906892


Show other hotlists

Hotlists containing this issue:
Hotlist-1


Sign in to add a comment

Remove disable_chromium_framebuffer_multisample/disable_depth_texture on newer Qualcomm

Project Member Reported by kainino@chromium.org, Jan 18 2017

Issue description

disable_chromium_framebuffer_multisample: This old workaround is probably causing crashes in the WebGL 2 conformance suite.

These tests are likely victims:
conformance2/extensions/ext-color-buffer-float.html
deqp/functional/gles3/fboinvalidate/{whole,sub}.html
conformance2/rendering/blitframebuffer-filter-outofbounds.html

We should see what happens on a new device (Pixel) without this workaround in place.

zmo, assigning this to you. Let me know if there is anything I can help with.
 
Blocking: 682753
Owner: kainino@chromium.org
I'm going to make this the bug for also removing disable_depth_texture on newer Qualcomm.
Summary: Remove disable_chromium_framebuffer_multisample/disable_depth_texture on newer Qualcomm (was: Try removing disable_chromium_framebuffer_multisample on newer Qualcomm)
Description: Show this description
Project Member

Comment 4 by bugdroid1@chromium.org, Feb 24 2017

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

commit 5fa975c1785e2a47c96471691447846d1be8b51d
Author: kainino <kainino@chromium.org>
Date: Fri Feb 24 04:08:32 2017

Disable some old Qualcomm workarounds on new Android

Workarounds disable_depth_texture and disable_chromium_framebuffer_multisample were added for old Qualcomm devices but work correctly on newer devices and are needed for WebGL 2.

This also un-disables GL_OES_depth_texture on these platforms.

Test note: The change in availability of MSAA causes the tests to access a different (currently non-existent) set of reference images on Qualcomm bots (_msaa.png to _non_msaa.png). This CL effectively creates a new configuration - which is why the tests do not need revisions incremented.

BUG= 682075 , 682753 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel;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/2707623002
Cr-Commit-Position: refs/heads/master@{#452748}

[modify] https://crrev.com/5fa975c1785e2a47c96471691447846d1be8b51d/content/test/gpu/gpu_tests/pixel_expectations.py
[modify] https://crrev.com/5fa975c1785e2a47c96471691447846d1be8b51d/gpu/config/gpu_driver_bug_list_json.cc
[modify] https://crrev.com/5fa975c1785e2a47c96471691447846d1be8b51d/gpu/config/software_rendering_list_json.cc

Comment 5 by amp@chromium.org, Feb 25 2017

Cc: klausw@chromium.org amp@chromium.org
FYI, https://codereview.chromium.org/2707623002 breaks WebGL rendering on some three.js examples.  I verified after bisecting since we noticed it today.

For instance https://threejs.org/examples/webgl_lines_sphere.html only renders in the lower left corner.

Some are fine though, such as:
https://threejs.org/examples/webgl_lines_cubes.html

Other examples seem to vary on if they work or not.


This also breaks WebVR samples pages at https://webvr.info/samples/03-vr-presentation.html

Let me know if you want a new bug for this.  I added it here because comment #1 refers to trying it out to see what happens. :)

Comment 6 by amp@chromium.org, Feb 25 2017

Forgot to mention that we only checked this on Pixel and Pixel XL.  We haven't checked on older devices.
Thanks for the report! I'll try to repro and may revert.

Comment 8 by kbr@chromium.org, Feb 25 2017

Blockedon: 696059
Cc: bajones@chromium.org ericrk@chromium.org
Kai and I have investigated this failure and found that something appears wrong with the explicit framebuffer resolve code path in WebGL's DrawingBuffer.cpp on Qualcomm GPUs. When the EXT_multisampled_render_to_texture extension is disabled (it is being re-enabled in  Issue 696059 ), DrawingBuffer uses multisampled renderbuffers and an explicit BlitFramebuffer call to implement its antialiasing. Something's broken in this code path on Qualcomm GPUs.

The associated WebGL 2.0 conformance tests don't seem to be broken, so it's possible that there's a bug in how Chrome resolves its multisampled back buffer, or a bug in the driver that's being triggered only by Three.js's shaders or API calls.

The same bug doesn't happen on an NVIDIA SHIELD tablet, which uses the explicit resolve path (it doesn't support EXT_multisampled_render_to_texture).

As it happens, this bug will be hidden again by https://crrev.com/5dcf3589e69f5511ded5a0180da2ddb00db23234 , but we need to get to the bottom of it. Kai will file a follow-on bug to this one with one of the broken Three.js examples attached (in case threejs.org changes) and explanation of how to trigger it (disabling the EXT_multisampled_render_to_texture extension on Qualcomm). It'll take some time to reduce the test case and produce a WebGL conformance test for it.

Comment 9 by kbr@chromium.org, Feb 25 2017

Also: it's reproducible on both a Pixel (Adreno 500 series) and Nexus 6P (Adreno 400 series), both running Android 7.1.1, so whatever the bug is, it affects multiple chipsets.

Labels: -Pri-2 Pri-1
Blocking: 696126
Status: Fixed (was: Assigned)
Project Member

Comment 13 by bugdroid1@chromium.org, Mar 23 2017

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

commit 4ea0b4441fd5f3a083fe3d93716721e80603356e
Author: kainino <kainino@chromium.org>
Date: Thu Mar 23 21:36:20 2017

Clean up pixel test failure expectations

from http://crrev.com/2707623002

BUG= 682075 ,  682753 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel;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/2706243005
Cr-Commit-Position: refs/heads/master@{#459232}

[modify] https://crrev.com/4ea0b4441fd5f3a083fe3d93716721e80603356e/content/test/gpu/gpu_tests/pixel_expectations.py

Project Member

Comment 14 by bugdroid1@chromium.org, Apr 6 2017

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

commit 430d8884a1783783c709bd01e544f682f5134915
Author: aelias <aelias@chromium.org>
Date: Thu Apr 06 01:57:34 2017

Scope scissor bug/MSAA/WebGL2 disabling to Adreno series.

- The scissor bug originally observed on Nexus 7 turns out to affect a swath of
Adreno 3xx tablets.  Expand it and the associated MSAA disabling to all Adreno
3xx (MSAA is already not trusted on 3xx anyway).
- Retarget the Android < 6.0 MSAA+WebGL disabling to Adreno 4xx to clarify this
entry is for is a specific remaining problem suspected to exist on certain
older 4xx drivers (not very well understood/confirmed, but kainino@ requested
this entry remain pending further investigation).
- The depth texture blacklist is ancient enough that Adreno 4xx did not exist
in those days, so target it to 2xx and 3xx series (even 3xx series may be
too new for this bug to affect it, but keeping it there for safety).

BUG= 707839 , 682075 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel

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

[modify] https://crrev.com/430d8884a1783783c709bd01e544f682f5134915/gpu/config/gpu_driver_bug_list.json
[modify] https://crrev.com/430d8884a1783783c709bd01e544f682f5134915/gpu/config/gpu_driver_bug_list_arrays_and_structs_autogen.h
[modify] https://crrev.com/430d8884a1783783c709bd01e544f682f5134915/gpu/config/gpu_driver_bug_list_autogen.cc
[modify] https://crrev.com/430d8884a1783783c709bd01e544f682f5134915/gpu/config/software_rendering_list.json
[modify] https://crrev.com/430d8884a1783783c709bd01e544f682f5134915/gpu/config/software_rendering_list_arrays_and_structs_autogen.h
[modify] https://crrev.com/430d8884a1783783c709bd01e544f682f5134915/gpu/config/software_rendering_list_autogen.cc

Project Member

Comment 15 by bugdroid1@chromium.org, Apr 6 2017

Labels: merge-merged-3029
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a80032606fb22ed36a6bd599d98bd0c13323cdd9

commit a80032606fb22ed36a6bd599d98bd0c13323cdd9
Author: Alexandre Elias <aelias@chromium.org>
Date: Thu Apr 06 19:11:55 2017

Scope scissor bug/MSAA/WebGL2 disabling to Adreno series.

[Unclean merge due to http://crrev.com/2756793003]

- The scissor bug originally observed on Nexus 7 turns out to affect a swath of
Adreno 3xx tablets.  Expand it and the associated MSAA disabling to all Adreno
3xx (MSAA is already not trusted on 3xx anyway).
- Retarget the Android < 6.0 MSAA+WebGL disabling to Adreno 4xx to clarify this
entry is for is a specific remaining problem suspected to exist on certain
older 4xx drivers (not very well understood/confirmed, but kainino@ requested
this entry remain pending further investigation).
- The depth texture blacklist is ancient enough that Adreno 4xx did not exist
in those days, so target it to 2xx and 3xx series (even 3xx series may be
too new for this bug to affect it, but keeping it there for safety).

BUG= 707839 , 682075 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel;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/2797393002
Cr-Commit-Position: refs/heads/master@{#462321}
(cherry picked from commit 430d8884a1783783c709bd01e544f682f5134915)

Review-Url: https://codereview.chromium.org/2801043004 .
Cr-Commit-Position: refs/branch-heads/3029@{#610}
Cr-Branched-From: 939b32ee5ba05c396eef3fd992822fcca9a2e262-refs/heads/master@{#454471}

[modify] https://crrev.com/a80032606fb22ed36a6bd599d98bd0c13323cdd9/gpu/config/gpu_driver_bug_list_json.cc
[modify] https://crrev.com/a80032606fb22ed36a6bd599d98bd0c13323cdd9/gpu/config/software_rendering_list_json.cc

Blocking: 698197
Blockedon: 471200
After looking at  http://crbug.com/471200#c9  and some statistics, we decided that disable_chromium_framebuffer_multisample shouldn't be needed except on Adreno 3xx.

Via http://opengles.gpuinfo.org/ , it doesn't seem that there were very many phones with Adreno 4xx on Android <6.0 (although the Nexus 6 shipped with 5.0 but isn't represented there). AFAICT, the original driver bug workaround predates Adreno 4xx [1], so it seems very unlikely that this was a driver fix circa 6.0 [2]; rather, probably only 3xx was broken.

[1] When the workaround was added, it had no cr_bugs, but it's id #52. Workaround #54 seems to have been added in 2012, so #52 should be older than that. Adreno 400 series was announced in 2014.

[2] Originally I had picked "android<6.0" as a target simply because we had no idea what the original workaround was intended for, and there was no documentation surrounding it, and we needed to ship WebGL 2.0 for M58 very quickly. Now that we've dug through the history a bit more (big thanks to aelias@), it's great to be able to expand the WebGL 2.0 support (hopefully in M59).
Status: Started (was: Fixed)
Reopening while I narrow the workarounds.
Labels: -Pri-1 Pri-2
Project Member

Comment 20 by bugdroid1@chromium.org, Apr 7 2017

Status: Fixed (was: Started)
Blocking: 716378
Components: -Internals>GPU>WebGL Blink>WebGL
Blocking: 756178

Comment 25 Deleted

Blocking: 906892

Sign in to add a comment