yshui / picom

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

Window turns blue-greyish with experimental backends #778

Closed hardiksachan closed 2 years ago

hardiksachan commented 2 years ago

Platform

Fedora 35

GPU, drivers, and screen setup

NVIDIA GeForce GTX 1050 Ti Mobile. Driver version: 510.47.03

Output of glxinfo -B

name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel (0x8086)
    Device: Mesa Intel(R) UHD Graphics 630 (CFL GT2) (0x3e9b)
    Version: 21.3.5
    Accelerated: yes
    Video memory: 3072MB
    Unified memory: yes
    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
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) UHD Graphics 630 (CFL GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 21.3.5
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 21.3.5
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 21.3.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

Environment

Awesome WM. Installed alongside KDE. Though I don't use picom on KDE.

picom version

vgit-01649

Diagnostics ``` [ 02/08/2022 19:54:06.086 parse_config_libconfig WARN ] The refresh-rate option has been deprecated. Please remove it from your configuration file. If you encounter any problems without this feature, please feel free to open a bug report [ 02/08/2022 19:54:06.086 get_cfg WARN ] Dual-kawase blur is not implemented by the legacy backends, you must use the `experimental-backends` option. [ 02/08/2022 19:54:06.172 init_render WARN ] Old backends only support blur method "kernel". Your blur setting will not be applied **Version:** vgit-01649 ### Extensions: * Shape: Yes * XRandR: Yes * Present: Present ### Misc: * Use Overlay: Yes * Config file used: /home/hardik/.config/picom/picom.conf ### Drivers (inaccurate): NVIDIA, modesetting ### Backend: glx * Driver vendors: * GLX: Mesa Project and SGI * GL: Intel * GL renderer: Mesa Intel(R) UHD Graphics 630 (CFL GT2) * Accelerated: 1 ```

Configuration:

Configuration file ``` # ░█▀█░▀█▀░█▀▀░█▀█░█▄█░░░░█▀▀░█▀█░█▀█░█▀▀ # ░█▀▀░░█░░█░░░█░█░█░█░░░░█░░░█░█░█░█░█▀▀ # ░▀░░░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀░░▀▀▀░▀▀▀░▀░▀░▀░░ # # X compositor configuration # ░█▀▀░█░█░█▀█░█▀▄░█▀█░█░█ # ░▀▀█░█▀█░█▀█░█░█░█░█░█▄█ # ░▀▀▀░▀░▀░▀░▀░▀▀░░▀▀▀░▀░▀ shadow = true; shadow-radius = 25; shadow-opacity = 0.3; shadow-offset-x = -32; shadow-offset-y = -32; # shadow-red = 0 # shadow-green = 0 # shadow-blue = 0 shadow-color = "#000000"; shadow-exclude = [ "name = 'Notification'", "class_g = 'Conky'", "class_g ?= 'Notify-osd'", "class_g = 'Cairo-clock'", "class_g = 'slop'", "class_g = 'Firefox' && argb", "class_g = 'Rofi'", "class_g = 'i3bar'", "class_g *= 'i3bar'", "name *= 'i3bar'", "class_g ?= 'i3bar'", "class_g *= 'i3'", "_GTK_FRAME_EXTENTS@:c", "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" ]; # shadow-exclude-reg = "x10+0+0"; # xinerama-shadow-crop = true; # ░█▀▀░█▀█░█▀▄░▀█▀░█▀█░█▀▀ # ░█▀▀░█▀█░█░█░░█░░█░█░█░█ # ░▀░░░▀░▀░▀▀░░▀▀▀░▀░▀░▀▀▀ fading = true; fade-in-step = 0.02; fade-out-step = 0.02; fade-delta = 2; fade-exclude = []; no-fading-openclose = false; no-fading-destroyed-argb = true; # ░█▀█░█▀█░█▀█░█▀▀░▀█▀░▀█▀░█░█ # ░█░█░█▀▀░█▀█░█░░░░█░░░█░░░█░ # ░▀▀▀░▀░░░▀░▀░▀▀▀░▀▀▀░░▀░░░▀░ inactive-opacity = 1; frame-opacity = 1; inactive-opacity-override = false; active-opacity = 1.0; inactive-dim = 0.1; focus-exclude = [ "class_g = 'Cairo-clock'", "class_g ?= 'rofi'", "class_g ?= 'slop'", "class_g ?= 'Steam'" ]; # inactive-dim-fixed = 1.0; opacity-rule = [ "90:class_g = 'URxvt'", "80:class_g = 'UXTerm'", "80:class_g = 'XTerm'" ] # ░█▀▄░█░░░█░█░█▀▄░█▀▄░▀█▀░█▀█░█▀▀ # ░█▀▄░█░░░█░█░█▀▄░█▀▄░░█░░█░█░█░█ # ░▀▀░░▀▀▀░▀▀▀░▀░▀░▀░▀░▀▀▀░▀░▀░▀▀▀ blur: { method = "dual_kawase"; strength = 8.0; deviation = 0.5; kernel = "11x11gaussian"; } blur-background = false; blur-background-frame = true; blur-background-fixed = true; # blur-kern = "3x3box"; blur-background-exclude = [ "class_g = 'slop'", "class_g = 'Firefox' && argb", "name = 'rofi - Global Search'", "_GTK_FRAME_EXTENTS@:c" ]; ################################# # Corners # ################################# # Sets the radius of rounded window corners. When > 0, the compositor will # round the corners of windows. Does not interact well with # `transparent-clipping`. # corner-radius = 0 corner-radius = 6; # Exclude conditions for rounded corners. rounded-corners-exclude = [ "name *= 'tint2'", "name *= 'jgmenu'", "name *= 'screenkey'", "name *= 'polybar'", "window_type = 'dock'", "window_type = 'desktop'", "class_g = 'i3bar'", "class_g *= 'i3bar'", "name *= 'i3bar'", "class_g ?= 'i3bar'", "class_g *= 'i3'" ]; # ░█▀▀░█▀▀░█▀█░█▀▀░█▀▄░█▀█░█░░░░░█▀▀░█▀▀░▀█▀░▀█▀░▀█▀░█▀█░█▀▀░█▀▀ # ░█░█░█▀▀░█░█░█▀▀░█▀▄░█▀█░█░░░░░▀▀█░█▀▀░░█░░░█░░░█░░█░█░█░█░▀▀█ # ░▀▀▀░▀▀▀░▀░▀░▀▀▀░▀░▀░▀░▀░▀▀▀░░░▀▀▀░▀▀▀░░▀░░░▀░░▀▀▀░▀░▀░▀▀▀░▀▀▀ daemon = false; backend = "glx"; vsync = true; dbus = false; mark-wmwin-focused = true; mark-ovredir-focused = true; detect-rounded-corners = true; detect-client-opacity = true; refresh-rate = 0; # use-ewmh-active-win = true; # unredir-if-possible = false; # unredir-if-possible-delay = 0; unredir-if-possible-exclude = []; detect-transient = true; detect-client-leader = true; resize-damage = 1; invert-color-include = []; glx-no-stencil = true; # glx-no-rebind-pixmap = false; use-damage = true; # xrender-sync-fence = true; # glx-fshader-win = ""; # force-win-blend = false; # no-ewmh-fullscreen = false; # max-brightness = 1.0; transparent-clipping = false; #log-level = "warn"; #log-file = "~/.cache/picom-log.log"; show-all-xerrors = true; # write-pid-path = '/path/to/your/mom'; wintypes: { tooltip = { fade = true; shadow = false; focus = false; }; normal = { shadow = true; }; dock = { shadow = false; }; dnd = { shadow = false; }; popup_menu = { shadow = true; focus = false; }; dropdown_menu = { shadow = true; focus = false; }; above = { shadow = true; }; splash = { shadow = false; }; utility = { focus = false; shadow = false; blur-background = false; }; notification = { shadow = true; }; desktop = { shadow = false; blur-background = false; }; menu = { focus = false; }; dialog = { shadow = true; }; }; ```

Steps of reproduction

  1. Run picom with experimental backends enabled
  2. In alacritty, navigate to .config/polybar. Sometimes this occurs in chrome while using youtube.

Expected behavior

The window should render properly

Current Behavior

The window turns blue-greyish when using experimental backends

Stack trace

Other details

https://user-images.githubusercontent.com/60518745/153007567-13afc117-a416-41f5-8b0d-da75563b3999.mp4

yshui commented 2 years ago

Looks like it's related to rounded-corner-exclude

yshui commented 2 years ago

Can't reproduce this problem here. Can you try getting an apitrace?

Also can you try --experimental-backends? Looking at the warnings:

[ 02/08/2022 19:54:06.086 get_cfg WARN ] Dual-kawase blur is not implemented by the legacy backends, you must use the `experimental-backends` option.

You might not being getting what you wanted from your config.

BuddhiLW commented 2 years ago

Please post your picom.conf. It may be on ~/, ~/.config/picom/picom.conf etc.

I have exactly your GPU and CPU. Probably the same computer, G3 i5-9th.

Anyways, try to move your current config, e.g.,

mv /path/to/picom.conf /path/to/picom.conf.bk

And write /path/to/picom.conf with my config:

cat  .config/picom/picom.conf
# Opacity control
opacity-rule = [
"90:class_g = 'st-256color'",
"90:class_g = 'St'",
"90:class_g = 'st'",
];

# Blur
blur:
{
method = "dual_kawase";
strength = 10;
}

wintypes:
{
normal = { blur-background = true; };
splash = { blur-background = false; };
};

# Fading
fading = false;
fade-in-step = 0.07;
fade-out-step = 0.07;
fade-exclude = [ ];

# Other
mark-wmwin-focused = true;
mark-ovredir-focused = true;
detect-rounded-corners = true;
detect-client-opacity = true;
refresh-rate = 0;
vsync = true;
dbe = false;
unredir-if-possible = true;
detect-transient = true;
detect-client-leader = true;
invert-color-include = [ ];

# GLX backend
backend = "glx";
glx-no-stencil = true;
glx-copy-from-front = false;
use-damage = true
glx-no-rebind-pixmap = true;
BuddhiLW commented 2 years ago

In your case, you may want to change st to your own terminal emulator etc. But, the point is to test the general configurations.

You should run picom with the experimental option. Also, if you want, you can run prime-run $(picom --experimental-backends), it should use nvidia card to render. I found it to be far superior in performance.

hardiksachan commented 2 years ago

Also can you try --experimental-backends? Looking at the warnings:

I'm using it, the issue occurs only when running with --experimental-backends


I switched to https://github.com/jonaburg/picom fork. It fixed the issue for me. But using @yshui fork still causes the same issue.

yshui commented 2 years ago

Did you get around to do the apitrace?

yshui commented 2 years ago

Never mind, I can replicate it now.