Open Bug 1807329 Opened 3 years ago Updated 11 months ago

Scrolling renders at 60 fps on a 90 Hz displays with Nightly (and Focus)

Categories

(Firefox for Android :: Performance, defect)

All
Android
defect

Tracking

()

Performance Impact low

People

(Reporter: cpeterson, Unassigned)

Details

From github: https://github.com/mozilla-mobile/fenix/issues/20630.

Steps to reproduce

  1. Open any website in Nightly
  2. Scroll

Expected behaviour

Scrolling should be smooth, rendering at 90 fps.

Actual behaviour

Scrolling is slow and laggy, rendering only at 60 fps.

Device name

Realme 6

Android version

Android 10

Firefox release type

Firefox Nightly

Firefox version

92.0a1 (Build #2015825547)

Device logs

No response

Additional information

Firefox Nightly renders websites (including scrolling) at 60 fps even on a 90 Hz display. Native UI elements, such as the new tab page and settings are rendered at (as expected) 90 fps.
Firefox Focus shows the same problems as Nightly.

Firefox Release version is completely fine, rendering websites at 90 fps.

Testing methodology:

Scroll a website on Release and Nightly. The difference in smoothness is clearly visible.
My phone has a battery saver mode which limits the display to 60 Hz. With battery saver on, Release and Nightly scrolling feels the same. The smoothness is the same as Nightly without battery saving.

Additional confirmation from ADB, using command:

adb shell dumpsys display | grep -A 16 DisplayModeDirector

Sample output when Release is open, or when Nightly is open on a native page, such as Settings:

DisplayModeDirector
  mSupportedModesByDisplay:
    0 -> [{id=1, width=1080, height=2400, fps=90.0}, {id=2, width=1080, height=2400, fps=60.0}]
  mDefaultModeByDisplay:
    0 -> {id=2, width=1080, height=2400, fps=60.0}
  mVotesByDisplay:
    -1:
      PRIORITY_USER_SETTING -> Vote{width=-1, height=-1, minRefreshRate=0.0, maxRefreshRate=90.0}
    0:
      PRIORITY_APP_REQUEST_SIZE -> Vote{width=1080, height=2400, minRefreshRate=0.0, maxRefreshRate=Infinity}
      PRIORITY_APP_REQUEST_REFRESH_RATE -> Vote{width=-1, height=-1, minRefreshRate=90.0, maxRefreshRate=90.0}
  SettingsObserver
    mDefaultPeakRefreshRate: 60.0
  AppRequestObserver
    mAppRequestedModeByDisplay:
    0 -> {id=1, width=1080, height=2400, fps=90.0}

Sample output when Nightly (or Focus) is open (with some website open):

  mSupportedModesByDisplay:
    0 -> [{id=1, width=1080, height=2400, fps=90.0}, {id=2, width=1080, height=2400, fps=60.0}]
  mDefaultModeByDisplay:
    0 -> {id=2, width=1080, height=2400, fps=60.0}
  mVotesByDisplay:
    -1:
      PRIORITY_USER_SETTING -> Vote{width=-1, height=-1, minRefreshRate=0.0, maxRefreshRate=90.0}
    0:
      PRIORITY_APP_REQUEST_SIZE -> Vote{width=1080, height=2400, minRefreshRate=0.0, maxRefreshRate=Infinity}
      PRIORITY_APP_REQUEST_REFRESH_RATE -> Vote{width=-1, height=-1, minRefreshRate=60.0, maxRefreshRate=60.0}
  SettingsObserver
    mDefaultPeakRefreshRate: 60.0
  AppRequestObserver
    mAppRequestedModeByDisplay:
    0 -> {id=2, width=1080, height=2400, fps=60.0}

(Notice PRIORITY_APP_REQUEST_REFRESH_RATE and mAppRequestedModeByDisplay)

More info:

There is a very curious file on my phone located at /system/etc/refresh_rate_config.xml
https://gist.github.com/Susko3/624b5d07614e8d8317e00cc6004d7221

The relevant bits of the file:

...
<!--0:90Hz, 1:60Hz -->
...
<refresh_rate_config>
...
  <package>org.mozilla.firefox,0</package>  <!--火狐浏览器-->
...
</refresh_rate_config>

So it could be that all versions are broken, just that Release version has an override (set by the phone itself) to force it to 90 Hz.
I'll report back if changing the package name affects this bug. I'll either compile the Release version myself, or 'clone' the Firefox app to a different package name.

Versions tested:

Release:

90.1.3 (Build #2015824995)
AC: 90.0.15, ef1436afb0
GV: 90.0.3-20210729144040
AS: 77.0.2

Nightly:

92.0a1 (Build #2015825547)
AC: 92.0.20210730143121, dca90e65d6
GV: 92.0a1-20210730093652
AS: 81.0.1

Focus:

8.17.1 (Build #351931837 🦎 90.0-20210705185941)

┆Issue is synchronized with this Jira Task

Change performed by the Move to Bugzilla add-on.

Just adding some info. Bug was exclusive to to Nightly until recently (up to two weeks ago), where it was added to Firefox Beta. Experiencing it on my 120Hz phone

The severity field is not set for this bug.
:cpeterson, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(cpeterson)
Flags: needinfo?(cpeterson)

I just bought new OnePlus Pad (running at 144Hz) but my Firefox is running at 60Hz :(.
If there is anything Firefox can do to override this behavior (maybe in about:config), it would be great!

(In reply to juraj.masiar from comment #3)

I just bought new OnePlus Pad (running at 144Hz) but my Firefox is running at 60Hz :(.
If there is anything Firefox can do to override this behavior (maybe in about:config), it would be great!

Interesting, my galaxy a54 runs at 120HZ even when scrolling. It only locks at 60HZ when I'm on battery saver. It will go to 60 when I bring up the keyboard though. If you want to try to force the refresh rate to see, we could try this through adb shell adb shell settings put global oneplus_screen_refresh_rate 0 (this won't work in android 12 and above though unless the device is rooted)

Performance Impact: --- → low

The Performance Impact Calculator has determined this bug's performance impact to be low. If you'd like to request re-triage, you can reset the Performance Impact flag to "?" or needinfo the triage sheriff.

Platforms: Android
[x] Affects animation smoothness

Please ignore my previous comment, the issue got resolved somehow and I forgot about reporting it here. Firefox runs smoothly now :)

Severity: -- → S3
You need to log in before you can comment on or make changes to this bug.