SlideShare a Scribd company logo
Chromium on Wayland Desktop
(brainstorm)
BlinkOn7
Antonio Gomes & Frédéric Wang
Igalia
Agenda
● Who is Igalia?
● Motivation
● Background
● Discussion
Who is Igalia?
● Worker-owned, employee-run open source
consultancy company, based in Spain.
○ 55 employees around the world.
● Areas
○ WebKit, Chromium/Blink and Servo expertise.
○ JavaScript engines / Compilers (V8, JSC),
Multimedia, Graphics (Mesa), Networking,
Accessibility.
Motivation
● Being able to run Chromium natively in
Wayland-based systems will leverage its
adoption in a variety of systems / environments.
− Fedora 25 is shipping Wayland by default.
− Major GUI Toolkits have built-in support, including
Qt 5, Gtk+, Clutter, EFL.
− Support from AGL, GENIVI (automotive industry
consortium for IVI), Jolla, Raspberry Pi, Tizen.
Background
Background
● Ozone project
− Set of C++ classes for abstracting different window systems
on Linux.
− It provides abstraction for the construction of accelerated
surfaces underlying Aura UI framework, input devices
assignment and event handling.
− //ui/ozone/, //ui/events/ozone/ and //ui/base/cursor/ozone/
● Backends:
− DRM/GBM
− x11
− wayland
− cast
− headless
Background
● Ozone/Wayland (by Intel / 01.org)
− Off trunk.
− In “maintenance mode” - m49 (december/2015).
− Good community adoption.
● Ozone/Wayland (ToT)
− Partially upstreamed, but lacked functionality if
compared to Intel’s implementation.
− ChromeOS / mus+ash oriented.
− (used to have an) Outdated documentation.
− Limited buildbot coverage.
Background
● May/16 – start experimenting with
Chromium/Ozone/Wayland.
○ Ported part of the code from 01.org to ToT.
Internal “investment”
● content_shell ozone/wayland
Background
● Igalia got in touch with Google/Chromium
developers to understand the plans for
ui/ozone/platforms/wayland
○ figured about the exosphere project and
ChromeOS plans for mash
■ //components/exo/
■ //mash
○ figured that the original “desktop integration”
approach taken by 01.org did not comply with
the way future Linux desktop Chrome was
planned.
Background
Browser process
desktop integration
(ozone)
Renderer process
GPU process
ozone platform
wayland connection
IPC
Browser process
Renderer process
UI process
desktop integration
(mus)
ozone platform
wayland connection
Mojo
x11
wayland
Mus Linux desktop integration
Gpu service
(thread)
Linux desktop integration (01.org)
Background
● Sep-Oct/16
○ Bringing up of Ozone/Wayland.
○ Start experimenting with “Ozone != ChromeOS”.
○ Design discussions with Robert Kroeger.
○ Buildbots
○ Documentation
External “investment”
Background
● Nov-Dec/16
− CES demo: Linux/AGL/Wayland ; R-Car M3
Background
● Nov-Dec/16
− Performance on BrowserBench GPU tests
Background
● Since Jan/17
− //mash/simple_wm
− analysis of window classes
Discussions
Discussion: Internal vs External
● Internal-window mode
○ All the aura windows in the system end up sharing a
single display.
○ All the ash and Chrome aura windows are embedded
within a single top-level acceleratedWidget.
● External-window mode
○ What is the status today?
■ robert: unsure if code works/builds today.
○ Where is this in the code?
■ robert: entry point is WindowTreeHostFactory
class
− Do we have existing tests?
■ robert: No. mus_demo needs to be extended.
Discussion: Internal vs External
● Robert proposes a two-steps approach:
● Implementing external window mode in
ChromeOS/Ozone.
● Expand the support for non-ChromeOS Ozone builds.
After talking to sky@ et al, it was agreed with rjkroege@
that this is not the best way to approach the problem.
Alternatively, sky@ proposed to work this out directly on
LinuxOS/Ozone builds.
Discussion: Internal vs External
● LinuxOS
○ 1 “accelerated widget” per top-level mus
window
■ chrome/mus
○ Create a new “desktop-stub” replacement for Ash?
■ Desktop integration.
■ In essence, a subset of functionality currently provided by
Ash is delegated to the native window system.
■ //src/mash/simple_wm ?
● robert: no.
○ new flag, sibling to –mash?
■ robert: yes
Discussion: Mus/LinuxOS status
● Today
○ Ozone == ChromeOS
○ mus+ash == ChromeOS
● TBD
○ On LinuxOS, Ozone != mus+ash
■ Chrome/Mus
■ USE_X11 not to be defined
■ it ~works: builds / launches
● mix of _mus and _ozone classes are
being used
Discussion: Mus/LinuxOS plan
● Change Mus demo to work on external window mode.
○ Ongoing: Frederic / Antonio.
○ services/ui/demo/ (help from @kylechar)
■ WindowTreeHostFactory
■ ScreenManagerOzoneExternal (no delegate)
■ ui::Service creates ws::Display
■ rework internal window mode assumptions in the code.
● Change Chrome to launch in Mus external window
mode.
○ Chrome today launches the same way it ought to,
for Chrome/Mus.
● Continue with desktop integration work (feature
completion).
Discussion: UI / GPU split
● chrome –-mash still runs the UI and GPU
components in the same process but separate
threads.
− Future: musws and musgpu in separate processes
■ https://crbug.com/643746
● Mojo-fication of Ozone/Wayland
− Use similar approach than Ozone DRM/GBM
(ChromeOS)?
− GBM surface
■ robert: to be discussed later.

