llvmpipe is reported as hardware accelerated since 5.4, so software rendering is never detected

Abierto
#879 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
c
Área
desktop

Línea de trabajo

Start with cogl/cogl/cogl-gpu-info.c and src/backends/meta-renderer.c, then compare the renderer checks mentioned from muffin 5.2 and Mutter. Reproduce the mismatch with the llvmpipe setup described in the issue; done when hardware acceleration is reported as false for software renderers and Cinnamon enables software rendering as expected.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Since the rebase onto mutter 3.36 (8599127f, first released in 5.4.0), meta_backend_is_rendering_hardware_accelerated() returns true under llvmpipe. As a result Cinnamon's software rendering mode (animations disabled, "Check your video drivers" notification) is never enabled automatically.

meta_renderer_is_hardware_accelerated() (meta-renderer.c) relies on cogl_context->gpu.architecture. In cogl-gpu-info.c the llvmpipe/softpipe/swrast architectures are only looked up after check_mesa_vendor() has matched GL_VENDOR, and it only knows "Tungsten Graphics, Inc", "VMware, Inc." and "Mesa Project". llvmpipe reports "Mesa/X.org" (Mesa 20.3 and 22.3) or plain "Mesa" (Mesa 25.0 and later), so the vendor is unknown, the architecture is unknown, and unknown counts as hardware.

Before the rebase, muffin 5.2 checked GL_RENDERER directly in src/core/main.c (llvmpipe, Rasterizer, softpipe) and set CINNAMON_SOFTWARE_RENDERING, which is how the notification still showed up on 5.2 (e.g. in a VM without 3D: linuxmint/lmde-5-cinnamon-beta#20). Mutter dropped the vendor-based check in 2020 and only looks at the renderer string (d133f94f).

Tested on Cinnamon/muffin 6.7.8 in a VM with virtio-gpu without 3D: glxinfo -B shows llvmpipe and Accelerated: no, while in Looking Glass Meta.get_backend().is_rendering_hardware_accelerated() is true, software_rendering is false and animations are enabled.

Two possible fixes:

  1. add the new vendor strings to check_mesa_vendor();
  2. check only GL_RENDERER in meta_renderer_is_hardware_accelerated(), as muffin 5.2 and mutter do.

I'd go with 2, since the vendor string has already changed twice.

Either way it changes what users see: on llvmpipe (VMs without 3D, machines without a working GPU driver) Cinnamon would again disable animations and show the notification at every login (not in live sessions), which hasn't happened since 5.4. On the native backend it would also let should_force_shadow_fb() apply. That's why I'm asking before opening a PR: which way would you prefer?

This was first raised in linuxmint/Cinnamon#13996, which I'm closing because its premise turned out to be wrong.

Lenguaje dominante
C
Estrellas
249
Forks
131
Merge medio
13 d 16 h
PR fusionados (30 d)
7

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de linuxmint/muffin

Todos los issues de linuxmint/muffin

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.