Porting Tizen-IVI 3.0 to an ARM based SoC Platform

Similar documents
Porting Tizen-IVI 3.0 to an ARM based SoC Platform. Damian Hobson-Garcia, IGEL Co., Ltd.

Chromium Blink on Wayland with HW accelerated video playback using Gstreamer

Graphics Stack Update

Remote Access and Output Sharing Between Multiple ECUs for Automotive

The Automotive Grade Linux Build Service. ALS Tokyo '14, Jan-Simon Möller

Multimedia SoC System Solutions

Experiences Developing a Wayland-Based Tizen IVI HMI. Ossama Othman

Creating a profile from Tizen:Common. Stéphane Desneux Senior Software Engineer Eurogiciel

Wayland IVI Extension

WPE WebKit. HTML5 user interfaces for embedded devices. Juan José Sánchez Penas Embedded Linux Conference Prague, October 2017

Tizen IVI Architecture New features. Dominig ar Foll, Intel Open Source

Tizen IVI Architecture New features

IVI Graphic Subsystem: Weston IVI-shell is ready for Product

The pathway to Chromium on Wayland

Memory Management in Tizen. SW Platform Team, SW R&D Center

Bringing display and 3D to the C.H.I.P computer

Chromium on Wayland - Status update. Automotive Grade Linux F2F meeting (04/2017) Antonio Gomes & Silvia Cho

Experiences Developing a Wayland Based IVI HMI. Ossama Othman 28 May 2013

Introduction to creating 3D UI with BeagleBoard. ESC-341 Presented by Diego Dompe

Exporting virtual memory as dmabuf. Nikhil Devshatwar Texas Instruments, India

What s cooking in GStreamer. FOSDEM, Brussels 1 February Tim-Philipp Müller Sebastian Dröge

One-click Solution for Tizen Image Creation Based on Jenkins Framework. Zhang, Qiang (Intel Open Source Technology Center)

Team Up: Contributing to the Tizen Platform. Narasimha Swamy Sanjay NM

Bringing display and 3D to the C.H.I.P computer

AM57x Sitara Processors Multimedia and Graphics

Best Practice for Tizen Platform from Code to Device. Zhang, Qiang Chen, Gui (Intel Open Source Technology Center)

Efficient Video Processing on Embedded GPU

The Mobile Internet: The Potential of Handhelds to Bring Internet to the Masses. April 2008

Integration of the Chromium. Browser in the GENIVI Platform

4K Video Processing and Streaming Platform on TX1

4K HEVC Video Processing with GPU Optimization on Jetson TX1

Building Tizen Development Environment

4K Video Processing and Streaming Platform on TX1

Sync Points in the Intel Gfx Driver. Jesse Barnes Intel Open Source Technology Center

What's new in GStreamer

Completing the Multimedia Architecture

Status Report 2015/09. Alexandre Courbot Martin Peres. Logo by Valeria Aguilera, CC BY-ND

Specification Update. January 2014

Weston Plugin Based IVI Layer Management. Ossama Othman 20 September 2012

Wayland Support in Open Source Browsers

Our Technology Expertise for Software Engineering Services. AceThought Services Your Partner in Innovation

OpenMAX AL, OpenSL ES

QtWayland. Creating Window Compositors with the QtWayland module

Tizen 3.0 's Window System Integration Layer of OpenGLES/EGL & Vulkan Driver

Building X 2D rendering acceleration with OpenGL. Eric Anholt Intel Open Source Technology Center

UI, Graphics & EFL. Carsten Haitzler Principal Engineer Samsung Electronics Korea Founder/Leader Enlightenment / EFL

Methods to protect proprietary components in device drivers

Hardware Accelerated Graphics for High Performance JavaFX Mobile Applications

What's new in GStreamer Land The last 2 years and the future

Community preferred Renesas BSP Activity and How to use kingfisher on AGL

Generic Buffer Sharing Mechanism for Mediated Devices

Applications and Implementations

FOSDEM 3 February 2018, Brussels. Tim-Philipp Müller < >

Applications and Implementations

MAPPING VIDEO CODECS TO HETEROGENEOUS ARCHITECTURES. Mauricio Alvarez-Mesa Techische Universität Berlin - Spin Digital MULTIPROG 2015

Tizen Project Guideline. SKKU Embedded Software Lab.

Examination of Evaluation Method in High Load Use Case for IVI System Panasonic Corporation Takehiko Yasuda

DRM(Direct Rendering Manager) of Tizen Kernel Joonyoung Shim

