linuxmint / linuxmint/cinnamon

No way out when the GL context cannot be created, now that the 2D sessions are gone

Open
#13,996 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
5.6k
Forks
915
Avg merge
5d 22h
Merged PRs (30d)
3

Description

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 3ba28f610 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 3ba28f610 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.)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with js/ui/main.js and the Clutter initialization path described in meta-backend.c; review commit 3ba28f610 and the remaining /usr/bin/cinnamon2d behavior. Compare the proposed LIBGL_ALWAYS_SOFTWARE retry with the gsettings approach, using Debian bug #1115901 as the failure case. Done means a display-manager-launched Cinnamon session can start when Clutter cannot create a GL context and no DRM device exists, without restoring a session file.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, linux
Domain
desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.