You are not logged in.

#1 2022-08-06 23:31:42

ArchM
Member
Registered: 2018-02-09
Posts: 24

[SOLVED] picom starts in a state where it does not render windows

About half the time I start up my machine, I'll have my wallpaper and status bar load in, rofi will load in if I try to launch an application, but none of my windows actually render on screen. If I move the window to an off-screen workspace and then switch to that workspace, it will be rendered in. The best way I can describe it is that all the windows are invisible, but I can still interact with them. The way I work around this now is blindly opening a terminal and typing in "pkill i3" to restart the session. If I kill picom, the system does draw the windows properly but I end up in a state where everything seems to draw a lot more slowly, to the point that there's a small lag between keyboard input and showing up on screen. This does not happen when I start the system without picom at all.

This has been ongoing for a few months now and I can't seem to figure out what triggered it, unfortunately I changed a few things leading up to this issue so I'm not sure which, if any, is responsible.

I don't entirely understand the compositor configuration options and suspect the problem lies somewhere in there and how it interacts with the backend / nvidia but I'm not entirely sure what's relevant so forgive the info dump below.

.xprofile (launches picom)
picom.conf
/etc/X11/xorg.conf.d/20-nvidia.conf (forces composition pipeline)
picom.log (had to grep -C10 (ERROR|WARN|INFO) to truncate excessive DEBUG logs)
i3 error log  (different session from the picom debug log)

Maybe it's time to cut my losses and switch to sway + wayland? Is that still a painful experience with nvidia?

Last edited by ArchM (2022-08-09 21:03:39)

Offline

#2 2022-08-09 07:26:13

seth
Member
Registered: 2012-09-03
Posts: 51,067

Re: [SOLVED] picom starts in a state where it does not render windows

The most interesting thing would be an xorg log from such a run.
Since you're using a static server config (what you should not, https://wiki.archlinux.org/title/Multih … _xorg.conf and Option "ForceFullCompositionPipeline" "true" in a device section) there's a chance that the nvidia driver isn't ready when you start X1 (probably automatically on boot) and you're running the software GL driver.
Restarting the session would then clear that, capture the nvidia chip and get you a sane session.
A common mitigation for that is https://wiki.archlinux.org/title/Kernel … _KMS_start

Edit

[ 07/25/2022 21:17:30.098 glx_has_extension INFO ] Missing GLX extension GLX_SGI_video_sync.
[ 07/25/2022 21:17:30.098 glx_has_extension INFO ] Missing GLX extension GLX_SGI_swap_control.
[ 07/25/2022 21:17:30.098 glx_has_extension INFO ] Missing GLX extension GLX_OML_sync_control.
[ 07/25/2022 21:17:30.098 glx_has_extension INFO ] Missing GLX extension GLX_MESA_swap_control.
[ 07/25/2022 21:17:30.098 glx_has_extension INFO ] Missing GLX extension GLX_EXT_swap_control.
[ 07/25/2022 21:17:30.098 glx_has_extension INFO ] Found GLX extension GLX_EXT_texture_from_pixmap.
[ 07/25/2022 21:17:30.098 glx_has_extension INFO ] Found GLX extension GLX_ARB_create_context.
[ 07/25/2022 21:17:30.098 glx_has_extension INFO ] Missing GLX extension GLX_EXT_buffer_age.
[ 07/25/2022 21:17:30.098 glx_has_extension INFO ] Found GLX extension GLX_MESA_query_renderer.

means you're not running on nvidia's GLX implementation for sure at this point.

Last edited by seth (2022-08-09 07:27:30)

Offline

#3 2022-08-09 21:02:40

ArchM
Member
Registered: 2018-02-09
Posts: 24

Re: [SOLVED] picom starts in a state where it does not render windows

It looks like you were right once again Seth, thank you so much for your time! I reverted and reapplied the change to produce logs for confirmation. Marking resolved, but some questions below if you have time:

seth wrote:

Since you're using a static server config (what you should not, https://wiki.archlinux.org/title/Multih … _xorg.conf and Option "ForceFullCompositionPipeline" "true" in a device section)

Should I be using xrandr in my .xprofile to set my displays? What should exist in the nvidia config? It looks like it's possible (example) to use nvidia-settings to force the (non-full) composition pipeline, is that the right way to go about it?

--- Logs and Solution below ---

Xorg.log (broken)
Xorg.log (fixed)

[     6.110] (II) Loading sub module "glxserver_nvidia"
[     6.110] (II) LoadModule: "glxserver_nvidia"
[     6.110] (WW) Warning, couldn't open module glxserver_nvidia
[     6.110] (EE) NVIDIA: Failed to load module "glxserver_nvidia" (module does not exist, 0)
[     6.110] (EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
[     6.110] (EE) NVIDIA(0):     log file that the GLX module has been loaded in your X
[     6.110] (EE) NVIDIA(0):     server, and that the module is the NVIDIA GLX module.  If
[     6.110] (EE) NVIDIA(0):     you continue to encounter problems, Please try
[     6.110] (EE) NVIDIA(0):     reinstalling the NVIDIA driver.

Solution for reference (diffs on left indicate applied fix)

diff /etc/default/grub ./etc/default/grub
6c6
< GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet nvidia-drm.modeset=1"
---
> GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"

diff /etc/mkinitcpio.conf ./etc/mkinitcpio.conf
7c7
< MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
---
> MODULES=()

Then regenerate initramfs + GRUB

sudo mkinitcpio -P
sudo grub-mkconfig -o /boot/grub/grub.cfg

Last edited by ArchM (2022-08-09 21:16:29)

Offline

#4 2022-08-09 21:33:34

seth
Member
Registered: 2012-09-03
Posts: 51,067

Re: [SOLVED] picom starts in a state where it does not render windows

Should I be using xrandr in my .xprofile to set my displays?

Depends. If the configuration is supposed to be user specific: yes. Otherwise just use an xorg configlet that just configures the ouptuts (or in very doubt nvidia's metamode)

What should exist in the nvidia config? It looks like it's possible (example) to use nvidia-settings to force the (non-full) composition pipeline, is that the right way to go about it?

nvidia-settings writes a static server configuration what is inflexible by design, obfuscates errors (and in the very case: full of cruft - the referenced keyboard and mouse drivers don't exist since more than a decade…)

You can have /etc/X11/xorg.conf.d/20-nvidia.conf

Section "Device"
    Identifier "NVIDIA GeForce GTX 1060"
    Driver	"nvidia"
    Option	"TripleBuffer"  "True" # maybe useful, too
    Option	"ForceFullCompositionPipeline" "True"
EndSection

and that will augment the Xorg server autocinfuguration and apply to every device that uses the nvidia driver

Offline

Board footer

Powered by FluxBB