Cinnamon copes well with software rendering as long as it starts: js/ui/main.js checks
backend.is_rendering_hardware_accelerated() — FALSE for LLVMPIPE, SOFTPIPE and SWRAST —
sets software_rendering, disables animations and notifies the user.
That check runs after clutter_init() though. If the GL context cannot be created at all
(meta-backend.c, "Unable to initialize Clutter"), there is nothing left to degrade to.
Until 3ba28f6 a user in that state could still pick "Cinnamon (Software Rendering)" in
the display manager; now only /usr/bin/cinnamon2d is left, which a display manager
cannot offer.
This came up as Debian bug #1115901: a GPU too new for the nouveau in the distro kernel,
so no KMS and no /dev/dri/card0 at all. X still comes up on fbdev and GLX falls back to
indirect swrast, and the user gets no session — while LIBGL_ALWAYS_SOFTWARE=1, which is
what /usr/bin/cinnamon2d sets, works with no DRM device at all.
Since 3ba28f6 asks which environment variables people still need cinnamon2d for: this is
the one that matters, LIBGL_ALWAYS_SOFTWARE. Retrying with it when Clutter fails to
initialise would cover the case without bringing any session file back, but the gsettings
approach mentioned in that commit would work too. How would you prefer to handle it?
(Related: the unused cinnamon-session-check-accelerated helpers,
linuxmint/cinnamon-session#218.)
Cinnamon copes well with software rendering as long as it starts:
js/ui/main.jschecksbackend.is_rendering_hardware_accelerated()— FALSE for LLVMPIPE, SOFTPIPE and SWRAST —sets
software_rendering, disables animations and notifies the user.That check runs after
clutter_init()though. If the GL context cannot be created at all(
meta-backend.c, "Unable to initialize Clutter"), there is nothing left to degrade to.Until 3ba28f6 a user in that state could still pick "Cinnamon (Software Rendering)" in
the display manager; now only
/usr/bin/cinnamon2dis left, which a display managercannot offer.
This came up as Debian bug #1115901: a GPU too new for the nouveau in the distro kernel,
so no KMS and no
/dev/dri/card0at all. X still comes up on fbdev and GLX falls back toindirect swrast, and the user gets no session — while
LIBGL_ALWAYS_SOFTWARE=1, which iswhat
/usr/bin/cinnamon2dsets, works with no DRM device at all.Since 3ba28f6 asks which environment variables people still need cinnamon2d for: this is
the one that matters,
LIBGL_ALWAYS_SOFTWARE. Retrying with it when Clutter fails toinitialise would cover the case without bringing any session file back, but the gsettings
approach mentioned in that commit would work too. How would you prefer to handle it?
(Related: the unused
cinnamon-session-check-acceleratedhelpers,linuxmint/cinnamon-session#218.)