More Related Content

PDF
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
PDF
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
PDF
Building a Browser for Automotive: Alternatives, Challenges and Recommendations
PDF
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
PDF
LCU14 208- Chromium-Blink Migration for RDK
PDF
Contributions to an open source project: Igalia and the Chromium project
PDF
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
PDF
The Internal Architecture of Chrome Developer Tools
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
Building a Browser for Automotive: Alternatives, Challenges and Recommendations
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
LCU14 208- Chromium-Blink Migration for RDK
Contributions to an open source project: Igalia and the Chromium project
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
The Internal Architecture of Chrome Developer Tools

What's hot (20)

PDF
WebKit2 And You (GUADEC 2013)
PDF
Chrome & Webkit overview
PDF
Update on the open source browser space (16th GENIVI AMM)
PDF
WebKit and Blink: open development powering the HTML5 revolution
PDF
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
PDF
Ewebkit basic (Web rendering enging of EFL)
PDF
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
PDF
Chromium Ozone
PDF
WebKit for Wayland (Web Engines Hackfest 2014)
PDF
Android Chromium Rendering Pipeline
PDF
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
PDF
Fixing Gaps. Strengthening the Chromium platform for content blocking
PDF
GNOME.Asia 2015: BlankOn Linux Architecture
PDF
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
PDF
OVERVIEW: Chromium Source Tree
PDF
What's new with JavaScript in GNOME: The 2020 edition (GUADEC 2020)
ODP
How to use WebKitGtk+
PDF
Lessons from Contributing to WebKit and Blink
PDF
Manokwari: HTML5 desktop built with gnome
PDF
Development with Qt for Windows CE
WebKit2 And You (GUADEC 2013)
Chrome & Webkit overview
Update on the open source browser space (16th GENIVI AMM)
WebKit and Blink: open development powering the HTML5 revolution
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
Ewebkit basic (Web rendering enging of EFL)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Chromium Ozone
WebKit for Wayland (Web Engines Hackfest 2014)
Android Chromium Rendering Pipeline
Waylandifying Chromium: From downstream to shipping (ELCE 2020)
Fixing Gaps. Strengthening the Chromium platform for content blocking
GNOME.Asia 2015: BlankOn Linux Architecture
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
OVERVIEW: Chromium Source Tree
What's new with JavaScript in GNOME: The 2020 edition (GUADEC 2020)
How to use WebKitGtk+
Lessons from Contributing to WebKit and Blink
Manokwari: HTML5 desktop built with gnome
Development with Qt for Windows CE
Ad

Similar to Chromium on Wayland Desktop (BlinkOn 7) (20)

PDF
The Chromium/Wayland Project (BlinkOn 9)
PDF
The Chromium/Wayland project (Web Engines Hackfest 2017)
PDF
The Chromium project's Way to Wayland (FOSDEM 2018)
PPTX
Chromium wayland
PDF
Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)
PDF
Is Android the New Embedded Linux? at AnDevCon VI
PDF
Is Android the New Embedded Linux? at AnDevCon V
PDF
Building Android for the Cloud: Android as a Server (Mobile World Congress 2014)
PDF
Electron
PDF
The Chromium/Wayland Project (Lightning Talk) (BlinkOn 9)
PDF
X86 ROM Cooking 101 (Android Builders Summit 2014)
PDF
Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon S...
PDF
Headless Android
PDF
Opensource Software usability
PDF
libreCMC : The Libre Embedded GNU/Linux Distro
PDF
Headless Android (Wearable DevCon 2014)
PDF
Android ROM cooking: A practical Tutorial (DroidCon Torino 2014)
PDF
Is Android the New Embedded Linux? at AnDevCon IV
PDF
Linux GUI Applications on Windows Subsystem for Linux
PDF
Leveraging Android's Linux Heritage
The Chromium/Wayland Project (BlinkOn 9)
The Chromium/Wayland project (Web Engines Hackfest 2017)
The Chromium project's Way to Wayland (FOSDEM 2018)
Chromium wayland
Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon V
Building Android for the Cloud: Android as a Server (Mobile World Congress 2014)
Electron
The Chromium/Wayland Project (Lightning Talk) (BlinkOn 9)
X86 ROM Cooking 101 (Android Builders Summit 2014)
Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon S...
Headless Android
Opensource Software usability
libreCMC : The Libre Embedded GNU/Linux Distro
Headless Android (Wearable DevCon 2014)
Android ROM cooking: A practical Tutorial (DroidCon Torino 2014)
Is Android the New Embedded Linux? at AnDevCon IV
Linux GUI Applications on Windows Subsystem for Linux
Leveraging Android's Linux Heritage
Ad