Chromium s Way to Wayland October 11, 2017

Embedded Streaming Media with GStreamer and BeagleBoard. Presented by Todd Fischer todd.fischer (at) ridgerun.com

Display Virtualization with KVM for Automotive Systems

i.mx 6 Yocto Project Patch Release Notes

CE Linux 2007 GStreamer Tutorial

Embedded Linux UI Comparison. Tim Bird Senior Staff Software Engineer Sony Electronics

GStreamer Status Report: The Road Ahead. GStreamer Conference August 2012 San Diego. Tim-Philipp Müller

Contributing to Automotive Grade Linux and GENIVI Development Platform

GStreamer in the living room and in outer space

Connecting with Tizen : An Overview & Roadmap. Mohan Rao

FOSDEM Open Media Devroom. 02 February 2019, Brussels. Tim-Philipp Müller < >

Prospects for a more robust, simpler and more efficient shader cross-compilation pipeline in Unity with SPIR-V

A Linux multimedia platform for SH-Mobile processors

GStreamer Conference 2013, Edinburgh 22 October Sebastian Dröge Centricular Ltd

The Linux graphics stack, Optimus and the Nouveau driver

What s new in GStreamer. GUADEC, Strasbourg 26 July Tim-Philipp Müller Sebastian Dröge

Simple Plugin API. Wim Taymans Principal Software Engineer October 10, Pinos Wim Taymans

Tizen Overview (Tizen Ver. 2.3)

EGLSTREAMS: INTEROPERABILITY FOR CAMERA, CUDA AND OPENGL. Debalina Bhattacharjee Sharan Ashwathnarayan

UMMS introduction A Unified Multi Media Service for MeeGoTV and other Linux

Windowing System on a 3D Pipeline. February 2005

X11, X12, What next. And its companion: the ROOT GUI

In the Driver s Seat

Meet Crosswalk New HTML5 Runtime. Sakari Poussa Intel

Building a Remote Control Robot with Automotive Grade Linux

HTML5 Evolution and Development. Matt Spencer UI & Browser Marketing Manager

GStreamer 1.0. FOSDEM, Brussels 4 February Tim-Philipp Müller

Bringing it all together: The challenge in delivering a complete graphics system architecture. Chris Porthouse

The DSP/BIOS Bridge. Víctor Manuel Jáquez Leal. 06 February Igalia

OpenSDK OE Builds on 96Boards. Andrey Konovalov (LHG)

The Wayland Display Server

Building Tizen Development Environment

Reboot: Tizen Widget Framework. Hyun Ho, Kang Engineer Samsung Electronics. Copyright 2017 Samsung. All Rights Reserved.

What is new? Page 1. Peter Korsgaard, Maintainer ELCE 2013

Mali Developer Resources. Kevin Ho ARM Taiwan FAE

Track Three Building a Rich UI Based Dual Display Video Player with the Freescale i.mx53 using LinuxLink

Mobile AR Hardware Futures

Taking GStreamer to the Next Level. Tim-Philipp Müller

Display and Kernel Review and Future

Linaro: A Year of Change. David A Rusling, CTO April 2011

Xen Automotive Hypervisor Automotive Linux Summit 1-2 July, Tokyo

Tizen * IVI Hands-on Lab

Transcription:

Porting Tizen-IVI 3.0 to an ARM based SoC Platform Damian Hobson-Garcia Automotive Linux Summit July 1-2, 2014 Tokyo, Japan

Tizen IVI support Until recently Intel architecture (x86) system Tizen IVI 2.0alpha, Tizen IVI 3.0 ARM architecture based system Tizen IVI 2.0alpha (ivi-panda) Need to port Tizen IVI 3.0 to ARM ourselves

Current State of Affairs Intel architecture (x86) system Tizen IVI 2.0alpha, Tizen IVI 3.0 Tizen Common NEW ARM architecture based system Tizen IVI 2.0alpha (ivi-panda) Tizen Common NEW Tizen IVI now based on Tizen Common Lots of reuse

Target Platform Renesas R-Car Gen2 series platform R-Car M2 ARM Cortex A15 x2 R-Car H2 ARM Cortex A15 x4, + ARM Cortex A7 x4 (option) 3D Graphics System Imagination Technologies PowerVR series On board IP blocks H/W video decode/encode image processing

Agenda Objective Methodology Porting Tasks Weston/Wayland Integration WebKit Integration GStreamer Integration

