![Page 1: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/1.jpg)
From Zero to Zero-CopyAccelerating Your Embedded Media Player
Lukas RusakSeptember 2018
![Page 2: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/2.jpg)
whoamiLukas Rusak
Bachelors of Applied Science in Mechanical Engineering
Team Kodi Member
Team LibreELEC Member
LibreELEC Board Member
Okanagan Region of B.C.
Mission Hill Vineyard
Kelowna B.C and Okanagan
Lake
![Page 3: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/3.jpg)
Agenda
● Introducing zero-copy● Current proprietary methods● Open source solutions● Video decoding pipeline● Rendering methods● Board specifics
![Page 4: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/4.jpg)
Zero-copy
"Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another. [1]
● Embedded devices with minimal CPU power trying to run 4K HEVC video
● Critical for devices with limited memory bandwidth
● Available in proprietary and open source solutions
![Page 5: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/5.jpg)
Current Proprietary Methods
● Raspberry Pi (broadcom) dispmanx○ libbcm_host
● i.MX6 Vivante○ Blob that does everything for windowing and rendering○ libvpuwrap for decoding
● Amlogic libamcodec○ Userspace library dependent of vendor BSP Kernel (3.14)
● Impossible to fix bugs● Locked to vendor kernels● No chance to update● Code maintenance for vendor specific methods
![Page 6: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/6.jpg)
Open Source Solutions
● Video 4 Linux 2 (V4L2) Driver○ Access to onboard decoding capabilities○ Memory-to-Memory devices○ Codecs are hardware and driver dependent
● Direct Rendering Manager (DRM) Driver○ Only required if utilizing direct to plane rendering
● OpenGLES 2.0 and EGL○ Only required if utilizing EGL image import to OpenGLES○ EXT_image_dma_buf_import [2]○ OES_EGL_image_external [3]○ NV12 or YUYV or YU12 or similar YUV format support
![Page 7: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/7.jpg)
Video Decoding Pipeline
● V4L2 interface directly using IOCTL’s● Gstreamer
○ dma-buf ready● FFmpeg
○ dma-buf patches under review
● Using Gstreamer or FFmpeg shifts video decoding out of your application
Decoded Frame
AVDRMFrameDescriptor
Compressed Frame
Decoder
fd
![Page 8: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/8.jpg)
Direct to Plane RenderingPositives
● Embedded devices may support YUV formats directly
● Most performant (no empirical evidence)● No OpenGLES/EGL context required
○ Skips the GPU entirely● Video overlays are possible using DRM Planes● Very straight forward when using atomic DRM
Negatives
● Requires* in driver scaling capabilities● No OpenGLES capabilities (shaders)● More complex if using multiple planes
Video + GUI
GUI Only
Primary Overlay Cursor (DRM Planes)
![Page 9: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/9.jpg)
OpenGLES/EGL Image Import
Positives
● Shader support● Only one DRM Plane required
Negatives
● More expensive (requires EGL context and GLES operations)● Requires extensions that are less common
![Page 10: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/10.jpg)
Mali Proprietary Blob
● Open source kernel module paired with closed source binary blob for OpenGLES
● Licensed from ARM● Bundled library containing either:
○ x11○ Wayland/GBM○ GBM
● Impossible to fix bugs● Lima and Panfrost open source efforts underway
![Page 11: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/11.jpg)
Allwinner
● DRM Driver○ “sun4i”○ Supports scaling○ Supports overlays○ Supports NV12
● V4L2 Driver○ Patches pending (requires V4L2 request API)○ Supports NV12
● OpenGLES Driver○ “mali”○ Supports EGL import○ Supports NV12
Orange Pi PC
![Page 12: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/12.jpg)
Amlogic
● DRM Driver○ “meson”○ Supports Scaling (WIP)○ Supports Overlays (WIP)○ Supports NV12○ Neil Armstrong <[email protected]>
● V4L2 Driver○ “Meson” (WIP)○ Supports NV12○ Supports HEVC, H264○ Maxime Jourdan <[email protected]>
● OpenGLES Driver○ “mali”○ Supports EGL import○ Supports NV12
Libre Computer Le Potato (S905)
![Page 13: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/13.jpg)
Broadcom
● DRM Driver○ “vc4”○ Supports scaling○ Supports overlays○ Supports NV12 and YUV420
● V4L2 Driver○ “Bcm2835-v4l2-codec” (WIP)○ Supports NV12 and YUV420
● OpenGLES Driver○ “vc4” ○ No YUV import
Raspberry Pi 3B+
![Page 14: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/14.jpg)
NXP
● DRM Driver○ “imx” and “etnaviv”○ No scaling (available via a separate ip)○ Supports overlays○ Supports NV12
● V4L2 Driver○ “coda”○ Supports NV12
● OpenGLES Driver○ “etnaviv”○ Supports EGL import○ Supports NV12 (WIP)
■ Target mesa 18.3■ gc3000 good performance■ gc2000 ok performance
Solidrun Cubox i4-Pro (gc2000)
![Page 15: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/15.jpg)
Qualcomm
● DRM Driver○ “msm”○ Supports scaling○ Supports overlays○ Supports NV12
● V4L2 Driver○ “venus”○ Supports NV12
● OpenGLES Driver○ “freedreno”○ Supports EGL import○ Supports NV12
Dragonboard 410c
![Page 16: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/16.jpg)
Others
HiSilicon
MediaTek
Renesas
Rockchip
Asus Tinkerboard S (RK3288)
Renesas R-Car
![Page 17: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/17.jpg)
Index
1. https://en.wikipedia.org/wiki/Zero-copy
2. https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt
3. https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txt
Kodi Implementation Links:
https://github.com/xbmc/xbmc/tree/master/xbmc/windowing/gbm
https://github.com/xbmc/xbmc/blob/master/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIME.cpp
https://github.com/xbmc/xbmc/blob/master/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp
https://github.com/xbmc/xbmc/blob/master/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
![Page 18: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/18.jpg)
Q/ATheme By: Samfisher Design
![Page 19: From Zero to Zero-Copy - Amazon S3...Zero-copy "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another](https://reader033.vdocuments.us/reader033/viewer/2022050715/5f34704f28162c27202233a0/html5/thumbnails/19.jpg)