yshui / picom

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

software rasterizer's issues #1030

Open absolutelynothelix opened 1 year ago

absolutelynothelix commented 1 year ago

out of curiosity i've tested picom with mesa's software rasterizers (llvmpipe and softpipe).

cpu: r5 2600 gpu: gtx 1650 (does it matter?) picom: built from cee12875625465292bc11bf09dc8ab117cae75f4 mesa: 22.3.6

llvmpipe + glx (bad)

windows' contents are only updated when focus changes. performance with minimal config is a-okay, with my config is, as expected, poor. vsync doesn't work.

llvmpipe + egl (n/a)

no egl_khr_image_pixmap extension.

llvmpipe + legacy glx (good)

performance with minimal config is good, with my config is a-okay. requires vsync to be disabled because of missing swap control extension.

llvmpipe + legacy xr_glx_hybrid (a-okay)

performance both with minimal config and my config is a-okay, worse than on legacy glx backend because of cpu being used both by the x render extension and the llvmpipe, i guess. requires vsync to be disabled because of missing swap control extension.

softpipe + glx (bad)

screen is not updated at all.

softpipe + egl (n/a)

egl version implemented by the softpipe is too old (1.4, while picom requires at least 1.5).

softpipe + legacy glx (bad)

performance both with minimal and my config us very poor, probably because of the softpipe being singlethreaded (afaik). requires vsync to be disabled because of missing swap control extension.

softpipe + legacy xr_glx_hybrid (bad)

performance both with minimal and my config us very poor, probably because of the softpipe being singlethreaded (afaik). requires vsync to be disabled because of missing swap control extension.


as you can see, situation with software rasterizers is overall bad. however, i'm not sure should we do something about it. since llvmpipe > softpipe, we can ignore softpipe's issues and consider only llvmpipe. i believe that we can do something for users who have to use it for some weird reason. poor performance is expected but currently the glx backend has an issue with window's contents updating and runs worse than it's legacy version [1]. i believe that can be fixed but at what cost and does it worth it at all.

[1]: i believe that it's may be related to current nouveau's situation: it has poor performance on the glx backend, but good performance on it's legacy version.

thoughts?

yshui commented 1 year ago

On my setup with llvmpipe the screen doesn't update after the first frame, I don't know why.