yshui / picom

A lightweight compositor for X11 with animation support
https://picom.app/
Other
4.02k stars 581 forks source link

Firefox from v. 117 become laggy scroll #1122

Open dymn opened 11 months ago

dymn commented 11 months ago

Platform

Gentoo amd64

GPU, drivers, and screen setup

AMD RX 6700 XT, mesa-23.2.0, xf86-video-amdgpu-23.0.0, xf86-video-ati-22.0.0, one LG 24GN600 144 MHz monitor

$  glxinfo -B                                                                                                                                                                 13:19
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: AMD (0x1002)
    Device: AMD Radeon RX 6700 XT (navi22, LLVM 16.0.6, DRM 3.52, 6.4.12-gentoo) (0x73df)
    Version: 23.2.0
    Accelerated: yes
    Video memory: 12288MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 4.6
    Max compat profile version: 4.6
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
    VBO free memory - total: 11881 MB, largest block: 11881 MB
    VBO free aux. memory - total: 15953 MB, largest block: 15953 MB
    Texture free memory - total: 11881 MB, largest block: 11881 MB
    Texture free aux. memory - total: 15953 MB, largest block: 15953 MB
    Renderbuffer free memory - total: 11881 MB, largest block: 11881 MB
    Renderbuffer free aux. memory - total: 15953 MB, largest block: 15953 MB
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 12288 MB
    Total available memory: 28303 MB
    Currently available dedicated video memory: 11881 MB
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon RX 6700 XT (navi22, LLVM 16.0.6, DRM 3.52, 6.4.12-gentoo)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 23.2.0-rc2
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.6 (Compatibility Profile) Mesa 23.2.0-rc2
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 23.2.0-rc2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

Environment

openbox-3.6.1

picom version

$  picom --version                                                                                                                                                            
vgit-8cc50

and the same problem with picom-10.2.

Diagnostics **Version:** vgit-8cc50 ### Extensions: * Shape: Yes * RandR: Yes * Present: Present ### Misc: * Use Overlay: No (Another compositor is already running) * Config file used: /home/user/.config/picom.conf ### Drivers (inaccurate): AMDGPU, Radeon ### Backend: glx * Driver vendors: * GLX: Mesa Project and SGI * GL: AMD * GL renderer: AMD Radeon RX 6700 XT (navi22, LLVM 16.0.6, DRM 3.52, 6.4.12-gentoo) * Accelerated: 1 ### Backend: egl * Driver vendors: * EGL: Mesa Project * EGL driver: radeonsi * GL: AMD * GL renderer: AMD Radeon RX 6700 XT (navi22, LLVM 16.0.6, DRM 3.52, 6.4.12-gentoo)

Configuration:

