WESTON-DRM(7)

NAME
weston-drm - the DRM backend for Weston

SYNOPSIS
weston-launch

weston --backend=drm-backend.so

DESCRIPTION
The DRM backend is the native Weston backend for systems that support the Linux kernel DRM, kernel mode setting (KMS), and evdev input devices. It is the recommended backend for desktop PCs, and aims to provide the full Wayland experience with the "every frame is perfect" concept. It also relies on the Mesa GBM interface. With the DRM backend, weston runs without any underlying windowing system. The backend uses the Linux KMS API to detect connected monitors. Monitor hot-plugging is supported. Input devices are found automatically by udev(7). Compositing happens mainly in GL ES 2, initialized through EGL. It is also possible to take advantage of hardware cursors and overlays, when they exist and are functional. Full-screen surfaces will be scanned out directly without compositing, when possible. Hardware accelerated clients are supported via EGL. The backend chooses the DRM graphics device first based on seat id. If seat identifiers are not set, it looks for the graphics device that was used in boot. If that is not found, it finally chooses the first DRM device returned by udev(7). Combining multiple graphics devices is not supported yet. The DRM backend relies on weston-launch for managing input device access and DRM master status, so that weston can be run without root privileges. On switching away from the virtual terminal (VT) hosting Weston, all input devices are closed and the DRM master capability is dropped, so that other servers, including Xorg(1), can run on other VTs. On switching back to Weston's VT, input devices and DRM master are re-acquired through the parent process weston-launch. The DRM backend also supports virtual outputs that are transmitted over an RTP session as a series of JPEG images (RTP payload type 26) to a remote client. Virtual outputs are configured in the remote-output section of weston.ini.

CONFIGURATION
The DRM backend uses the following entries from weston.ini.

  Section output

name=connector
    The KMS connector name identifying the output, for instance LVDS1.

mode=mode
    Specify the video mode for the output. The argument mode can be one of the words off to turn the output off, preferred to use the monitor's preferred video mode, or current to use the current video mode and avoid a mode switch. It can also be a resolution as:

mode=widthxheight

mode=widthxheight@refresh_rate
    Specify a mode with a given refresh-rate measured in Hz.

mode=widthxheight@refresh_rate ratio
    Here ratio is Picture Aspect-Ratio which can have values as 4:3, 16:9, 64:27, and 256:135. This resolution-format helps to select a CEA mode, if such a video mode is present in the mode-list of the output. CEA defines the timing of a video mode, which is considered as a standard for HDMI spcification and compliance testing. It defines each and every parameter of a video mode, like hactive, vactive, vfront, vback etc., including aspect-ratio information. For CEA modes, the drm layer, stores this aspect-ratio information in user-mode (drmModeModeInfo) flag bits 19-22. For the non-CEA modes a value of 0 is stored in the aspect-ratio flag bits. Each CEA-mode is identified by a unique, Video Identification Code (VIC). For example, VIC=4 is 1280x720@60 aspect-ratio 16:9. This mode will be different than a non-CEA mode 1280x720@60 0:0. When the video mode 1280x720@60 0:0 is applied, since its timing doesn't exactly match with the CEA information for VIC=4, it would be treated as a non-CEA mode. Also, while setting the HDMI-AVI-Inforframe, VIC parameter will be given as '0'. If video mode 1280x720@60 16:9 is applied, its CEA timimgs matches with that of video mode with VIC=4, so the VIC parameter in HDMI-AVI-Infoframe will be set to 4. Many a times, an output may have both CEA and non-CEA modes, which are similar in all resepct, differing only in the aspect-ratio. A user can select a CEA mode by giving the aspect-ratio, along with the other arguments for the mode. By omitting the aspect-ratio, user can specify the non-CEA modes. This helps when certification testing is done, in tests like 7-27, the HDMI-analyzer applies a particular CEA mode, and expects the applied mode to be with exactly same timings, including the aspect-ratio and VIC field. The resolution can also be a detailed mode line as below.

mode=dotclock hdisp hsyncstart hsyncend htotal vdisp vsyncstart vsyncend vtotal hflag vflag
    Use the given detailed mode line as the video mode for this output. The definition is the same as in xorg.conf(5), and cvt(1) can generate detailed mode lines.

transform=transform
    Transform for the output, which can be rotated in 90-degree steps and possibly flipped. Possible values are normal, rotate-90, rotate-180, rotate-270, flipped, flipped-rotate-90, flipped-rotate-180, and flipped-rotate-270.

pixman-shadow=boolean
    If using the Pixman-renderer, use shadow framebuffers. Defaults to true.

same-as=name
    Make this output (connector) a clone of another. The argument name is the name value of another output section. The referred to output section must exist. When this key is present in an output section, all other keys have no effect on the configuration. NOTE: cms-colord plugin does not work correctly with this option. The plugin chooses an arbitrary monitor to load the color profile for, but the profile is applied equally to all cloned monitors regardless of their properties.

force-on=true
    Force the output to be enabled even if the connector is disconnected. Defaults to false. Note that mode=off will override force-on=true. When a connector is disconnected, there is no EDID information to provide a list of video modes. Therefore a forced output should also have a detailed mode line specified.

  Section remote-output

name=name
    Specify unique name for the output.

mode=mode
    Specify the video mode for the output. The argument mode is a resolution setting, such as:

mode=widthxheight

mode=widthxheight@refresh_rate
    If refresh_rate is not specified it will default to a 60Hz.

host=host
    Specify the host name or IP Address that the remote output will be transmitted to.

port=port
    Specify the port number to transmit the remote output to. Usable port range is 1-65533.

gst-pipeline=pipeline
    Specify the gstreamer pipeline. It is necessary that source is appsrc, its name is "src", and sink name is "sink" in pipeline. Ignore port and host configuration if the gst-pipeline is specified.

OPTIONS
When the DRM backend is loaded, weston will understand the following additional command line options.

--current-mode
    By default, use the current video mode of all outputs, instead of switching to the monitor preferred mode.

--drm-device=cardN
    Use the DRM device cardN instead of the default heuristics based on seat assignments and boot VGA status. For example, use card0.

--seat=seatid
    Use graphics and input devices designated for seat seatid instead of the seat defined in the environment variable XDG_SEAT. If neither is specified, seat0 will be assumed.

--tty=x
    Launch Weston on tty x instead of using the current tty.

--continue-without-input
    Allow Weston to start without input devices. Used for testing purposes.

ENVIRONMENT

WESTON_LIBINPUT_LOG_PRIORITY
    The minimum libinput verbosity level to be printed to Weston's log. Valid values are debug, info, and error. Default is info.

WESTON_TTY_FD
    The file descriptor (integer) of the opened tty where weston will run. Set by weston-launch.

WESTON_LAUNCHER_SOCK
    The file descriptor (integer) where weston-launch is listening. Automatically set by weston-launch.

XDG_SEAT
    The seat Weston will start on, unless overridden on the command line.

SEE ALSO
weston(1)