Sep 12 – 14, 2022
Europe/Dublin timezone

New userspace API for display-panel brightness control

Sep 12, 2022, 3:00 PM
1h 30m
"Meeting 9" (Clayton Hotel on Burlington Road)

"Meeting 9"

Clayton Hotel on Burlington Road

42
Birds of a Feather (BoF) BOFs Session

Speaker

Hans de Goede (Red Hat)

Description

The current userspace API for brightness control offered by
/sys/class/backlight devices has various problems:

  1. There is no way to map the backlight device to a specific
    display-output / panel

  2. On x86 there can be multiple firmware + direct-hw-access
    methods for controlling the backlight and the kernel may
    register multiple backlight-devices based on this which are
    all controlling the brightness for the same display-panel.
    To make things worse sometimes only one of the registered
    backlight devices actually works.

  3. Controlling the brightness requires root-rights requiring
    desktop-environments to use suid-root helpers for this.

  4. The scale of the brightness value is unclear, the API does
    not define if "perceived brightness" or electrical power is
    being controlled and in practice both are used without userspace
    knowing which is which.

  5. The API does not define if a brightness value of 0 means off,
    or lowest brightness at which the screen is still readable
    (in a low lit room), again in practice both variants happen.

This talk will present a proposal for a new userspace API
which intends to address these problems in the form of a
number of new properties for drm/kms properties on the
drm_connector object for the display-panel.

This talk will also focus on how to implement this proposal
which brings several challenges with it:

  1. The mess of having multiple interfaces to control a laptop's
    internal-panel will have to be sorted out because with the new
    API we can no longer just register multiple backlight devices
    and let userspace sort things out.

  2. In various cases the drm/kms driver driving the panel
    does not control the brightness itself, but the brightness
    is controlled through some (ACPI) firmware interface such
    as the acpi_video or nvidia-wmi-ec-backlight interfaces.

This introduces some challenging probe-ordering issues,
the solution for which is not entirely clear yet, so this
part of the talk will be actively seeking audience input
on this topic.

I agree to abide by the anti-harassment policy Yes

Primary author

Hans de Goede (Red Hat)

Presentation materials