More from Igalia (20)

PDF
Life of a Kernel Bug Fix
PDF
Unlocking the Full Potential of WPE to Build a Successful Embedded Product
PDF
Advancing WebDriver BiDi support in WebKit
PDF
Jumping Over the Garden Wall - WPE WebKit on Android
PDF
Collective Funding, Governance and Prioritiation of Browser Engine Projects
PDF
Don't let your motivation go, save time with kworkflow
PDF
Solving the world’s (localization) problems
PDF
The Whippet Embeddable Garbage Collection Library
PDF
Nobody asks "How is JavaScript?"
PDF
Getting more juice out from your Raspberry Pi GPU
PDF
WebRTC support in WebKitGTK and WPEWebKit with GStreamer: Status update
PDF
Demystifying Temporal: A Deep Dive into JavaScript New Temporal API
PDF
CSS :has() Unlimited Power
PDF
Device-Generated Commands in Vulkan
PDF
Current state of Lavapipe: Mesa's software renderer for Vulkan
PDF
Vulkan Video is Open: Application showcase
PDF
Scheme on WebAssembly: It is happening!
PDF
EBC - A new backend compiler for etnaviv
PDF
RISC-V LLVM State of the Union
PDF
Device-Generated Commands in Vulkan
Life of a Kernel Bug Fix
Unlocking the Full Potential of WPE to Build a Successful Embedded Product
Advancing WebDriver BiDi support in WebKit
Jumping Over the Garden Wall - WPE WebKit on Android
Collective Funding, Governance and Prioritiation of Browser Engine Projects
Don't let your motivation go, save time with kworkflow
Solving the world’s (localization) problems
The Whippet Embeddable Garbage Collection Library
Nobody asks "How is JavaScript?"
Getting more juice out from your Raspberry Pi GPU
WebRTC support in WebKitGTK and WPEWebKit with GStreamer: Status update
Demystifying Temporal: A Deep Dive into JavaScript New Temporal API
CSS :has() Unlimited Power
Device-Generated Commands in Vulkan
Current state of Lavapipe: Mesa's software renderer for Vulkan
Vulkan Video is Open: Application showcase
Scheme on WebAssembly: It is happening!
EBC - A new backend compiler for etnaviv
RISC-V LLVM State of the Union
Device-Generated Commands in Vulkan

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Empathic Computing: Creating Shared Understanding
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Modernizing your data center with Dell and AMD
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPTX
Big Data Technologies - Introduction.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Per capita expenditure prediction using model stacking based on satellite ima...
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Digital-Transformation-Roadmap-for-Companies.pptx
Spectral efficient network and resource selection model in 5G networks
Empathic Computing: Creating Shared Understanding
Dropbox Q2 2025 Financial Results & Investor Presentation
“AI and Expert System Decision Support & Business Intelligence Systems”
Modernizing your data center with Dell and AMD
Advanced methodologies resolving dimensionality complications for autism neur...
NewMind AI Monthly Chronicles - July 2025
Building Integrated photovoltaic BIPV_UPV.pdf
Electronic commerce courselecture one. Pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Big Data Technologies - Introduction.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025

