shm: don't bother with xrgb surfaces, always use argb

Before this patch, foot used xrgb surfaces for all fully opaque
surfaces, and only used argb surfaces for the main window when the
user enabled translucency.

However, several compositors have damage-like issues when we switch
between opaque and non-opaque surfaces (for example, when switching
color theme, or when toggling fullscreen).

Since the performance benefit of using non-alpha aware surfaces are
likely minor (if there's any measurable performance difference at
all!), lets workaround these compositor issues by always using argb
surfaces.
This commit is contained in:
Daniel Eklöf 2026-01-04 07:57:25 +01:00
parent 42e04c5c87
commit b78cc92322
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
7 changed files with 42 additions and 79 deletions

View file

@ -125,12 +125,12 @@ sixel_init(struct terminal *term, int p1, int p2, int p3)
* that assumes 32-bit pixels).
*/
if (shm_chain_bit_depth(term->render.chains.grid) >= SHM_BITS_10) {
if (term->wl->shm_have_argb2101010 && term->wl->shm_have_xrgb2101010) {
if (term->wl->shm_have_argb2101010) {
term->sixel.use_10bit = true;
term->sixel.pixman_fmt = PIXMAN_a2r10g10b10;
}
else if (term->wl->shm_have_abgr2101010 && term->wl->shm_have_xbgr2101010) {
else if (term->wl->shm_have_abgr2101010) {
term->sixel.use_10bit = true;
term->sixel.pixman_fmt = PIXMAN_a2b10g10r10;
}