QtWayland. Creating Window Compositors with the QtWayland module

Similar documents
Why you should be excited about Qt 5

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

EFL on Wayland. Rafael Antognolli October, 22th

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

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

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

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

Qt Essentials - Fundamentals of Qt Module

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

Hardware Accelerated Graphics for High Performance JavaFX Mobile Applications

<Insert Picture Here> JavaFX 2.0

We are the 1 % Porting KWin to Qt 5 Martin Gräßlin Bilbao Akademy

Qt for Device Creation

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

Porting Tizen-IVI 3.0 to an ARM based SoC Platform

The Linux graphics stack, Optimus and the Nouveau driver

The Wayland Display Server

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

Chromium Blink on Wayland with HW accelerated video playback using Gstreamer

Presentation to the Linux Supporters Group Adelaide. on Wednesday 6/5/2009 by Hayden Tremethick.

Creating outstanding digital cockpits with Qt Automotive Suite

Wayland IVI Extension

Accelerating Realism with the (NVIDIA Scene Graph)

OpenGL on Android. Lecture 7. Android and Low-level Optimizations Summer School. 27 July 2015

Kick Start your Embedded Development with Qt

RAMSES. TECHNICAL OVERVIEW.

OpenGL with Qt 5. Qt Developer Days, Berlin Presented by Sean Harmer. Produced by Klarälvdalens Datakonsult AB

Graphics Stack Update

What s New (and better) in Qt

GTK+ 4 Status Update. Matthias Clasen

Window Compositor Developer s Guide

TG-Gallium Driver Stack. Softpipe, Cell and Beyond. Keith Whitwell

Module 13C: Using The 3D Graphics APIs OpenGL ES

Performance Driven Development on Low- Cost Embedded Hardware Increasing Return-On-Investment & shortening time-to-market

OpenMAX AL, OpenSL ES

+ C++11. Qt5 with a touch of C++11. Matthew Eshleman covemountainsoftware.com

Generic Buffer Sharing Mechanism for Mediated Devices

ArcGIS Runtime SDK for Java: A Beginner s Guide. Mark Baird JC Malott

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

Simplifying Applications Use of Wall-Sized Tiled Displays. Espen Skjelnes Johnsen, Otto J. Anshus, John Markus Bjørndalen, Tore Larsen

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

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

Khronos and the Mobile Ecosystem

Qt Essentials - Model View Module

Texture Caching Implementation for Hardware Accelerated 2D Rendering

PERFORMANCE OPTIMIZATIONS FOR AUTOMOTIVE SOFTWARE

Merits of QT for developing Imaging Applications UI

ArcGIS Runtime: Maximizing Performance of Your Apps. Will Jarvis and Ralf Gottschalk

Rendering Objects. Need to transform all geometry then

Review. Designing Interactive Systems II. Introduction. Web 2.0 in keywords GWT Cappuccino HTML5. Cross platform GUI Toolkit

Designing Interactive Systems II

GPU Memory Model Overview

Desktop Mapping: Creating Vector Tiles. Craig Williams

Wayland Support in Open Source Browsers

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

EFL at ELC 2016 A toolkit for developping efficient and attractive Uis on embedded devices

AN ENTITY-COMPONENT SYSTEM IN C++ AND QT - JAMES TURNER QT3D S ECS

Visual HTML5. Human Information Interaction for Knowledge Extraction, Interaction, Utilization, Decision making HI-I-KEIUD

Efficient Video Processing on Embedded GPU

QT QUICK UI Exam Curriculum

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

Qt in Automotive. FOSDEM // Brussels 2018

WebGL, WebCL and Beyond!

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

WebGL. Announcements. WebGL for Graphics Developers. WebGL for Web Developers. Homework 5 due Monday, 04/16. Final on Tuesday, 05/01

Rasterization Overview

Demo 1: Simple Dynamic Simulation

Core Graphics and OpenGL ES. Dr. Sarah Abraham

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

Meet Qt. The Leading Cross-Platform Application and UI Framework. The Qt Company. June

What's new in GStreamer

Blis: Better Language for Image Stuff Project Proposal Programming Languages and Translators, Spring 2017

ArcGIS Runtime: Building 3D Apps. Rex Hansen Adrien Meriaux

Bringing Vulkan to VR. Cass Everitt, Oculus

Mobile Graphics Ecosystem. Tom Olson OpenGL ES working group chair

A thousand maps in your pocket

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

Overview. Technology Details. D/AVE NX Preliminary Product Brief

Dave Shreiner, ARM March 2009

CS130 : Computer Graphics. Tamar Shinar Computer Science & Engineering UC Riverside

