Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
M
mutter
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 785
    • Issues 785
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 97
    • Merge Requests 97
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOME
  • mutter
  • Merge Requests
  • !1488

Merged
Created Oct 10, 2020 by Jonas Ådahl@jadahlMaintainer7 of 9 tasks completed7/9 tasks

Atomic mode setting support

  • Overview 178
  • Commits 80
  • Pipelines 58
  • Changes 94

This merge request refactors the mode setting abstraction (MetaKms) and finally adds support for atomic mode setting.

Very high level changes are:

  • The "impl" backend is changed to be per device

MetaKmsImplSimple became MetaKmsImplDeviceSimple more or less.

  • Legacy mode setting (MetaKmsImplDeviceSimple) is made to even more look like atomic mode setting when used externally.

Everything that aims to manipulate the drm/kms state is done as part of the frame dispatch. E.g. gamma and cursor plane updates don't happen outside of a frame dispatch.

  • When doing reconfiguring the monitor layout, resolutions, etc, all CRTCs of a single device are updated using a single update.

Reconfiguring one CRTC might implicitly invalidate the state of other CRTCs, meaning we'd end up getting EBUSY when trying to commit. This is handled by updating all CRTCs of a device using one update, i.e. one atomic commit, synchronously.

  • VMs are not using atomic mode setting

Virtual machines behave badly with atomic mode setting due to the lack of cursor hot spots in the cursor planes. So until that's fixed, they will be using legacy mode setting APIs.

Some things are relatively untested so far, and requires verification:

  • Check driver support
    • intel
    • nouveau
    • amdgpu
    • EGLStream backend (can only use legacy)
    • ... and others
  • Hybrid graphics
  • DPMS (test utility: gnome-set-power-save.sh)
  • Gamma (test utility: gnome-gamma.py)
Edited Oct 23, 2020 by Jonas Ådahl
Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Source branch: wip/kms-atomic