Wayland Full-Screen Shell

Similar documents
Do Containers fully 'contain' security issues? A closer look at Docker and Warden. By Farshad Abasi,

Documentation 1.3 Wayland

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.

Hardware monitoring on Fujitsu mainboards. Hardware monitoring on Fujitsu mainboards

How To Write A Windows Operating System (Windows) (For Linux) (Windows 2) (Programming) (Operating System) (Permanent) (Powerbook) (Unix) (Amd64) (Win2) (X

HP ThinPro. Table of contents. Enabling RemoteFX for RDP. Technical white paper

Example of Standard API

Inside Android's UI Embedded Linux Conference Europe 2012 Karim

Here is a demonstration of the Aqua Accelerated Protocol (AAP) software see the Aqua Connect YouTube Channel

Building Docker Cloud Services with Virtuozzo

The Most Popular UI/Apps Framework For IVI on Linux

Capture and analysis of wireless traffic

Virtual Hosting & Virtual Machines

VA (Video Acceleration) API. Jonathan Bian 2009 Linux Plumbers Conference

Implementing and Managing Windows Server 2008 Hyper-V

Online Fuzzy-C-Means clustering

SPICE and desktop virtualization

ReactOS is (not) Windows. Windows internals and why ReactOS couldn t just use a Linux kernel

In this chapter, we want to make sure that your computer (and you) is ready for the Red Hat Linux installation.

DRM Driver Development For Embedded Systems

Experiences with 2-D and 3-D Mathematical Plots on the Java Platform

System Resources. To keep your system in optimum shape, you need to be CHAPTER 16. System-Monitoring Tools IN THIS CHAPTER. Console-Based Monitoring

CS197U: A Hands on Introduction to Unix

Have both hardware and software. Want to hide the details from the programmer (user).

Symantec Workspace Virtualization 7.6

High Level Design Distributed Network Traffic Controller

Virtualization: Hypervisors for Embedded and Safe Systems. Hanspeter Vogel Triadem Solutions AG

Технологии Java. Android: Введение. Кузнецов Андрей Николаевич. Санкт-Петербургский Государственный Политехнический Университет

Mathematical goals. Starting points. Materials required. Time needed

Installation Instructions Nochex Payment Module for Magento

Silverlight for Windows Embedded Graphics and Rendering Pipeline 1

LSN 10 Linux Overview

Review from last time. CS 537 Lecture 3 OS Structure. OS structure. What you should learn from this lecture

How To Backup On Ubuntu (Amd64) With Back In Time (Amd) On Windows Xp) On A Windows Xp (Amd32) On Ubunus On A Ubuntu

Harmonizing policy management with Murphy in GENIVI, AGL and TIZEN IVI

Cross-platform UI access

One platform for all your print, scan and device management

Fastboot Techniques for x86 Architectures. Marcus Bortel Field Application Engineer QNX Software Systems

Cisco Networking Academy Program Curriculum Scope & Sequence. Fundamentals of UNIX version 2.0 (July, 2002)

Technology in Action. Alan Evans Kendall Martin Mary Anne Poatsy. Eleventh Edition. Copyright 2015 Pearson Education, Inc.

Manage Your Virtual Desktop with Layers by John Whaley, CTO MokaFive

Administering and Maintaining Windows 7 Course 50292C; 5 Days, Instructor-led

Inside Linux* graphics

AMD Proprietary Linux Release Notes

Windows Presentation Foundation: What, Why and When

Course Outline. ttttttt

MS 50292: Administering and Maintaining Windows 7

Full and Para Virtualization

Remote Desktop on Mobile

Operating Systems. Study this screen display and answer these questions.

WEB, HYBRID, NATIVE EXPLAINED CRAIG ISAKSON. June 2013 MOBILE ENGINEERING LEAD / SOFTWARE ENGINEER

Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines

Overview of CS 282 & Android

Operating System Organization. Purpose of an OS

Security Overview of the Integrity Virtual Machines Architecture

How To Install Linux Titan

Converting Microsoft Access to SQL Server

Virtualization for Cloud Computing

Autodesk Inventor on the Macintosh