Bringing your Data to Life in the ArcGIS API for JavaScript: Vector Tiles. Craig Williams &

Hands-On Workshop: 3D Automotive Graphics on Connected Radios Using Rayleigh and OpenGL ES 2.0

User's Guide Low Poly OBJ Importer v1.0

Working with Metal Overview

ECE 598 Advanced Operating Systems Lecture 18

Designing Interactive Systems II

i.mx 6 Yocto Project Patch Release Notes

Integrating QML with C++

Completing the Multimedia Architecture

From Separated ECUs to a Display Cluster April 18, 2018

! Readings! ! Room-level, on-chip! vs.!

Update on the open source browser space

Advances in Qt 3D. Kévin Ottens, Software Craftsman at KDAB

Hands-On Workshop: An Introduction to OpenVG

Using SPIR-V in practice with SPIRV-Cross

Qt a Framework for the Multi-Screen World

EFL. Enlightenment Foundation Libraries Architecture & Usage

Mali Demos: Behind the Pixels. Stacy Smith

CS230 : Computer Graphics Lecture 4. Tamar Shinar Computer Science & Engineering UC Riverside

Superbuffers Workgroup Update. Barthold Lichtenbelt

Transcription:

QtWayland Creating Window Compositors with the QtWayland module Andy Nichols 2012

A little about me... Andy Nichols Software Engineer at Digia 6 years of Qt experience Former Qt Support Engineer Maintainer of QtWayland

Outline The past (QWS) What is wayland? The QtWayland Module How do you use QtWayland?

In case you have not heard...

QWS has been removed in Qt 5.0

QWS Graphics Stack

Direct Rendering with QWS Clients map regions of the framebuffer Regions are written to directly by client

Accelerated Graphics in QWS Custom QScreen plugin Custom paint engine Custom paint device

If that is the case, then why replace QWS?

It works great for its original use case

But we are not living in that world anymore

Have you ever actually had to support OpenGL in QWS?

QWS is inflexible Supporting new hardware Customization of look and feel

Lack of OpenGL Support OpenGL QScreen Plugins do exist Limited to particular hardware Require specific API's Limited to a single process

QWS: Does it still make sense? Overlap with QPA Few QWS developers Protocol design is hard

And then came a project called Wayland

What is Wayland? "Wayland is a protocol for a compositor to talk to its clients as well as a C library implementation of that protocol." -wayland.freedesktop.org

Wayland Compositors can be a standalone display server an X11 application a wayland client Weston Compositor

Wayland Clients can be Traditional applications X servers rootless fullscreen other display servers

How does Wayland work? 1. Input events 2. Direct events to client a. Location in scenegraph b. Inverse transform 3. Respond to UI events a. Render changes b. notify compositor of changed regions 4. Post composition to output src: wayland.freedesktop.org

The Wayland Compositor Composes output Handles Input devices Forwards input events to clients Coordinates client buffers

The Wayland Clients Renders to a surface buffer Shared Memory buffers native buffers (GPU memory) Notifies compositor of changes

Wayland Buffer Sharing Shared Memory buffers Raster based toolkits GPU buffers shared between processes with EGL mapped as a texture no additional upload costs Wayland-EGL

Why choose Wayland? Lightweight Fast and Smooth External Open Source Project Easy to make customized Compositor Protocol is extendable

but the best reason is...

Cross toolkit compatibility

Try doing that with QWS!

The QtWayland Module Wayland platform plugin QtCompositor API

Running Qt Applications in a Wayland Compositor Just add "-platform wayland" To run as a wayland client

Demo Time

QtCompositor API

WaylandCompositor Subclass to create your own compositor reimplement surfacecreated(waylandsurface *surface) Call framefinished() after all surfaces are rendered.

WaylandSurface Emits signals when client's state has changed mapped unmapped damaged Contains data needed to render surface

WaylandSurface data

WaylandInputDevice Get instance from: WaylandCompositor::defaultInputDevice() Forward events to Wayland clients. Focus management

QWindow Compositor Demo

WaylandSurfaceItem QtQuick 2.0 Item for WaylandSurface

QML Compositor Demo

QtWayland on new hardware Wayland-EGL Hardware Integrations Client QWaylandGLIntegration native window surface native OpenGL Context Server GraphicsHardwareIntegration native buffer how to map native buffer to texture

Hardware without OpenGL No native GPU buffers are used No QtQuick 2.0 Mesa + LLVM software rendered OpenGL possible

Compositor Creativity Demo

The Future of QtWayland Full wayland 1.0.0 spec support Proper client side decorations qt-wayland-scanner Fullscreen direct rendering

Questions?

Thanks for coming! email: andy.nichols@digia.com freenode irc: nezticle