
Linux display and video: one problem, three solutions, many puzzled developers Linux Plumbers Conference 2012 Laurent Pinchart [email protected] Problem Definition Problem Definition graphics / video Problem - Purpose format memory/deep pipeline device/CPU Problem - Source rotation scaling composing Problem - Processing X11 Wayland DirectFB Raw API Problem - Stack DRM FBDEV V4L2 Problem - API DRM == ?PC (mis)conceptions FBDEV is the only practical solution for embedded? platforms (mis)conceptions DRM requires a complex userspace ?stack (mis)conceptions Drivers should implement multiple interfaces? (mis)conceptions Frame Buffer Device Origins Video 4 Linux 2 Origins Direct Rendering Manager Origins Present DRM FB V4L2 Dynamic Allocation Yes No Yes Multiple Buffers Yes panning Yes Import dmabuf No userptr dmabuf Export mmap mmap mmap Memory Management DRM FB V4L2 KMS Yes Yes Yes RGB Formats 4CC 4CC 4CC Enumeration Yes No Yes Negotiation No No Yes Mode Setting DRM FB V4L2 Overlays Yes No Yes Rotation Yes No Yes Scaling Yes No Yes Cropping/Panning Yes Yes Yes Transformations DRM FB V4L2 2D No Console No 3D Yes No No Cursor Yes Yes No Composing No No No Acceleration drm fb v4l2 api core drivers Documentation The DRM core exports several interfaces to applications, “generally intended to be used through corresponding libdrm wrapper functions. In addition, drivers export device-specific interfaces for use by userspace drivers & device-aware applications through ioctls and sysfs files. External interfaces include: memory mapping, context management, DMA operations, AGP management, vblank control, fence management, memory management, and output management. Cover generic ioctls and sysfs layout here. We only need high- level info, since man pages should cover the rest. „ DRM API Documentation drm fb v4l2 api core drivers Documentation drm fb v4l2 api core drivers Code Size 4000 3500 3000 2500 drm fb 2000 v4l2 1500 1000 500 v4l2 fb 0 drm v2.6.14 v2.6.18 v2.6.22 v2.6.26 v2.6.30 v2.6.34 v2.6.38 v3.2 v3.6-rc3 v2.6.12 v2.6.16 v2.6.20 v2.6.24 v2.6.28 v2.6.32 v2.6.36 v3.0 v3.4 Cumulative Changes - API 45000 40000 35000 30000 drm 25000 fb 20000 v4l2 15000 10000 v4l2 5000 fb 0 drm v2.6.14 v2.6.18 v2.6.22 v2.6.26 v2.6.30 v2.6.34 v2.6.38 v3.2 v3.6-rc3 v2.6.12 v2.6.16 v2.6.20 v2.6.24 v2.6.28 v2.6.32 v2.6.36 v3.0 v3.4 Cumulative Changes - Core 1000000 900000 800000 700000 drm 600000 fb 500000 v4l2 400000 300000 200000 v4l2 100000 fb 0 drm v2.6.14 v2.6.18 v2.6.22 v2.6.26 v2.6.30 v2.6.34 v2.6.38 v3.2 v3.6-rc3 v2.6.12 v2.6.16 v2.6.20 v2.6.24 v2.6.28 v2.6.32 v2.6.36 v3.0 v3.4 Cumulative Changes - Drivers 1600 1400 1200 1000 drm 800 fb v4l2 600 drm+bug 400 200 0 2010-01 2010-05 2010-09 2011-01 2011-05 2011-09 2012-01 2012-05 2009-11 2010-03 2010-07 2010-11 2011-03 2011-07 2011-11 2012-03 2012-07 Mailing List Traffic Source: http://www.flickr.com/photos/buckaroobay/3721809183/ dmabuf Work In Progress dri2video https://wiki.linaro.org/OfficeofCTO/MemoryManagement? action=AttachFile&do=get&target=linux-video.pdf Targets: DRM Work In Progress panel & backlight http://lwn.net/Articles/512363/ Work In Progress Personal opinion Flame war possible Handle with care Disclaimer DRM needs to support dumb devices! better (mis)conceptions V4L2 still has use cases! (mis)conceptions FBDEV should be deprecated! (mis)conceptions • [email protected] • [email protected] • [email protected] • [email protected] Contact ? !.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages38 Page
-
File Size-