Chromium Blink on Wayland with HW accelerated video playback using Gstreamer

Similar documents
Graphics Stack Update

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

Porting Tizen-IVI 3.0 to an ARM based SoC Platform

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

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

LCA14-417: mmap, allocators & sharing buffers - userland experience. Thu 6 March, 4:10pm, S.Semwal, B.Gaignard

What's new in GStreamer

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

The pathway to Chromium on Wayland

Debugging with gdb and valgrind

Chromium s Way to Wayland October 11, 2017

Specification Update. January 2014

QtWayland. Creating Window Compositors with the QtWayland module

GRID SOFTWARE FOR HUAWEI UVP VERSION /370.28

X.org security. Recap, vulnerabilities, attacks and discussions on the graphic stack s security. Martin Peres & Timothée Ravier

i.mx 6 Yocto Project Patch Release Notes

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

Debugging and Profiling

Collecting Linux Trace without using CodeWarrior

Efficient Video Processing on Embedded GPU

Wayland Support in Open Source Browsers

96Boards - TV Platform

Remote Access and Output Sharing Between Multiple ECUs for Automotive

Sutter Beta Release Notes

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

Intro to Segmentation Fault Handling in Linux. By Khanh Ngo-Duy

4K Video Processing and Streaming Platform on TX1

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

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

Profiling and Debugging OpenCL Applications with ARM Development Tools. October 2014

The Evolution of Chrome Security Architecture. Huan Ren Director, Qihoo 360 Technology Ltd

Adobe Flash Player Manual Firefox Windows 7 64 Bit Chrome

4K Video Processing and Streaming Platform on TX1

NSIGHT ECLIPSE EDITION

Get your port on! porting to Native Client as of Pepper 18. Colt "MainRoach" McAnlis

Optimizing Android in the ARM Ecosystem. ARM Strategic Software Alliances

Debugging for production systems

Leveraging webos Technologies for Automotive. Lokesh Kumar Goel / Steve Lemke

EzBench, a tool to help you benchmark and bisect the Graphics Stack s performance

4K HEVC Video Processing with GPU Optimization on Jetson TX1

Multimedia SoC System Solutions

NSIGHT ECLIPSE EDITION

Integration of the Chromium. Browser in the GENIVI Platform

GRID SOFTWARE FOR HUAWEI UVP VERSION /370.12

Update on the open source browser space

Identifying Memory Corruption Bugs with Compiler Instrumentations. 이병영 ( 조지아공과대학교

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

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

TRACE32 as GDB Back-End

Generic Buffer Sharing Mechanism for Mediated Devices

Wayland IVI Extension

GStreamer for Tiny Devices Olivier Crête

JCreator. Starting JCreator

GStreamer in the living room and in outer space

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

GstShark profiling: a real-life example. Michael Grüner - David Soto -

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

Web browser architecture

Short Introduction to tools on the Cray XC system. Making it easier to port and optimise apps on the Cray XC30

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

GRID VGPU FOR VMWARE VSPHERE Version /

How Do I Turn Adobe Flash Player Back On >>>CLICK HERE<<<

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

CE Linux 2007 GStreamer Tutorial

Creating outstanding digital cockpits with Qt Automotive Suite

Using the Command Line

Sandboxing. CS-576 Systems Security Instructor: Georgios Portokalidis Spring 2018

Connecting with Tizen : An Overview & Roadmap. Mohan Rao

Tizen Overview (Tizen Ver. 2.3)

TEGRA LINUX DRIVER PACKAGE

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

Meet Crosswalk New HTML5 Runtime. Sakari Poussa Intel

Servicification: Modularizing Chromium

GRID SOFTWARE FOR VMWARE VSPHERE VERSION /370.12

Mali Graphics Debugger v4.9.2 User Guide

RELEASE NOTES. BeyondStudio for NXP JN-SW Build NXP Semiconductors

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

GRID SOFTWARE FOR VMWARE VSPHERE VERSION /370.21

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

Introducing LLDB for Linux on Arm and AArch64. Omair Javaid

Can Install Adobe Flash Player Plugin Firefox Ubuntu Terminal

Automation beyond Testing and Embedded System Validation

Tizen IVI Architecture New features

XID ERRORS. vr384 October XID Errors

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

AMT use case: Upipe + Chrome. Christophe Massiot (EBU multicast 2014)

Short Introduction to Tools on the Cray XC systems

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

Customizing the Yocto-Based Linux Distribution for Production

OpenMAX AL, OpenSL ES

Intel Parallel Studio XE 2017 Composer Edition BETA C++ - Debug Solutions Release Notes

Flash Player Manual Firefox 64 Bit Windows 8.1

Collect Linux Hardware Trace for ARMv8 User Space and Kernel Space Applications

gdbtui - Linux Command

Java Plugin Windows 7 32 Bit Ultimate Full Version

Exercise Session 6 Computer Architecture and Systems Programming

Qualcomm Snapdragon Profiler

Chrome Concrete Architecture Report

CSE 374 Programming Concepts & Tools. Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins)

