Bringing Display and 3D to the C.H.I.P Computer

Bringing Display and 3D to the C.H.I.P Computer

Embedded Linux Conference 2016 Bringing display and 3D Free Electrons to the C.H.I.P computer Embedded Linux Developers Maxime Ripard Free Electrons [email protected] c Copyright 2004-2016, Free Electrons. Creative Commons BY-SA 3.0 license. Corrections, suggestions, contributions and translations are welcome! Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 1/24 Maxime Ripard I Embedded Linux engineer and trainer at Free Electrons I Embedded Linux development: kernel and driver development, system integration, boot time and power consumption optimization, consulting, etc. I Embedded Linux training, Linux driver development training and Android system development training, with materials freely available under a Creative Commons license. I http://free-electrons.com I Contributions I Co-maintainer for the sunXi SoCs from Allwinner I Contributor to a couple of other open-source projects, Buildroot, U-Boot, Barebox I Living in Toulouse, south west of France Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 2/24 Bringing display and 3D to the C.H.I.P computer Introduction Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 3/24 C.H.I.P. ? I 9$ SBC I Based on an Allwinner R8 (equivalent to A13) I 1GHz Cortex-A8 CPU I Mali 400 GPU I Plenty of GPIOs to bitbang stuff (and real controllers too!) I Running mainline-ish Linux kernel (4.3, soon to be 4.4) Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 4/24 Development effort I A significant part of the work already done I But key features for a desktop-like application were missing I Audio I NAND support I Display I Plus board specific developments I Wifi regulators I DIP Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 5/24 Bringing display and 3D to the C.H.I.P computer How to display things in Linux? Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 6/24 Doing display things I Different solutions, provided by different subsystems: I FBDEV: Framebuffer Device I DRM/KMS: Direct Rendering Manager / Kernel Mode Setting I More exotic ones: V4L2, auxdisplay I How to choose one: it depends on your needs I Each subsytem provides its own set of features I Different levels of complexity I Different levels of activity Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 7/24 Which one to choose? I DRM I Actively maintained I Provides fine grained control on the display pipeline I Widely used by user-space graphic stacks I Provides a full set of advanced features I FBDEV I Deprecated? I Does not provides all the features found in the modern display controllers (overlays, sprites, hw cursor, ...) Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 8/24 Bringing display and 3D to the C.H.I.P computer DRM/KMS Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 9/24 DRM/KMS: Definition I DRM stands for Direct Rendering Manager and was introduced to deal with graphic cards embedding GPUs I KMS stands for Kernel Mode Setting and is a sub-part of the DRM API I Though rendering and mode setting are now split in two different APIs (accessible through /dev/dri/renderX and /dev/dri/controlDX) I KMS provide a way to configure the display pipeline of a graphic card (or an embedded system) I KMS is what we're interested in when looking for an FBDEV alternative Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 10/24 DRM/KMS pipeline Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 11/24 KMS components I Planes I Image source I Associated with one (or more!) framebuffers I Holds a resized version of that framebuffer I CRTCs I Take the planes, and does the composition I Contains the display mode and parameters I Encoders I Take the raw data from the CRTC and convert it to a particular format I Connectors I Outputs the encoded data to an external display I Handles hotplug events I Reads EDIDs Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 12/24 Allwinner display pipeline Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 13/24 DRM vs SoC pipeline Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 14/24 DRM Stack: KMS Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 15/24 DRM Stack: GEM Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 16/24 DRM Stack: CMA Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 17/24 DRM Stack: PRIME Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 18/24 Bringing display and 3D to the C.H.I.P computer GPU integration Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 19/24 Solutions I The GPU found in most Allwinner SoCs is the Mali-400 from ARM (with a variable number of cores) I There are two options to support that GPU: I Lima I Reversed engineered proof-of-concept I Triggered the reverse engineering effort of the GPUs (freedreno, etnaviv, etc.) I Development (closed to?) stopped two years ago I ARM-Provided support I Featureful I Two parts: GPL kernel driver and proprietary OpenGL ES implementation Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 20/24 DRM Stack: GPU Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 21/24 Development I Everything is provided by ARM on their website (if you're lucky) I On the userspace side, you just need to put the library they provided on your system I On the driver side, you need to create a platform glue that will deal with: I Memory mapping I Interrupts I Clocks I Reset lines I Power Domains I Basically everything needed for the GPU to operate properly on your SoC Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 22/24 X11 integration I We need a DDX (Device Dependent X) driver I xf86-video-modesetting is working on top of KMS and MESA (Gallium3D) I ARM developped xf86-video-armsoc for SoC using a 3rd party GPU (Mali, PowerVR, Vivante, etc.) I Relies on KMS for the display configuration, driver-specific ioctl for buffer allocations and vendor-provided OpenGL ES implementation I Just have to write a small glue to use your driver allocator, and give some hints to X about what your hardware support (hw cursor, vblank, etc.) Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 23/24 Questions? Maxime Ripard [email protected] Slides under CC-BY-SA 3.0 http://free-electrons.com/pub/conferences/2016/elc/ripard-drm Free Electrons. Kernel, drivers, embedded Linux and Android - Development, consulting, training and support. http://free-electrons.com 24/24.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    24 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us