Chromium on Wayland Desktop (BlinkOn 7)

  • 1. Chromium on Wayland Desktop (brainstorm) BlinkOn7 Antonio Gomes & Frédéric Wang Igalia
  • 2. Agenda ● Who is Igalia? ● Motivation ● Background ● Discussion
  • 3. Who is Igalia? ● Worker-owned, employee-run open source consultancy company, based in Spain. ○ 55 employees around the world. ● Areas ○ WebKit, Chromium/Blink and Servo expertise. ○ JavaScript engines / Compilers (V8, JSC), Multimedia, Graphics (Mesa), Networking, Accessibility.
  • 4. Motivation ● Being able to run Chromium natively in Wayland-based systems will leverage its adoption in a variety of systems / environments. − Fedora 25 is shipping Wayland by default. − Major GUI Toolkits have built-in support, including Qt 5, Gtk+, Clutter, EFL. − Support from AGL, GENIVI (automotive industry consortium for IVI), Jolla, Raspberry Pi, Tizen.
  • 6. Background ● Ozone project − Set of C++ classes for abstracting different window systems on Linux. − It provides abstraction for the construction of accelerated surfaces underlying Aura UI framework, input devices assignment and event handling. − //ui/ozone/, //ui/events/ozone/ and //ui/base/cursor/ozone/ ● Backends: − DRM/GBM − x11 − wayland − cast − headless
  • 7. Background ● Ozone/Wayland (by Intel / 01.org) − Off trunk. − In “maintenance mode” - m49 (december/2015). − Good community adoption. ● Ozone/Wayland (ToT) − Partially upstreamed, but lacked functionality if compared to Intel’s implementation. − ChromeOS / mus+ash oriented. − (used to have an) Outdated documentation. − Limited buildbot coverage.
  • 8. Background ● May/16 – start experimenting with Chromium/Ozone/Wayland. ○ Ported part of the code from 01.org to ToT. Internal “investment” ● content_shell ozone/wayland
  • 9. Background ● Igalia got in touch with Google/Chromium developers to understand the plans for ui/ozone/platforms/wayland ○ figured about the exosphere project and ChromeOS plans for mash ■ //components/exo/ ■ //mash ○ figured that the original “desktop integration” approach taken by 01.org did not comply with the way future Linux desktop Chrome was planned.
  • 10. Background Browser process desktop integration (ozone) Renderer process GPU process ozone platform wayland connection IPC Browser process Renderer process UI process desktop integration (mus) ozone platform wayland connection Mojo x11 wayland Mus Linux desktop integration Gpu service (thread) Linux desktop integration (01.org)
  • 11. Background ● Sep-Oct/16 ○ Bringing up of Ozone/Wayland. ○ Start experimenting with “Ozone != ChromeOS”. ○ Design discussions with Robert Kroeger. ○ Buildbots ○ Documentation External “investment”
  • 12. Background ● Nov-Dec/16 − CES demo: Linux/AGL/Wayland ; R-Car M3
  • 13. Background ● Nov-Dec/16 − Performance on BrowserBench GPU tests
  • 14. Background ● Since Jan/17 − //mash/simple_wm − analysis of window classes
  • 16. Discussion: Internal vs External ● Internal-window mode ○ All the aura windows in the system end up sharing a single display. ○ All the ash and Chrome aura windows are embedded within a single top-level acceleratedWidget. ● External-window mode ○ What is the status today? ■ robert: unsure if code works/builds today. ○ Where is this in the code? ■ robert: entry point is WindowTreeHostFactory class − Do we have existing tests? ■ robert: No. mus_demo needs to be extended.
  • 17. Discussion: Internal vs External ● Robert proposes a two-steps approach: ● Implementing external window mode in ChromeOS/Ozone. ● Expand the support for non-ChromeOS Ozone builds. After talking to sky@ et al, it was agreed with rjkroege@ that this is not the best way to approach the problem. Alternatively, sky@ proposed to work this out directly on LinuxOS/Ozone builds.
  • 18. Discussion: Internal vs External ● LinuxOS ○ 1 “accelerated widget” per top-level mus window ■ chrome/mus ○ Create a new “desktop-stub” replacement for Ash? ■ Desktop integration. ■ In essence, a subset of functionality currently provided by Ash is delegated to the native window system. ■ //src/mash/simple_wm ? ● robert: no. ○ new flag, sibling to –mash? ■ robert: yes
  • 19. Discussion: Mus/LinuxOS status ● Today ○ Ozone == ChromeOS ○ mus+ash == ChromeOS ● TBD ○ On LinuxOS, Ozone != mus+ash ■ Chrome/Mus ■ USE_X11 not to be defined ■ it ~works: builds / launches ● mix of _mus and _ozone classes are being used
  • 20. Discussion: Mus/LinuxOS plan ● Change Mus demo to work on external window mode. ○ Ongoing: Frederic / Antonio. ○ services/ui/demo/ (help from @kylechar) ■ WindowTreeHostFactory ■ ScreenManagerOzoneExternal (no delegate) ■ ui::Service creates ws::Display ■ rework internal window mode assumptions in the code. ● Change Chrome to launch in Mus external window mode. ○ Chrome today launches the same way it ought to, for Chrome/Mus. ● Continue with desktop integration work (feature completion).
  • 21. Discussion: UI / GPU split ● chrome –-mash still runs the UI and GPU components in the same process but separate threads. − Future: musws and musgpu in separate processes ■ https://crbug.com/643746 ● Mojo-fication of Ozone/Wayland − Use similar approach than Ozone DRM/GBM (ChromeOS)? − GBM surface ■ robert: to be discussed later.