Objective Tizen IVI 3.0 on R-Car M2/H2 1. Standard Native Applications Terminal program Open GL/ES applications 2. Web Browser and web applications 3. Multimedia Video playback (1080p @ 30fps)

Local Build Methodology Tizen IVI 3.0 milestone releases we used: M2-Sep (released Oct 11, 2013) M2-EOY (released Jan 15, 2014) M2-March2014 (released April 11, 2014) Non-hardware dependant packages Rebuild for ARM instruction set Hardware dependant packages Replace/update with R-Car M2/H2 support

Tizen Common/IVI Rebase Methodology Reuse Tizen Common ARM support for Tizen IVI 3.0 Most Tizen IVI packages now based on Tizen Common Non-hardware dependant packages Use prebuilt packages Hardware dependant packages Replace/update with R-Car M2/H2 support

Workflow and Source Code Download

Full local build review.tizen.org git source code repo https://source.tizen.org Building tizen from scratch Image creation Locally modified source code gbs mic File system image Flash onto target system Package Compilation Local binary package

Source Code and Build Preparation Get source code $ repo init -u review.tizen.org:scm/manifest -b tizen m ivi.xml.repo/ manifests/ ivi/ metadata.xml prebuilt.xml projects.xml Overwrite projects.xml with milestone manifest file http://download.tizen.org/${release_path}/builddata/manifest/xxx.xml Customize projects.xml

Using Tizen IVI Repos review.tizen.org git source code repo download.tizen.org Tizen IVI binary rpms Image creation Locally modified source code gbs mic File system image Package Compilation Flash onto target system Local binary package

Build Preparation (cont.) Use prebuilt ARM toolchain from tizen branch -<project name= pre-built/toolchain-arm... revision= tizen-ivi /> +<project name= pre-built/toolchian-arm... revision= tizen />.repo/ manifests/ ivi/ metadata.xml prebuilt.xml projects.xml $ repo sync

Porting Tasks Wayland/Weston (windows system) backend Use PowerVR driver instead of Mesa Web Applications Implement WaylandBufferManager (for WebKit) Multimedia Acceleration Video Playback 0 copy video stream processing (1080p @ 30fps)

Replacing the Mesa driver for Wayland/Weston

Wayland/Weston Overview client/server based windowing system client process Client Application client process Client Application Wayland protocol server process Weston Compositor client: draws application content server: composites one or more client windows to create output

Wayland/Weston with Mesa server process client process Weston Compositor Client Application Mesa wl_drm OpenGL driver generic unit Intel graphics dependent unit Wayland EGL extension lets Mesa use Wayland buffers gbm libdrm_intel other functional unit Wayland protocol buffer sharing Wayland prot. user space kernel ioctl GPU API drm/kms driver GPU driver

Wayland/Weston on R-Car M2/H2 client process server process Client Application Weston Compositor generic library proprietary library other functional unit almost same as wl_drm but with libkms back end uses generic dumb buffer backend wl_kms libkms libgbm PowerVR OpenGL driver Wayland protocol buffer sharing Wayland prot. user space kernel ioctl GPU API drm/kms driver GPU driver

Replacing Mesa Replacement libraries must Implement EGL_WL_bind_wayland_display EGL extension for Open GL/ES driver http://cgit.freedesktop.org/mesa/mesa/tree/docs/specs/wl_bind_wayl and_display.spec Provide libgbm Access to drm backend (https://github.com/robclark/libgbm) libdrm/libkms for access to memory buffers (provided in Tizen release) buffer sharing interface (similar to Mesa s wl_drm) libgbm backend should match buffer sharing interface