Android on i.mx Applications Processors

Surveillance System Using Wireless Sensor Networks

The 2014 Bottleneck Report on Enterprise Mobile

Outline SSS Microsoft Windows Server 2008 Hyper-V Virtualization

A+ Guide to Managing and Maintaining Your PC, 7e. Chapter 2 Introducing Operating Systems

Android Basics. Xin Yang

Free software GNU/Linux TOR project

Virtualization Technologies

Optimizing AAA Games for Mobile Platforms

APPLICATION VIRTUALIZATION TECHNOLOGIES WHITEPAPER

Author A.Kishore/Sachin VNC Background

Barracuda Load Balancer Online Demo Guide

Installation and setup of remote keyboard for monitoring system Multiscreen 5.x

The KSystemLog Handbook. Nicolas Ternisien

Introduction to WebGL

MS-50292: Administering and Maintaining Windows 7. Course Objectives. Required Exam(s) Price. Duration. Methods of Delivery.

LEARNING SOLUTIONS website milner.com/learning phone

Bluetooth Installation

Introducing SQL Server Express

Operating System Structures

Android Architecture Diagram:

System Requirements G E N E R A L S Y S T E M R E C O M M E N D A T I O N S

TMS Phone Books Troubleshoot Guide

Registry Tuner. Software Manual

System Structures. Services Interface Structure

Operating System Structures

Paid Advertising on Search Engines: Tips on how to create and manage a successful pay-per-click marketing campaign

Getting Started with RemoteFX in Windows Embedded Compact 7

Opus: University of Bath Online Publication Store

Autodesk 3ds Max 2010 Boot Camp FAQ

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

The Remote Desktop Connection Handbook. Brad Hards Urs Wolfer

Code Injection From the Hypervisor: Removing the need for in-guest agents. Matt Conover & Tzi-cker Chiueh Core Research Group, Symantec Research Labs

Transcription:

Intel Corporation Open-Source 3D Driver Team October 6, 2014

About Me Ph.D. student in mathematics at Iowa State University Involved in Wayland since early 2013 Working for Intel on the i965 driver since June

X Client X Client Window Manager X Client (X Client) X Server Device Drivers Input Input Output

Client Client Client Compositor (mutter, KWin, etc.) libinput Open GL evdev KMS DRM

What about code re-use? We push the common functionality into external libraries: KMS for modesetting DRM for buffer graphics buffer management OpenGL [ES] for GPU-accelerated compositing pixman for CPU-accelerated compositing libinput for handling different input devices X is using these too!

What about code re-use? We push the common functionality into external libraries: KMS for modesetting DRM for buffer graphics buffer management OpenGL [ES] for GPU-accelerated compositing pixman for CPU-accelerated compositing libinput for handling different input devices X is using these too!

What about code re-use? We push the common functionality into external libraries: KMS for modesetting DRM for buffer graphics buffer management OpenGL [ES] for GPU-accelerated compositing pixman for CPU-accelerated compositing libinput for handling different input devices X is using these too!

Why not just use X? X is a fine compositor if you want to let it handle input and compositing. Modern desktop environments (GNOME, KDE, E) want to handle input and compositing themselves.

Why not just use X? X is a fine compositor if you want to let it handle input and compositing. Modern desktop environments (GNOME, KDE, E) want to handle input and compositing themselves.

Why not just use X? X is a fine compositor if you want to let it handle input and compositing. Modern desktop environments (GNOME, KDE, E) want to handle input and compositing themselves.

X uses a common global namespace for everything Any client can resize/reposition any window Any client can get the contents of any window Any client can give any other client input Window managers are just clients that manage other clients windows using the above mechanisms

X uses a common global namespace for everything Any client can resize/reposition any window Any client can get the contents of any window Any client can give any other client input Window managers are just clients that manage other clients windows using the above mechanisms

X uses a common global namespace for everything Any client can resize/reposition any window Any client can get the contents of any window Any client can give any other client input Window managers are just clients that manage other clients windows using the above mechanisms