Table of contents. 1 Overview about Pipelight. 2 Browser API & Communication. 3 Drawing & Input events. 4 Browser plugins and Wine

Transcription:

Chromium Blink on Wayland with HW accelerated video playback using Gstreamer Presented by Zoltan Kuscsik, PhD Christophe Priouzeau Date February 2015

Introduction Chromium Browser builds using OE Ozone plugins Gstreamer PPAPI plugin Gstreamer V4L on STM B2120 Wayland on Mali 400 Browser benchmarking

Building Chromium using OE/Yocto OE recipes are provided by meta-browser: https://github.com/ossystems/meta-browser The layer OE layer depends on openembedded-core and meta-openembedded available from http://git.openembedded.org/. meta-browser supports X11 or Wayland enabled OE builds and x86, x86-64, ARMv6, ARMv7 targets. ARMv5 is no longer supported by Chromium.

Debugging Chromium on OE meta-browser is generating Release builds. Debug builds are triggered by ninja build command when the Debug output directory is specified: # ninja -C ${S}/out/Debug chrome The debug binary is huge ~2GB Chromium uses a multi process architecture, you need to find the right process to attach the debugger. Chromium s internal debugger calls can t resolve any symbols if the binaries a stripped and debug info is separated from the main binary. To fix this, use the OE configs vars: INHIBIT_PACKAGE_DEBUG_SPLIT = "1" INHIBIT_PACKAGE_STRIP = "1"

Debugging Chromium on OE Debug scenarios: 1. It is your lucky day. In most of the cases if a Chromium process fails, it generates a backtrace for every process. With enabling some additional command line options, like --trace-to-console and --enable-logging --v=1 you can guess where is the problematic code. 2. It is not your lucky day and no backtrace information provided at crash. In this case, you can generate a core dump for further analysis or add gdb to the OE s IMAGE_INSTALL variable. Alternatively, install the gdbserver. To generate a core dump you have to disable sandbox using --no-sandbox and enable core dumps with # ulimit -c unlimited In general, it is a good practice to do a test run with --disable-gpu flag. If it is a GPU related issue, there may be already a GPU related workaround which you can enable with --gpu-driver-bug-workarounds <ID> It is also possible to attach debugger to individual Chromium processes. More info and detailed Chromium debugging tips on Linux: https://code.google.com/p/chromium/wiki/linuxdebugging

Ozone plugins Platform abstraction layer for low level graphics and input handling, for AURA based builds. Supported graphics subsystems: caca - text based graphics. dri - Full screen-only plugin, with Mesa-GBM backend. It allows hardware accelerated graphics. test - no dependency on hardware specific libraries, allows to test rendering into image dumps. egltest - X11 based plugin. wayland - external project https://github.com/01org/ozone-wayland egl - external project developed by Linaro, GPU accelerated rendering. fb - developed by Linaro for testing on Qemu/ARM builds.

Ozone - new plugins You have to provide an implementation of the following classes: SurfaceFactoryOzone - system specific implementation of surface allocation. Depending on implementation it supports SW based rendering (using Skia) or GPU based rendering (EGL path). SW rendering is provided by implementation of the the CreateCanvasForWidget method (see caca, test plugins). GPU accelerated rendering can be enabled if the GetNativeDisplay, CreateEGLSurfaceForWidget. LoadEGLGLES2Bindings methods of the plugin are implemented (egl, dri plugins). EventFactoryOzone - implementation of the event subsystem. In egl plugin we return the internal EventFactoryEvdev implementation. OzonePlatform - base class of the Ozone plugin

Chromium PPAPI Pepper Plugin Api Plugins way provided by Chromium/Blink Can be compiled inside or outside chromium source tree How to register your Ppapi plugins: /usr/bin/chrome/cefsimple ---register-pepper-plugins="/usr/lib/chrome/libppapi_gstreamer.so; application/x-ppapi-gst" Call the Ppapi via HTML web page: <embed type="application/x-ppapi-gstreamer" src="video uri"></embed>

Ppapi/gstreamer Gstreamer player implementation usage of playbin video hole punching Restriction of solution: chromium MUST be launched on fullscreen

Gstreamer V4L on STM B2120 V4L2 video decoder interface MEM2MEM interface DMA-BUF support Framebase interface Gstreamer V4l2 plugins STM V4l2 decoder plugins Gstreamer v4l2videodec (from plugins good)

Wayland on Mali400 Usage of Weston Compositor Backend from ST based on DRM/KMS with Egl compositor EGL compositor provided by Mali400 userland library Support of DMA-BUF