Single digit fps when scrolling with the page down key on reddit.com and on long github diffs
Categories
(Core :: Panning and Zooming, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox77 | --- | wontfix |
firefox78 | --- | wontfix |
firefox79 | --- | fix-optional |
People
(Reporter: suresh.lalith, Unassigned)
References
Details
(Keywords: perf)
Attachments
(2 files)
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:72.0) Gecko/20100101 Firefox/72.0
Steps to reproduce:
- Go to a page like reddit.com
- Hit page down a few times
On OSX Mojave 10.14.6 (18G1012) with Firefox Nightly version 72.0a1 (2019-11-18) (64-bit).
Actual results:
Frame rate drops to single digits. See the attached profile. It looks "paint" takes a long time.
Expected results:
Frame rate should not have dropped this much.
Comment 1•5 years ago
|
||
suresh.lalith, thanks for the report! Can you take a profiling as to include Compositor thread by using gecko profiler add-on? Default setting of gecko profiler addon capture Compositor thread.
From Attachment 9109399 [details], I got the following timeline view. But it did not have Compositor thread.
And can you upload about:support info?
Updated•5 years ago
|
Reporter | ||
Comment 2•4 years ago
|
||
Sorry for the delay. I've attached a trace using the built-in profiler.
To reproduce:
- Go to the following page: https://github.com/vmware/hillview/pull/610/files
- Hit page down a few times.
- The fps should be low
I'm on 79.0a1 (2020-06-06) (64-bit) now.
Interestingly, scrolling down using the mouse wheel works smoothly!
Reporter | ||
Comment 3•4 years ago
|
||
And here's the about:support info as requested:
Application Basics
Name: Firefox
Version: 79.0a1
Build ID: 20200606214744
Distribution ID:
Update Channel: nightly
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:79.0) Gecko/20100101 Firefox/79.0
OS: Darwin 19.5.0 Darwin Kernel Version 19.5.0: Tue May 26 20:41:44 PDT 2020; root:xnu-6153.121.2~2/RELEASE_X86_64
Multiprocess Windows: 1/1 Enabled by default
Remote Processes: 10
Enterprise Policies: Inactive
Google Location Service Key: Found
Google Safebrowsing Key: Found
Mozilla Location Service Key: Found
Safe Mode: false
Crash Reports for the Last 3 Days
Report ID: bp-463561da-5273-4f3d-bf1d-775fc0200608
Submitted: 2 hours ago
Nightly Features
Name: DoH Roll-Out
Version: 1.3.0
ID: doh-rollout@mozilla.org
Name: Firefox Screenshots
Version: 39.0.0
ID: screenshots@mozilla.org
Name: Form Autofill
Version: 1.0
ID: formautofill@mozilla.org
Name: Web Compat
Version: 11.0.0
ID: webcompat@mozilla.org
Name: WebCompat Reporter
Version: 1.3.0
ID: webcompat-reporter@mozilla.org
Remote Processes
Type: Web Content
Count: 6 / 8
Type: Extension
Count: 1
Type: Privileged About
Count: 1
Type: Preallocated
Count: 1
Type: Socket
Count: 1
Extensions
Name: Amazon.com
Version: 1.1
Enabled: true
ID: amazondotcom@search.mozilla.org
Name: Bing
Version: 1.1
Enabled: true
ID: bing@search.mozilla.org
Name: DuckDuckGo
Version: 1.0
Enabled: true
ID: ddg@search.mozilla.org
Name: eBay
Version: 1.0
Enabled: true
ID: ebay@search.mozilla.org
Name: Google
Version: 1.0
Enabled: true
ID: google@search.mozilla.org
Name: LastPass: Free Password Manager
Version: 4.47.0.3
Enabled: true
ID: support@lastpass.com
Name: uBlock Origin
Version: 1.27.10
Enabled: true
ID: uBlock0@raymondhill.net
Name: Wikipedia (en)
Version: 1.0
Enabled: true
ID: wikipedia@search.mozilla.org
Graphics
Features
Compositing: OpenGL
Asynchronous Pan/Zoom: wheel input enabled; scrollbar drag enabled; keyboard enabled; autoscroll enabled
WebGL 1 Driver WSI Info: CGL
WebGL 1 Driver Renderer: ATI Technologies Inc. -- AMD Radeon Pro 555X OpenGL Engine
WebGL 1 Driver Version: 4.1 ATI-3.9.15
WebGL 1 Driver Extensions: GL_ARB_blend_func_extended GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader5 GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_occlusion_query2 GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_subroutine GL_ARB_shading_language_include GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_bounds_test GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_mirror_clamp GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range GL_ATI_texture_mirror_once GL_NV_texture_barrier
WebGL 1 Extensions: ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_float_blend EXT_frag_depth EXT_shader_texture_lod EXT_sRGB EXT_texture_compression_rgtc EXT_texture_filter_anisotropic MOZ_debug OES_element_index_uint OES_fbo_render_mipmap OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context
WebGL 2 Driver WSI Info: CGL
WebGL 2 Driver Renderer: ATI Technologies Inc. -- AMD Radeon Pro 555X OpenGL Engine
WebGL 2 Driver Version: 4.1 ATI-3.9.15
WebGL 2 Driver Extensions: GL_ARB_blend_func_extended GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader5 GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_occlusion_query2 GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_subroutine GL_ARB_shading_language_include GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_bounds_test GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_mirror_clamp GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range GL_ATI_texture_mirror_once GL_NV_texture_barrier
WebGL 2 Extensions: EXT_color_buffer_float EXT_float_blend EXT_texture_compression_rgtc EXT_texture_filter_anisotropic MOZ_debug OES_texture_float_linear WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context
Uses Tiling: true
Uses Tiling (Content): true
Off Main Thread Painting Enabled: true
Off Main Thread Painting Worker Count: 4
Target Frame Rate: 60
GPU #1
Active: Yes
Vendor ID: 0x1002
Device ID: 0x67ef
RAM: 0
Diagnostics
AzureCanvasBackend: skia
AzureContentBackend: skia
AzureFallbackCanvasBackend: none
CMSOutputProfile: AAACEGFwcGwEAAAAbW50clJHQiBYWVogB+QABgAFABEAFQANYWNzcEFQUEwAAAAAQVBQTAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBspnvRdHdv6bhi4V3UAB0y7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKZGVzYwAAAPwAAABiY3BydAAAAWAAAAAjd3RwdAAAAYQAAAAUclhZWgAAAZgAAAAUZ1hZWgAAAawAAAAUYlhZWgAAAcAAAAAUclRSQwAAAdQAAAAQY2hhZAAAAeQAAAAsYlRSQwAAAdQAAAAQZ1RSQwAAAdQAAAAQZGVzYwAAAAAAAAAISFAgMjdlcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMjAAAFhZWiAAAAAAAADzzwABAAAAARhiWFlaIAAAAAAAAGj7AAA1owAAARNYWVogAAAAAAAAZuoAALdhAAARZFhZWiAAAAAAAAAm8QAAEvwAAMC1cGFyYQAAAAAAAAAAAAH2BHNmMzIAAAAAAAEMGgAABcD///L/AAAHYAAA/c7///uY///9lgAAA/QAAL9O
Display0: 1920x1080 scale:1.000000
DisplayCount: 1
TileHeight: 512
TileWidth: 512
Decision Log
HW_COMPOSITING:
available by default
OPENGL_COMPOSITING:
available by default
WEBRENDER:
opt-in by default: WebRender is an opt-in feature
WEBRENDER_QUALIFIED:
available by default
blacklisted by env: No qualified hardware
WEBRENDER_COMPOSITOR:
disabled by default: Disabled by default
WEBRENDER_ANGLE:
opt-in by default: WebRender ANGLE is an opt-in feature
WEBRENDER_DCOMP_PRESENT:
opt-in by default: WebRender DirectComposition is an opt-in feature
OMTP:
available by default
WEBGPU:
disabled by default: Disabled by default
Media
Audio Backend: audiounit-rust
Max Channels: 2
Preferred Sample Rate: 48000
Roundtrip latency (standard deviation): 58.06ms (0.01)
Output Devices
Name: Group
ZoomAudioDevice: zoom.us.zoomaudiodevice
MacBook Pro Speakers: builtin-internal-mic|spk
Input Devices
Name: Group
ZoomAudioDevice: zoom.us.zoomaudiodevice
MacBook Pro Microphone: builtin-internal-mic|spk
Media Capabilities
Enumerate database
Important Modified Preferences
accessibility.typeaheadfind.flashBar: 0
accessibility.warn_on_browsewithcaret: false
browser.cache.disk.amount_written: 71779
browser.cache.disk.capacity: 1048576
browser.cache.disk.filesystem_reported: 1
browser.cache.disk.hashstats_reported: 1
browser.cache.disk.smart_size.first_run: false
browser.cache.disk.telemetry_report_ID: 138
browser.contentblocking.category: custom
browser.download.useDownloadDir: false
browser.search.region: US
browser.search.useDBForOrder: true
browser.sessionstore.upgradeBackup.latestBuildID: 20200606214744
browser.startup.homepage: about:blank
browser.startup.homepage_override.buildID: 20200606214744
browser.startup.homepage_override.mstone: 79.0a1
browser.tabs.firstWindowRestore.numPinnedTabs: 0
browser.urlbar.placeholderName: DuckDuckGo
browser.urlbar.placeholderName.private: DuckDuckGo
browser.urlbar.searchTips.redirect.shownCount: 1
browser.urlbar.timesBeforeHidingSuggestionsHint: 0
dom.forms.autocomplete.formautofill: true
dom.push.userAgentID: 22a369145b0e49b19af02c180bb6e1da
extensions.formautofill.firstTimeUse: false
extensions.lastAppVersion: 79.0a1
font.internaluseonly.changed: false
idle.lastDailyNotification: 1591585521
media.benchmark.vp9.fps: 244
media.benchmark.vp9.versioncheck: 5
media.gmp-gmpopenh264.abi: x86_64-gcc3
media.gmp-gmpopenh264.lastUpdate: 1571420422
media.gmp-gmpopenh264.version: 1.8.1.1
media.gmp-manager.buildID: 20200606214744
media.gmp-manager.lastCheck: 1591570547
media.gmp-widevinecdm.abi: x86_64-gcc3
media.gmp-widevinecdm.lastUpdate: 1577143855
media.gmp-widevinecdm.version: 4.10.1582.2
media.gmp.storage.version.observed: 1
network.cookie.prefsMigrated: true
network.dns.disablePrefetch: true
network.http.speculative-parallel-limit: 0
network.predictor.cleaned-up: true
network.predictor.enabled: false
network.prefetch-next: false
places.database.lastMaintenance: 1591497063
places.history.expiration.transient_current_max_pages: 144300
plugin.disable_full_page_plugin_for_types: application/pdf
plugin.flash.arch: x86_64-gcc3
plugin.flash.blockliststate: 0
plugin.flash.desc: Shockwave Flash 32.0 r0
plugin.flash.lastmod_hi: 370
plugin.flash.lastmod_lo: 205032680
plugin.flash.path: /Library/Internet Plug-Ins/Flash Player.plugin
plugin.flash.version: 32.0.0.371
print.print_bgcolor: false
print.print_bgimages: false
print.print_duplex: 0
print.print_evenpages: true
print.print_in_color: true
print.print_margin_bottom: 0.5
print.print_margin_left: 0.5
print.print_margin_right: 0.5
print.print_margin_top: 0.5
print.print_oddpages: true
print.print_orientation: 0
print.print_page_delay: 50
print.print_paper_data: 0
print.print_paper_height: 11.00
print.print_paper_name:
print.print_paper_size_unit: 0
print.print_paper_width: 8.50
print.print_resolution: 0
print.print_reversed: false
print.print_scaling: 1.00
print.print_shrink_to_fit: true
print.print_to_file: false
print.print_unwriteable_margin_bottom: 17
print.print_unwriteable_margin_left: 17
print.print_unwriteable_margin_right: 17
print.print_unwriteable_margin_top: 17
privacy.cpd.offlineApps: true
privacy.cpd.siteSettings: true
privacy.donottrackheader.enabled: true
privacy.purge_trackers.date_in_cookie_database: 0
privacy.purge_trackers.last_purge: -1847344087
privacy.sanitize.pending: [{"id":"newtab-container","itemsToClear":[],"options":{}}]
privacy.socialtracking.notification.counter: 2
privacy.socialtracking.notification.lastShown: 1566811451659
privacy.trackingprotection.enabled: true
security.remote_settings.crlite_filters.checked: 1591556837
security.remote_settings.intermediates.checked: 1591556837
security.sandbox.content.tempDirSuffix: da97e743-a424-b24e-b803-4eb95615156b
security.sandbox.plugin.tempDirSuffix: 9951d891-f748-5847-b6ab-346f312e04a6
security.tls.version.enable-deprecated: true
services.sync.declinedEngines: tabs,bookmarks,addons,history,prefs,addresses,creditcards
services.sync.engine.addons: false
services.sync.engine.addresses.available: true
services.sync.engine.bookmarks: false
services.sync.engine.history: false
services.sync.engine.passwords.validation.lastTime: 1591566867
services.sync.engine.prefs: false
services.sync.engine.prefs.modified: false
services.sync.engine.tabs: false
services.sync.lastPing: 1591509243
services.sync.lastSync: Sun Jun 07 2020 19:34:56 GMT-0700 (Pacific Daylight Time)
signon.importedFromSqlite: true
storage.vacuum.last.index: 1
storage.vacuum.last.places.sqlite: 1589357262
Important Locked Preferences
dom.ipc.processCount.webIsolated: 1
Places Database
Accessibility
Activated: false
Prevent Accessibility: 0
Library Versions
NSPR
Expected minimum version: 4.26 Beta
Version in use: 4.26 Beta
NSS
Expected minimum version: 3.54 Beta
Version in use: 3.54 Beta
NSSSMIME
Expected minimum version: 3.54 Beta
Version in use: 3.54 Beta
NSSSSL
Expected minimum version: 3.54 Beta
Version in use: 3.54 Beta
NSSUTIL
Expected minimum version: 3.54 Beta
Version in use: 3.54 Beta
Sandbox
Content Process Sandbox Level: 3
Effective Content Process Sandbox Level: 3
Startup Cache
Disk Cache Path: /Users/lsuresh/Library/Caches/Firefox/Profiles/5bl39z6d.default-1549656440907/startupCache/startupCache.8.little
Ignore Disk Cache: false
Found Disk Cache on Init: true
Wrote to Disk Cache: true
Internationalization & Localization
Application Settings
Requested Locales: ["en-US"]
Available Locales: ["en-US"]
App Locales: ["en-US"]
Regional Preferences: ["en-US"]
Default Locale: "en-US"
Operating System
System Locales: ["en-US"]
Regional Preferences: ["en-US"]
Remote Debugging (Chromium Protocol)
Accepting Connections: false
URL:
Comment 4•4 years ago
|
||
:mstange, do you know if there is already a similar bug?
Comment 5•4 years ago
|
||
The smooth scroll animation which is initiated by the page down key is not running on the compositor. Kats, can you find out why?
Furthermore, the page down key event itself could be processed by APZ, but it's processed by the main thread.
Updated•4 years ago
|
Reporter | ||
Comment 6•4 years ago
|
||
Another data point: scrolling by holding the arrow key is also slow.
Comment 7•4 years ago
|
||
Both github and reddit have non-passive key listeners registered on their root elements. Having that means we can't do APZ scrolling for keyboard inputs, unfortunately.
Comment 8•4 years ago
|
||
(In reply to Markus Stange [:mstange] from comment #5)
Furthermore, the page down key event itself could be processed by APZ, but it's processed by the main thread.
My comment explains this.
The smooth scroll animation which is initiated by the page down key is not running on the compositor. Kats, can you find out why?
This is still an open question, I can take a closer look.
Comment 9•4 years ago
|
||
Initial backtrace of spacebar scrolling shows that here the code is passing in ScrollMode::Smooth
instead of ScrollMode::SmoothMsd
. The latter will drive APZ scrolling while the former does not. So changing that should help. Markus, do you have cycles to try and that see if it breaks anything? Right now my focus is pretty much entirely on desktop zooming so I won't be able to look at this more in the near future.
Comment 10•4 years ago
|
||
Thanks! So maybe all that's needed here is to make Smooth behave like SmoothMsd (in the sense of handing it off to the compositor), just with a different scroll animation type. I'll try to find some time to look into this some more.
Comment 11•4 years ago
|
||
We could also just change the animations to use SmoothMsd. It would feel a little different but I doubt most people would notice the difference.
Comment 12•4 years ago
|
||
True.
Reporter | ||
Comment 13•4 years ago
|
||
Any update on this bug? I'd be happy to help test.
Comment 14•4 years ago
|
||
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #9)
Initial backtrace of spacebar scrolling shows that here the code is passing in
ScrollMode::Smooth
instead ofScrollMode::SmoothMsd
. The latter will drive APZ scrolling while the former does not. So changing that should help.
It sounds like bug 1658169 should have fixed this?
Comment 15•4 years ago
|
||
With these conditions true, yes, I believe the spacebar scrolls should now be going through APZ and using the same scroll physics as the main thread used to. Same with up/down arrow keys. We're still going to have the problem where the key can't be handled directly by APZ because of the key listener. So the net result is that the scroll animation may be delayed, but once it starts, it should be smooth at 60fps.
The conditions linked above require both apz.allow_zooming=true
(which is the case on Nightly but not on Beta or Release) and also apz.force_disable_desktop_zooming_scrollbars=false
(which is not true anywhere yet).
suresh, if you have some time, you can try a recent Nightly build - go to about:config, ensure apz.allow_zooming
is true, and change apz.force_disable_desktop_zooming_scrollbars
to false. Then restart the browser and try keyboard scrolling. I expect the actual scroll animations to be smooth, even though there might be a bit of lag between pressing the key and the scroll animation starting.
Reporter | ||
Comment 16•4 years ago
|
||
Tried setting apz.force_disable_desktop_zooming_scrollbars=false, and keeping apz.allow_zooming=true on Nightly 83.0a1 (2020-09-30) (64-bit): the keyboard scroll is indeed smooth now! I'll run Nightly like this for a while and report if anything comes up.
Thanks!
Description
•