In Wayland... The compositor is at the center and each client has its own namespace Clients get input directly from the compositor Clients aren t, in general, aware of other clients existence A client s surface contents is kept between the compositor and the client This has all sorts of security and other benefits

In Wayland... The compositor is at the center and each client has its own namespace Clients get input directly from the compositor Clients aren t, in general, aware of other clients existence A client s surface contents is kept between the compositor and the client This has all sorts of security and other benefits

In Wayland... The compositor is at the center and each client has its own namespace Clients get input directly from the compositor Clients aren t, in general, aware of other clients existence A client s surface contents is kept between the compositor and the client This has all sorts of security and other benefits

The problem X provided a common userspace input/output layer All you have to do is implement a DDX and everything just runs on it (more-or-less) DRM, KMS, and OpenGL are focused on getting images to hardware Not all output devices are hardware

The problem X provided a common userspace input/output layer All you have to do is implement a DDX and everything just runs on it (more-or-less) DRM, KMS, and OpenGL are focused on getting images to hardware Not all output devices are hardware

The problem X provided a common userspace input/output layer All you have to do is implement a DDX and everything just runs on it (more-or-less) DRM, KMS, and OpenGL are focused on getting images to hardware Not all output devices are hardware

The problem X provided a common userspace input/output layer All you have to do is implement a DDX and everything just runs on it (more-or-less) DRM, KMS, and OpenGL are focused on getting images to hardware Not all output devices are hardware

Case Study 1: VNC/RDP Sessions How this is done on X: Implement either a full X server or a DDX for X.org Lives entirely in userspace and doesn t require root Clients and window managers talk to it like any other X server Several projects such as FreeRDP or x11vnc have done this

Case Study 1: VNC/RDP Sessions How this is done on X: Implement either a full X server or a DDX for X.org Lives entirely in userspace and doesn t require root Clients and window managers talk to it like any other X server Several projects such as FreeRDP or x11vnc have done this

Case Study 1: VNC/RDP Sessions How this is done on X: Implement either a full X server or a DDX for X.org Lives entirely in userspace and doesn t require root Clients and window managers talk to it like any other X server Several projects such as FreeRDP or x11vnc have done this

Case Study 1: VNC/RDP Sessions This poses some problems for Wayland: Current input/output abstractions assume hardware DRM and KMS require a kernel driver External libraries exist, but require native support in every compositor. Yes, Weston has an RDP backend, but adding backends for every network protocol to every compositor isn t a long-term solution.

Case Study 1: VNC/RDP Sessions This poses some problems for Wayland: Current input/output abstractions assume hardware DRM and KMS require a kernel driver External libraries exist, but require native support in every compositor. Yes, Weston has an RDP backend, but adding backends for every network protocol to every compositor isn t a long-term solution.

Case Study 1: VNC/RDP Sessions This poses some problems for Wayland: Current input/output abstractions assume hardware DRM and KMS require a kernel driver External libraries exist, but require native support in every compositor. Yes, Weston has an RDP backend, but adding backends for every network protocol to every compositor isn t a long-term solution.

Case Study 2: Screen recording/sharing How this is done on X: Implemented as a regular client Any client can grab any other clients contents or the entire front buffer Any client can send input to any other client This raises huge security concerns: Clients can grab sensitive information displayed by other clients Clients can fake input and control other clients. (What if they are running as root?)

Case Study 2: Screen recording/sharing How this is done on X: Implemented as a regular client Any client can grab any other clients contents or the entire front buffer Any client can send input to any other client This raises huge security concerns: Clients can grab sensitive information displayed by other clients Clients can fake input and control other clients. (What if they are running as root?)

Case Study 2: Screen recording/sharing How this is done on X: Implemented as a regular client Any client can grab any other clients contents or the entire front buffer Any client can send input to any other client This raises huge security concerns: Clients can grab sensitive information displayed by other clients Clients can fake input and control other clients. (What if they are running as root?)

Case Study 2: Screen recording/sharing How this is done on X: Implemented as a regular client Any client can grab any other clients contents or the entire front buffer Any client can send input to any other client This raises huge security concerns: Clients can grab sensitive information displayed by other clients Clients can fake input and control other clients. (What if they are running as root?)

