0% found this document useful (0 votes)
207 views17 pages

Chromium Integration for Developers

The document discusses integrating the Chromium Embedded Framework into embedded Linux systems. It describes the internals of Chromium and CEF, how to build them using the OpenEmbedded build system, and techniques for hardware accelerated graphics and video playback on embedded devices.

Uploaded by

cat220minecraft
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
207 views17 pages

Chromium Integration for Developers

The document discusses integrating the Chromium Embedded Framework into embedded Linux systems. It describes the internals of Chromium and CEF, how to build them using the OpenEmbedded build system, and techniques for hardware accelerated graphics and video playback on embedded devices.

Uploaded by

cat220minecraft
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

Chromium Embedded Framework

Integration

Presented by
Zoltan Kuscsik, PhD

Contact: [email protected]
Date
July 2015
●Linaro is #3 company contributor Top Linux Contributors by Company: Kernels 3.11-3.18
●Kernel
. maintainers from Linaro 1 None 11,968 (12.4%)
○Coresight framework
2 Intel 10,108 (10.5%)
○Backlight Class
○Clocksource and Clocksource Core 3 Red Hat 8,078 (8.4%)
○CPU Frequency drivers
○CPU Idle drivers 4 Linaro 5,415 (5.6%)
○ARM big.LITTLE
5 Samsung 4,290 (4.4%)
○DMA Buffer sharing framework
○Generic PM domain 6 Unknown 3,842 (4.0%)
○GPIO Subsystem
○KVM for ARM and ARM64 7 IBM 3,081 (3.2%)

○Multifunction devices (MFD)


8 SUSE 2,980 (3.0%)
○MMC/SD/SDIO Subsystem
○Open firmware and flattened device tree 9 Consultants 2,451 (2.5%)
○Pin control subsystem
10 TI 2,269 (2.4%)

Source: https://www.kernel.org/doc/linux/MAINTAINERS `
Linaro Home Group
● Linux Kernel Upstreaming
● LSK - Linaro Stable Kernel
● Energy Aware Scheduling
● Open Portable TEE
● LHG - Digital Home Group
● LMG - Mobile Group
● LCG - Community Board Group
● LAVA - Linaro Automated
Validation Architecture
● Landing Team and Premium
Services
Linaro Home Group
.
HTML5 on Embedded Linux
.
Hot topics:

● How to embed a browser into native applications?


○ CEF, WebKit, QtWebengine, Opera, Android WebView (Chromium).

● HW accelerated video playback.


○ Everyone has a hack for this.

● Encrypted Media Extensions


○ Adding DRM to the video playback hack
Why Chromium?
.

● It has GPU accelerated rendering.

● Uncertain future of WebKit.

● Various abstraction layers, plugin support: Ozone, Wayland


support, PPAPI and NaCL.

● Sandboxing support
Chromium internals
. Blink - is the layout engine of Chromium based on webkit.

Content Module - is the code base that enables to render a page using
Blink. It includes all the HTML5 platform features, GPU acceleration.

Content Shell - simple browser implementation on the top of the Content


API

Aura - Is the newly introduced window manager in Chromium. Historically,


the Content Module was directly depending on the GTK2 and Windows
HWND.

Ozone - is an abstraction layer for input events and graphics below the
Aura window manager. Its purpose is to abstract away the OS specific
windowing systems..
Chromium/CEF on ARM/Linux based Set-Top-Boxes

Gstreamer
interface using
a PPAPI plugin

Adding DMABuf / DRM


support without the need
of interfacing GBM/Mesa
Chromium Embedded Framework
.
Small library wrapping the chromium into a library libcef.
Native
Application
- Allows embedding browser window into third party applications.
The goal is to provide a stable API on the changing Content API.

- Enables native JavaScript CEF extensions. LibCEF

Upstream CEF supports only X86 builds with GTK/X11 backends.


We added support for ARM, Aura based window system and Ozone
interfaces: Content API

https://github.com/OSSystems/meta-browser

https://github.com/kuscsik/chromiumembedded
Graphics/Input system hardware abstraction: Ozone

● Better support for out-of-tree Chromium sub-projects.


● Support for hardware overlay based view composition!!!
● Provides abstract interfaces Platform Window, Cursor and Surfaces.

Running chromium with a selected Ozone implementation:

# ./chromium --ozone-platform=egl

Ozone implementations: x11-egl, DRM (Mesa/GBM), Wayland, Fullscreen EGL


(Linaro), test (png output), caca (text based).
GPU acceleration
● Requires EGL extensions for Fence sync

● Various workarounds in the Chromium tree for different embedded GPUs.

● Fallback to CPU based rendering if startup GPU test fails.

● Improves the speed of CSS2 animations - able to get around 40FPS for full
screen animations at 1080p on a set-top-box.

No dedicated benchmark to measure improvements. Benchmarks are


focusing are mostly exercising CPU based rendering and arithmetic
operations.
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.
Video playback

FFMPEG - works on all platforms, but SW decoding


is not an option on Linux embedded systems.

VAAPI - GPU accelerated video playback. Compile


time option, not enabled in Chrome builds.

PPAPI - Video playback using a PPAPI plugin


Linaro PPAPI/Gstreamer
● Rationale - concerns about the performance of non-tunneled video playback
and lack of secure video data path.
● Using hole punching - chromium MUST be launched on fullscreen.
● The approach works only with sandboxing disabled.
Wayland - Ozone Composition
Demo time
Chromium - overlay support

GPU

HW Overlay SoC’s compositor.


Blink Overlay
1
DRM/KMS (Linux)
Chromium System HWC (Android)
Compositor Compositor
HW Overlay
Blink Overlay Composit
Display
2 or HW

Video Video Layer


Overlay

You might also like