Replacing Mesa on Tizen 1. replace mesa library $ rm r <build directory>/platform/upstream/mesa $ cp my_libraries <build directory> 2. edit build.conf (build settings file) -%define with_mesa=1... +Substitute: pkgconfig(gl) +Substitute: mesa-devel pkgconfig(gles20)... Macros -%with_mesa=1 3. build the system $ gbs build A armv7l (for full build command line see http://source.tizen.org building Tizen from scratch )

Objective Tizen IVI 3.0 on R-Car M2/H2 1. Native Applications Terminal program Open GLES applications 2. Web Browser and web applications 3. Multimedia Video playback (1080p @ 30fps)

Webkit2 and WaylandBuffer Manager

Simple client-server configuration client process server process WebKit UI Process Weston Compositor Wayland protocol buffer sharing Wayland prot. ioctl GPU API wl_kms libgbm PowerVR OpenGL driver libkms generic library proprietary library user space other functional unit kernel drm/kms driver GPU driver

Webkit2 client-client/server-server configuration client process client/server process server process WebKit Web Process WebKit UI Process Weston Compositor wl_kms PowerVR OpenGL driver Wayland protocol buffer sharing Wayland prot. ioctl GPU API libkms wl_kms libgbm libkms generic library proprietary library user space other functional unit kernel drm/kms driver GPU driver

Webkit2 Buffer Allocation WaylandDisplay (class): Update to use wl_kms instead of wl_drm WaylandKmsBufferManager (class): Implementation of WaylandBufferManager interface client process WebKit Web Process WaylandDisplay WaylandKmsBufferManager client/server process WebKit UI Process wl_kms libkms Wayland protocol buffer sharing Wayland prot. ioctl libkms generic library other functional unit drm/kms driver

WaylandBufferManager Interface WaylandBufferManager and WaylandDisplay source: webkit-efl/source/webcore/platform/graphics/surfaces/wayland/ Interface for allocating/locking shareable buffers (e.g.. kms_bo) allocatebo returns handleid. *handle is pointer to shareable fd (ie. flinked fd, or DMABuf handle) query to get buffer virtual address class WaylandBufferManager { allocatebo(w, h, stride, size, align, *handle); locksurface(handleid); unlocksurface(handleid); freebo(handleid); query(handleid, **addr); }

Objective Tizen IVI 3.0 on R-Car M2/H2 1. Native Applications Terminal program Open GLES applications 2. Web Browser and web applications 3. Multimedia Video playback (1080p @ 30fps)

Using GStreamer with Tizen IVI 3.0

GStreamer Encode, decode, capture and display multimedia data Make a pipeline of components to do what you want video demuxer audio decoder sample player to speaker Example GStreamer pipeline video decoder frame renderer to screen

Video Decode on R-Car M2/H2 on Tizen IVI 3.0 Audio pipeline Software decode for now Video decode Use gst-omx to bridge GStreamer to OpenMAX IL component Color conversion/scaling Use hardware accelerated color conversion/scaling module Display Use waylandsink to display via Weston compositor

GStreamer H/W accelerated video decode client process GStreamer Application GStreamer Plugins gst-omx vspfilter (color conv./scaler) waylandsink OpenMAX IL Video decoder server process Weston Compositor H/W video decoder H/W color conv./scaling GPU hardware Wayland protocol API call data flow memcpy() full custom as-is upstream component Reneas proprietary library customized component

Waylandsink customization H/W color conversion requires physically contiguous buffers Waylandsink allocates non-contiguous shared memory buffers Add extra memcpy()s into pipeline. Buffers allocated from kms bo are physically contiguous (on our system) Use the same method as with WebKit to allocate and share graphics buffers

Waylandsink customized for libkms usage Allocated kms dumb buffers used for H/W color conversion. No memcpy()s required between video decode and screen display. client process GStreamer waylandsink gstbufferpool->alloc() libkms server process Weston compositor wl_kms libkms Wayland protocol buffer sharing Wayland prot. ioctl drm/kms driver generic library other functional unit

GStreamer H/W accelerated video decode no memcpy() client process GStreamer Application GStreamer Plugins gst-omx vspfilter (color conv./scaler) waylandsink OpenMAX IL Video decoder server process Weston Compositor H/W video decoder H/W color conv./scaling GPU hardware Wayland protocol API call data flow full custom as-is upstream component Reneas proprietary library customized component

Objective Tizen IVI 3.0 on R-Car M2/H2 1. Native Applications Terminal program Open GLES applications 2. Web Browser and web applications 3. Multimedia Video playback (1080p @ 30fps)

What we learned - review Building Use manifest xml file from milestone release on http://donwload.tizen.org Use mobile toolchain for ARM Weston/Wayland Need support for EGL_WL_bind_wayland_display in Open GL/ES driver Can use libkms dumb buffers WebKit Implement WaylandBufferManager; update WaylandDisplay Multimedia playback Use libkms and Wayland buffer sharing to implement 0-copy processing with physically contiguous memory buffers

Thank you. Questions?

Links Building Tizen from scratch https://source.tizen.org/documentation/developer-guide/all-oneinstructions/creating-tizen-images-scratch-one-page EGL_WL_bind_wayland_display EGL extension http://cgit.freedesktop.org/mesa/mesa/tree/docs/specs/ WL_bind_wayland_display.spec libgbm https://github.com/robclark/libgbm Renesas R-Car series platforms http://am.renesas.com/applications/automotive/cis/cis_highend/