How this is works in Wayland: Clients are isolated and no regular client can grab the screen Screen capturing is done by the compositor The result may be processed by the compositor directly or handed to a special trusted client Weston has support for some of this: Screen recording via a trusted weston-screenshooter client Screen recording to h.264 via libva All this is Weston and format specific

How this is works in Wayland: Clients are isolated and no regular client can grab the screen Screen capturing is done by the compositor The result may be processed by the compositor directly or handed to a special trusted client Weston has support for some of this: Screen recording via a trusted weston-screenshooter client Screen recording to h.264 via libva All this is Weston and format specific

How this is works in Wayland: Clients are isolated and no regular client can grab the screen Screen capturing is done by the compositor The result may be processed by the compositor directly or handed to a special trusted client Weston has support for some of this: Screen recording via a trusted weston-screenshooter client Screen recording to h.264 via libva All this is Weston and format specific

How this is works in Wayland: Clients are isolated and no regular client can grab the screen Screen capturing is done by the compositor The result may be processed by the compositor directly or handed to a special trusted client Weston has support for some of this: Screen recording via a trusted weston-screenshooter client Screen recording to h.264 via libva All this is Weston and format specific

How do we do this in Wayland? Someone suggested writing trusted protocol: Only accessible by trusted clients Allow a client to capture the screen and provide input Compositors implement one protocol Many people can write sharing/recording clients Everyone s happy? This is a lot of protocol!

How do we do this in Wayland? Someone suggested writing trusted protocol: Only accessible by trusted clients Allow a client to capture the screen and provide input Compositors implement one protocol Many people can write sharing/recording clients Everyone s happy? This is a lot of protocol!

How do we do this in Wayland? Someone suggested writing trusted protocol: Only accessible by trusted clients Allow a client to capture the screen and provide input Compositors implement one protocol Many people can write sharing/recording clients Everyone s happy? This is a lot of protocol!

How do we do this in Wayland? Suggestion: Use the Wayland protocol VNC/RDP servers, etc. implement a Wayland compositor Compositors launch the subsidiary compositor and connect as a Wayland client The compositor is still in control of who gets the screen contents The protocol is already written!

How do we do this in Wayland? Suggestion: Use the Wayland protocol VNC/RDP servers, etc. implement a Wayland compositor Compositors launch the subsidiary compositor and connect as a Wayland client The compositor is still in control of who gets the screen contents The protocol is already written!

Client Client Client Compositor (mutter, KWin, etc.) libinput Open GL evdev VNC/RDP Compositor KMS DRM

How do we do this in Wayland? Enter: wl fullscreen shell present surface: Presents a surface a single surface on an output with a possible scaling mode. present surface for mode: Provides similar functionality but gives the client control over modesetting

How do we do this in Wayland? Enter: wl fullscreen shell present surface: Presents a surface a single surface on an output with a possible scaling mode. present surface for mode: Provides similar functionality but gives the client control over modesetting

How do we do this in Wayland? Enter: wl fullscreen shell present surface: Presents a surface a single surface on an output with a possible scaling mode. present surface for mode: Provides similar functionality but gives the client control over modesetting

Demo!

Screen recording/sharing is just the beginning! Easier to write compositors: Write as a Wayland client and let Weston handle input/output Userspace Miracast Modesetting when kernel modules aren t an option Note: This is not a replacement for DRM/KMS!

Screen recording/sharing is just the beginning! Easier to write compositors: Write as a Wayland client and let Weston handle input/output Userspace Miracast Modesetting when kernel modules aren t an option Note: This is not a replacement for DRM/KMS!

Screen recording/sharing is just the beginning! Easier to write compositors: Write as a Wayland client and let Weston handle input/output Userspace Miracast Modesetting when kernel modules aren t an option Note: This is not a replacement for DRM/KMS!

Screen recording/sharing is just the beginning! Easier to write compositors: Write as a Wayland client and let Weston handle input/output Userspace Miracast Modesetting when kernel modules aren t an option Note: This is not a replacement for DRM/KMS!

Questions?