Configuration file ``` # Shadow shadow = true; no-dnd-shadow = true; no-dock-shadow = true; #shadow-radius = 7; #shadow-offset-x = -7; #shadow-offset-y = -7; shadow-radius = 15; shadow-offset-x = -15; shadow-offset-y = -15; # shadow-opacity = 0.7; # shadow-red = 0.0; # shadow-green = 0.0; # shadow-blue = 0.0; shadow-exclude = [ "name = 'Notification'", "n:w:*VirtualBox*", "i:e:Conky", "class_g = 'Cairo-clock'", "class_g ?= 'Notify-osd'", "class_g ?= 'VirtualBox'", "class_g ?= 'Xfce4-notifyd'", "class_g ?= 'Xfce4-power-manager'", "class_g ?= 'Xfce4-panel'", "class_g ?= 'Xfce4-screenshooter'", "class_g = 'firefox' && argb", "class_g = 'firefox-esr' && argb", "class_g = 'Navigator' && window_type = 'utility'", "name *= 'Telegram' && argb" ]; # shadow-exclude = "n:e:Notification"; # shadow-exclude-reg = "x10+0+0"; # xinerama-shadow-crop = true; # Opacity inactive-opacity = 1.0; # active-opacity = 0.8; frame-opacity = 1.0; inactive-opacity-override = false; alpha-step = 0.06; # inactive-dim = 0.2; # inactive-dim-fixed = true; # blur-background = true; # blur-background-frame = true; blur-method = "dual_kawase"; # blur-strength = 15; blur-kern = "3x3box"; # blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; # blur-background-fixed = true; blur-background-exclude = [ "window_type = 'dock'", "window_type = 'desktop'", "_GTK_FRAME_EXTENTS@:c", #"class_g ?= 'dunst'", "(class_g = 'firefox' || class_g = 'firefox-esr' || class_g = 'Thunderbird') && (window_type = 'utility' || window_type = 'popup_menu') && argb" ]; # opacity-rule = [ "80:class_g = 'URxvt'" ]; # Fading fading = false; # fade-delta = 30; fade-in-step = 0.03; fade-out-step = 0.03; # no-fading-openclose = true; # no-fading-destroyed-argb = true; fade-exclude = [ ]; # Other #backend = "xrender"; backend = "glx"; #backend = "egl"; #backend = "legacy-backends"; mark-wmwin-focused = true; mark-ovredir-focused = true; detect-rounded-corners = true; detect-client-opacity = true; vsync = true; #refresh-rate = 0; #dbe = false; paint-on-overlay = true; #sw-opti = true; unredir-if-possible = true; # unredir-if-possible-delay = 5000; # unredir-if-possible-exclude = [ ]; focus-exclude = [ "class_g = 'Cairo-clock'" ]; detect-transient = true; detect-client-leader = true; #invert-color-include = [ ]; resize-damage = 1; # GLX backend #glx-no-stencil = true; glx-copy-from-front = false; glx-use-copysubbuffermesa = true; glx-no-rebind-pixmap = true; use-damage = true; xrender-sync = true; #xrender-sync-fence = true; # #no-ewmh-fullscreen = true; # use-ewmh-active-win = true; # # Do not fade destroyed ARGB windows with WM frame. Workaround bugs in Openbox, Fluxbox, etc. no-fading-destroyed-argb = true; # Window type settings wintypes: { tooltip = { fade = true; shadow = true; opacity = 0.9; focus = true; full-shadow = false; }; # dock = { shadow = false; clip-shadow-above = true; } # dnd = { shadow = false; } # popup_menu = { shadow = false; } # dropdown_menu = { shadow = false; } }; ```

Steps of reproduction

  1. Run Firefox-117.
  2. Open a page with lots of images and text, for example https://dymontiger.livejournal.com/19195316.html or https://mobile-review.com/all/articles/newphones/5-glavnyh-smartfonov-avgusta/
  3. Scroll down and up several times. Scrolling becomes laggy. The bad thing is that the bug can't be reproduced the first time. You need to scroll several times. And one more thing: scrolling does not need to be fast.

    Expected behavior

  4. Run Firefox-115.2 (or 116).
  5. Open a page with lots of images and text, for example https://dymontiger.livejournal.com/19195316.html or https://mobile-review.com/all/articles/newphones/5-glavnyh-smartfonov-avgusta/
  6. Scroll down and up several times. Scroll is smoothly.

    Current Behavior

    Scrolling becomes laggy

    Stack trace

    None

    OpenGL trace

    If necessary, I will do it.

Other details

With xfce-4.18 there is no problem. With backend= "xrender" - no lags. With backend = "egl" - same problem.

dymn commented 11 months ago

Correction: with backend= "xrender" - there are also lags.

Later I have been testing and searching for the problem for several hours using mozregression. Found a bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1836668 In the patch https://hg.mozilla.org/mozilla-central/rev/e1c387461f14 I saw a new variable: gfx.x11.glx_sgi_video_sync I changed it in about:config in Firefox to true - and everything started working as before.

Please tell me - is this a problem in Firefox or in Picom? But if in Firefox, then why is there no problem in xfce-4.18? Maybe there is some option in the picom settings that would correspond to this innovation in Firefox?