mozilla-mobile / fenix

⚠️ Fenix (Firefox for Android) moved to a new repository. It is now developed and maintained as part of: https://github.com/mozilla-mobile/firefox-android
https://github.com/mozilla-mobile/firefox-android
Mozilla Public License 2.0
6.46k stars 1.27k forks source link

[Bug][WebRender] Browser chrome stop responding properly after enabling webrender #5951

Closed bogas04-swiggy closed 4 years ago

bogas04-swiggy commented 5 years ago

Steps to reproduce

  1. Enable WebRender from about:config
  2. Restart browser
  3. Navigate to different screens in browsers (show all tabs, settings, new tab etc.)

Expected behavior

Everything should work fine

Actual behavior

Buttons show ripple effects but they don't perform the action.

It used to be working fine until 2 days ago, since then the problem has arisen.

Screencast

Device information

Description GPU #1
Active Yes
Description Model: RMX1901, Product: RMX1901, Manufacturer: Realme, Hardware: qcom, OpenGL: Qualcomm -- Adreno (TM) 616 -- OpenGL ES 3.2 V@331.0 (GIT@01d7833, Ib6dc0f6bce) (Date:01/25/19)
Vendor ID Qualcomm
Device ID Adreno (TM) 616
Driver Version OpenGL ES 3.2 V@331.0 (GIT@01d7833, Ib6dc0f6bce) (Date:01/25/19)

┆Issue is synchronized with this Jira Task

jamienicol commented 5 years ago

I bisected Fenix and found that f9afd97a687a501553bcc91c78d7c945f8678f7a is the regressing commit.

It seems like we now wait until engineView.captureThumbnail() completes before opening the tab drawer or settings page etc? However, if you dig in to the gecko code, you can see that RecvRequestScreenPixels() is only implemented for the layers gfx backend, not webrender. The graphics code will never send a SendScreenPixels() back, so the callback will never be invoked. Hence nothing happens.

Bug 1547737 is tracking implementing this function for webrender. Hopefully that should land in the next week or two, but in the meantime I will see if we can simply return null (rather than not return at all) whilst webrender is enabled.

Alternatively, and I don't know whether this is possible, but in Fenix maybe it would make sense to add a timeout waiting for captureThumbnail(). And then proceed to show the tab switcher / settings menu / whatever if the thumbnail hasn't arrived within that time?

ekager commented 4 years ago

I have removed engineView.captureThumbnail() now so this should be fixed in Nightly.

sv-ohorvath commented 4 years ago

Verified this as fixed, with webRender on. latest Nightly 10/15.

jrmuizel commented 4 years ago

What would be needed for us to have caught this in CI? Is it possible for us to have a configuration that runs with WebRender turned on?

liuche commented 4 years ago

From some other discussion, there are problems turning on WebRender on emulators, tracked in https://bugzilla.mozilla.org/show_bug.cgi?id=1590805 .

Once that's fixed, we'd probably be able to turn this on for all debug builds and in CI, so that any UI test that goes through this flow would fail with broken behavior.