embrace the atomic display age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 embrace the...

20
1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

Upload: lamanh

Post on 22-Apr-2018

245 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

1

Embrace the Atomic Display Age

LCA 2016, GeelongDaniel Vetter

Page 2: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

2

Accidents of history

• userspace mode setting in X, maybe

• FBDEV just a framebuffer …

• … combined with unsuitable accelaration

• hence DRM

Page 3: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

3

7 or 8 years ago … KMS

• real kernel driver

• in-kernel memory manager for GPU buffers

• supporting multiple screens

• desktop compositing using GL

Page 4: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

4

Problem No. 1

• 3 displays, only 2 clock generators

• intermediate state could have 3 different clocks

• … and your compositor dies

• avoidable, but atomic switching is better

Page 5: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

5

Why Suddenly Overlays Again?

• 1080p YUV: ~4.1 MB, 4k RBG: ~33MB per frame

• 4.1MB + 33MB + 33MB with compositing per frame

• 4.1MB with overlay

• … or split screen, UI overlay, …

• ~ 4.2 GB/s at 60fps for compositing

Page 6: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

6

It's all About Mobile!

● can't draw&composit entire screen

● video, because more idle = less power

● atomic required to avoid tearing

Page 7: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

7

3 years ago … Android's ADF

● replaced FBDEV + custom hacks horror show

● only one update queue

● kept old mistakes like DPMS

● resurrected old mistakes like midlayers

Page 8: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

8

ADF? Not for Upstream

● not extensible, not generic

● only atomic for plane updates

● complete new subsystem incompatible with existing drivers

● … and incompatible with existing userspace

Page 9: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

9

Prep Work: Universal Planes

● merged 2 years ago

● cursor, primary, overlay planes ...

● it's all the same

Page 10: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

10

Upstream Atomic ABI

● partial updates, for backwards compatibility

● properties as generic transport

● standardized sets of properties as extensions

● simple value, object, blob properties

Page 11: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

11

More Upstream Atomic ABI

● cursor hack to appease X

● TEST_ONLY for discovery of constraints

● ALLOW_MODESET flag

Page 12: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

12

Internal Driver Interface

● standardized properties decoded in core

● state duplication for partial updates

● subclassable for private properties

● check/commit split

Page 13: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

13

Concurrent Updates

● per-object state structures

● per-object locks

● plus magic wait/wound locking https://lwn.net/Articles/548909/

Page 14: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

14

Say No to Midlayers● completely new atomic helper library

● much more modular

● strict state transition guarantees for driver hooks

● implements all legacy IOCTL

● intermediate plane helpers for smooth conversion of existing drivers

Page 15: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

15

Just in the Last Few Months

● suspend/resume helpers

● atomic fbdev emulation

● better support for runtime PM in general

● thousands lines of documentation

Page 16: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

16

Missing & Wanted

● generic async commit

● explicit fencing support

● faster than vblank

● testsuite, based on i-g-t

● much extensions: color management, blending, ...

Page 17: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

17

Documentation

● conversion HOWTO for legacy drivers: http://blog.ffwll.ch/2014/11/atomic-modeset-support-for-kms-drivers.html

● design overview on LWN: https://lwn.net/Articles/653071/ https://lwn.net/Articles/653466/

● DRM DocBook: https://01.org/linuxgraphics/gfx-docs/drm/

● presentation for driver writers: http://blog.ffwll.ch/2015/09/xdc-2015-atomic-modesetting-for-drivers.html

Page 18: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

18

One Atomic Display API

DRM atomic core&helper libraries developed by:

Ville Syrjälä, Daniel Vetter, Maarten Lankhorst, Ander Conselvan de Oliveira (all Intel), Rob Clark (Redhat), Laurent Pinchart (ideasonboard), Daniel Stone, Gustavo Padovan (all Collabora), Thierry Reding (Nvidia), Sean Paul (Google), Inki Dae (Samsung), ...

Page 19: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

19

To Rule them All

● drm_hwcomposer for Android

● Ozone on CrOS

● weston/wayland

● xf86-video-modesetting for X

● FBDEV emulation

Page 20: Embrace the Atomic Display Age - freedesktop.orgdanvet/presentations/lca-2016.pdf · 1 Embrace the Atomic Display Age LCA 2016, Geelong Daniel Vetter

20

And Forever Bind Them

i915 (Intel), tegra (Nvidia), msm (Qualcomm), exynos (Samsung), omap (TI), rockchip, vc4 (Broadcomm), virtio (QEMU), rcar-du (Renesas), fsl-du (Freescale), atmel, ...

And more to come with every release!