Zero-Copy Video Streaming on Embedded Systems the Easy Way

Total Page:16

File Type:pdf, Size:1020Kb

Zero-Copy Video Streaming on Embedded Systems the Easy Way Zero-Copy Video Streaming on Embedded Systems the Easy Way Michael Tretter - [email protected] Embedded Linux Conference-Europe Philipp Zabel - [email protected] Oct 25, 2017 Slide 1 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Examples ● Presentation capture and streaming ● Augmented Reality ● UAV video downlink ● Intercom CC BY-SA 4.0: Unknownlfcg – Own work CC BY 4.0: kremlin.ru Slide 2 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Agenda ● Video and graphics on embedded devices ● Hardware acceleration units and Zero-Copy buffer sharing ● Case study: i.MX6 ● The easy way ● Open Issues & Future Work Slide 3 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Building Blocks ● Recording / Streaming ● Receiving / Projection / Compositing ● Lens correction / Warping ● Transcoding CC BY-SA 4.0: DXR - Own work Slide 4 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Embedded System Requirements ● Portable ● Soft real-time ● Energy efficient ● “High” data rates ● Lightweight Limited processing power vs. Audio/Video use case Slide 5 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Specialized Co-processors ● Graphics Processing Unit ● Supported or preferred format in ● Video encoder and decoder memory differ ● ● FPGA Copy and conversion between hardware units required ● Camera ● Display Controller ● Network Controller Slide 6 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Zero-Copy "Zero-copy" describes computer ● Copying in CPU is expensive operations in which the CPU does not ● CPU memory bandwidth smaller perform the task of copying data from than hardware acceleration units one memory area to another. ● CPU cache management (Wikipedia) Slide 7 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Putting it all Together, Case study: i.MX6 ● Memory bandwidth ● Up to quad-core Cortex A9, 1 GHz ● Up to 533 MHz DDR3 SDRAM ● CPU memcpy ~500 MiB/s (1066 MT/s @ 64-bit) ● 1080p30 YUYV: 120 MiB/s ● Realistically, up to 2.5 GiB/s on ● Cache management overhead i.MX6Q, more on i.MX6QP Slide 8 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Putting it all Together, Case study: i.MX6 ● GPU: Vivante GC2000 ● Display: IPUv3 display interface CPUs ● Camera: IPUv3 capture interface External ● GPU VPU: Chips&Media CODA960 Memory Display AXI/ Interface AHB Capture Interface Internal VPU SRAM Slide 9 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Device Drivers and Interfaces ● GPU: Vivante GC2000 ● etnaviv (DRM) ● Display: IPUv3 display interface ● imx-drm (DRM, KMS) ● Camera: IPUv3 capture interface ● imx-media (Video4Linux2), staging ● VPU: Chips&Media CODA960 ● coda (Video4Linux) ● Userspace: Mesa/etnaviv (OpenGL) ● DMABuf Slide 10 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Kernel Userspace Slide Slide BeforeDMABuf W 11 - - © Pengutronix -http://www.pengutronix.de - CaptureCSI, V4L2) (IPUv3 mmap R CPU copy CPU 10/25/2017 W Encode (CODA960, V4L2) Encode (CODA960, mmap R W Kernel Userspace Slide Slide DMABuf W 12 CaptureCSI, V4L2) (IPUv3 - ©Pengutronix - - http://www.pengutronix.de - fd dup 10/25/2017 Encode (CODA960, V4L2) Encode (CODA960, R W Kernel Userspace Slide Slide DMABuf 13 Decode V4L2) (CODA960, - ©Pengutronix - - http://www.pengutronix.de - R W fd dup 10/25/2017 Display(IPUv3, DRM) R Device Drivers and Interfaces (API) ● V4L2 ioctls: Import/export DMABuf handles VIDIOC_EXPBUF from/into video devices VIDIOC_QBUF ● DRM ioctls: Import/export DMABuf handles DRM_IOCTL_PRIME_HANDLE_TO_FD from/into GPU or display contoller DRM_IOCTL_PRIME_FD_TO_HANDLE devices, used by libdrm/Mesa ● EGL extensions: These sit on top of EGL_EXT_image_dma_buf_import DRM_IOCTL_PRIME_* EGL_EXT_image_dma_buf_import_modifiers EGL_MESA_image_dma_buf_export Slide 14 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Device Drivers and Interfaces: V4L2 /* V4L2 DMABuf export */ /* V4L2 DMABuf import */ int video_fd = open("/dev/v4l/by-name/csi", int dmabuf_fd; O_RDWR); int video_fd = open("/dev/v4l/by-name/coda", O_RDWR); struct v4l2_requestbuffers reqbuf = { .count = 1, struct v4l2_requestbuffers reqbuf = { .type = V4L2_BUF_TYPE_VIDEO_CAPTURE, .count = 1, .memory = V4L2_MEMORY_MMAP, .type = V4L2_BUF_TYPE_VIDEO_OUTPUT, }; .memory = V4L2_MEMORY_DMABUF, ioctl(video_fd, VIDIOC_REQBUFS, &reqbuf); }; ioctl(video_fd, VIDIOC_REQBUFS, &reqbuf); struct v4l2_exportbuffer expbuf = { .type = V4L2_BUF_TYPE_VIDEO_CAPTURE, struct v4l2_buffer buf = { .index = 0, .type = V4L2_BUF_TYPE_VIDEO_OUTPUT, }; .memory = V4L2_MEMORY_DMABUF, ioctl(video_fd, VIDIOC_EXPBUF, &expbuf); .index = 0, .m.fd = dmabuf_fd, int dmabuf_fd = expbuf.fd; }; ioctl(video_fd, VIDIOC_QBUF, &buf); https://linuxtv.org/downloads/v4l-dvb-apis-new/uapi/v4l/vidioc-expbuf.html https://linuxtv.org/downloads/v4l-dvb-apis-new/uapi/v4l/dmabuf.html Slide 15 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 Device Drivers and Interfaces: EGL/OpenGL ES EGLint attrib_list[] = { int dmabuf_fd; EGL_WIDTH, 1920, int stride; EGL_HEIGHT, 1280, EGL_LINUX_DRM_FOURCC_EXT, eglExportDMABUFImageMESA( DRM_FORMAT_YUYV, egl_display, EGL_DMA_BUF_PLANE0_FD_EXT, dmabuf_fd, egl_image, EGL_DMA_BUF_PLANE0_FD_OFFSET_EXT, 0, &dmabuf_fd, EGL_DMA_BUF_PLANE0_FD_PITCH_EXT, 3840, &stride); EGL_NONE, }; EGLImageKHR egl_image = eglCreateImageKHR( egl_display, EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT, NULL, attrib_list); glEGLImageTargetTexture2DOES( GL_TEXTURE_EXTERNAL_OES, egl_image); https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt https://www.khronos.org/registry/EGL/extensions/MESA/EGL_MESA_image_dma_buf_export.txt Slide 16 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 The Easy Way Slide 17 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 GStreamer “GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing. Applications can take advantage of advances in codec and filter technology transparently. Developers can add new codecs and filters by writing a simple plugin with a clean, generic interface.” Slide 18 - © Pengutronix - http://www.pengutronix.de - 10/25/2017 GStreamer gst-launch-1.0 playbin uri=file:///home/mtr/Videos/tears_of_steel_720p.mkv <GstPlayBin> playbin0 [>] current-uri="file:////home/mtr/Videos/tears_of_steel_720p.mkv" source=(GstFileSrc) source n-video=1 current-video=0 n-audio=1 current-audio=0 audio-sink=(GstPulseSink) pulsesink0 video-sink=(GstXvImageSink) xvimagesink0 video-stream-combiner=(GstInputSelector) inputselector0 audio-stream-combiner=(GstInputSelector) inputselector1 sample=((GstSample*) 0x5590b656c030) GstPlaySink playsink [>] parent=(GstPlayBin) playbin0 flags=video+audio+text+soft-volume+deinterlace+soft-colorbalance sample=((GstSample*) 0x5590b656c110) video-sink=(GstXvImageSink) xvimagesink0 audio-sink=(GstPulseSink) pulsesink0 send-event-mode=first GstBin abin [>] parent=(GstPlaySink) playsink GstPlaySinkAudioConvert GstPulseSink aconv pulsesink0 [>] [>] parent=(GstBin) abin parent=(GstBin) abin GstQueue use-converters=TRUE enable-last-sample=FALSE aqueue audio/x-raw device="alsa_output.pci-0000_00_1b.0.analog-stereo" [>] format: F32LE current-device="alsa_output.pci-0000_00_1b.0.analog-stereo" parent=(GstBin) abin audio/x-raw layout: interleaved device-name="Built-in Audio Analog Stereo" current-level-buffers=44 format: F32LE GstAudioConvert GstAudioResample audio/x-raw rate: 44100 current-level-bytes=360448 layout: interleaved audio/x-raw conv audio/x-raw resample format: F32LE channels: 2 current-level-time=1022000000 rate: 44100 format: F32LE [>] format: F32LE [>] layout: interleaved src channel-mask: 0x0000000000000003 sink silent=TRUE channels: 2 layout: interleaved parent=(GstPlaySinkAudioConvert) aconv layout: interleaved parent=(GstPlaySinkAudioConvert) aconv sink rate: 44100 [>][bfb] [ >][ bfb] channel-mask: 0x0000000000000003 [>][bfb] rate: 44100 rate: 44100 channels: 2 channels: 2 channels: 2 sink src channel-mask: 0x0000000000000003 proxypad14 proxypad13 channel-mask: 0x0000000000000003 sink src channel-mask: 0x0000000000000003 sink src [>][bfb] audio/x-raw [ >][ bfb] [>][bfb][T] [>][bfb] [>][bfb] [ >][ bfb] [>][bfb] [ >][ bfb] format: F32LE layout: interleaved rate: 44100 channels: 2 GstIdentity identity audio/x-raw channel-mask: 0x0000000000000003 format: F32LE [>] proxypad15 parent=(GstPlaySinkAudioConvert) aconv layout: interleaved [>][bfb] rate: 44100 signal-handoffs=FALSE channels: 2 sink channel-mask: 0x0000000000000003 [>][bfb] sink src [>][bfb] [ >][ bfb] GstInputSelector inputselector0 video/x-raw [>] format: I420 parent=(GstPlayBin) playbin0 video/x-raw width: 1280 n-pads=1 GstURIDecodeBin format: I420 height: 534 uridecodebin0 video/x-raw active-pad=(GstSelectorPad) sink_0 GstBin width: 1280 interlace-mode: progressive GstStreamSynchronizer [>] format: I420 vbin height: 534 pixel-aspect-ratio: 1/1 streamsynchronizer0 parent=(GstPlayBin) playbin0 width: 1280 video/x-raw [>] [>] uri="file:////home/mtr/Videos/tears_of_steel_720p.mkv" height: 534 sink_0 interlace-mode: progressive chroma-site: mpeg2 format: I420 parent=(GstPlaySink) playsink parent=(GstPlaySink) playsink source=(GstFileSrc) source interlace-mode: progressive running-time=41000000 pixel-aspect-ratio: 1/1 colorimetry: bt709 width: 1280 caps=video/x-raw(ANY); audio/x-raw(ANY); text/x-raw(ANY); subpicture/x-dvd; subpictur… pixel-aspect-ratio: 1/1 t ags=(( Gst TagList *) 0x7fa4c40d7f20) chroma-site:
Recommended publications
  • Customizable Multimedia Devices in Virtual Environments
    Customizable Multimedia Devices in Virtual Environments Ankur Pai, Balasubramanian Seshasayee, Himanshu Raj and Karsten Schwan Center for Experimental Research in Computer Systems Georgia Institute of Technology Atlanta, Georgia 30332–0250 fpaiankur, bala, rhim, [email protected] Abstract—The separation of logical from physical devices maintain a consistent view of physical devices by presenting provided by modern virtualization techniques can be used to only a common minimal set of device features is too limiting enhance device functionality, including by emulating non-native and worse, it cannot account for changes in the environmental device functions in software. Such logically extended devices are particularly promising in the mobile domain, for embedded conditions or contexts in which devices are used. machines, handhelds, or phones. Challenges arise, however, from We argue that device sharing and interoperation in mobile the highly heterogeneous nature of portables and the devices with systems requires models and interfaces with which virtual- which they can interact. This suggests that device extensions ization infrastructures can dynamically change device func- should be dynamic, varied at runtime to adjust to new user needs and/or changes in environmental conditions. This paper tionality to account for runtime changes in device use, con- presents a model for runtime device extension and for then using ditions, and contexts. This paper presents such a model. It such extended devices. The model provides uniform interfaces to implements the safe, runtime extension of device functionality, native and extended devices, permits the safe runtime extension by enabling the virtualization layer, guest operating systems, of device functionality, and can be shown to operate across both or applications to safely specify and deploy custom code that stationary and mobile platforms, and arbitrary operating systems and applications.
    [Show full text]
  • System Calls System Calls
    System calls We will investigate several issues related to system calls. Read chapter 12 of the book Linux system call categories file management process management error handling note that these categories are loosely defined and much is behind included, e.g. communication. Why? 1 System calls File management system call hierarchy you may not see some topics as part of “file management”, e.g., sockets 2 System calls Process management system call hierarchy 3 System calls Error handling hierarchy 4 Error Handling Anything can fail! System calls are no exception Try to read a file that does not exist! Error number: errno every process contains a global variable errno errno is set to 0 when process is created when error occurs errno is set to a specific code associated with the error cause trying to open file that does not exist sets errno to 2 5 Error Handling error constants are defined in errno.h here are the first few of errno.h on OS X 10.6.4 #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* Input/output error */ #define ENXIO 6 /* Device not configured */ #define E2BIG 7 /* Argument list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file descriptor */ #define ECHILD 10 /* No child processes */ #define EDEADLK 11 /* Resource deadlock avoided */ 6 Error Handling common mistake for displaying errno from Linux errno man page: 7 Error Handling Description of the perror () system call.
    [Show full text]
  • High Speed Visualization in the Jetos Aviation Operating System Using Hardware Acceleration*
    High Speed Visualization in the JetOS Aviation Operating System Using Hardware Acceleration* Boris Barladian[0000-0002-2391-2067], Nikolay Deryabin[0000-0003-1248-6047], Alexey Voloboy[0000-0003-1252-8294], Vladimir Galaktionov[0000-0001-6460-7539], and Lev Shapiro[0000-0002-6350-851X] The Keldysh Institute of the Applied Mathematics of RAS, Moscow, Russia [email protected],{voloboy, vlgal, pls}@gin.keldysh.ru Abstract. The paper discusses details of the pilot display visualization that uses the hardware acceleration capabilities of the Vivante graphics processor in the JetOS aviation operating system. Previously the OpenGL Safety Critical library was implemented without hardware acceleration. This was done in such a way because software library is easier to certify in accordance with the avionics re- quirements. But usage of the software OpenGL does not provide acceptable visualization speed for modern Flight Display and 3D relief applications. So more complex visualization approach utilized the GPU acceleration capabilities was elaborated. Although the OpenGL library was implemented for a specific GPU and took into account its specificity, the described approach to adapt the MESA open source library can be used for other GPUs. An effective algorithm for multi-window visualization using the implemented library with hardware acceleration is present. The described approach allows you to achieve the visu- alization speed acceptable for the pilot display of the aircraft. Keywords: Pilot Display, Embedded Systems, Real-time Operating System, OpenGL Safety Critical, Multi-windowing. 1 Introduction In [1] requirements were formulated for a real-time operating system (RTOS) de- signed to work with integrated modular avionics. In particular, the RTOS should comply with the ARINC 653 standard [2].
    [Show full text]
  • 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 Automotive Linux Summit July 1-2, 2014 Tokyo, Japan Tizen IVI support Until recently… Intel architecture (x86) system – Tizen IVI 2.0alpha, Tizen IVI 3.0 ARM architecture based system – Tizen IVI 2.0alpha (ivi-panda) Need to port Tizen IVI 3.0 to ARM ourselves Current State of Affairs Intel architecture (x86) system – Tizen IVI 2.0alpha, Tizen IVI 3.0 – Tizen Common NEW ARM architecture based system – Tizen IVI 2.0alpha (ivi-panda) – Tizen Common NEW Tizen IVI now based on Tizen Common – Lots of reuse Target Platform Renesas R-Car Gen2 series platform R-Car M2 – ARM Cortex A15 x2 R-Car H2 – ARM Cortex A15 x4, + ARM Cortex A7 x4 (option) 3D Graphics System – Imagination Technologies PowerVR series On board IP blocks – H/W video decode/encode – image processing Agenda Objective Methodology Porting Tasks – Weston/Wayland Integration – WebKit Integration – GStreamer Integration Objective Tizen IVI 3.0 on R-Car M2/H2 1. Standard Native Applications – Terminal program – Open GL/ES applications 2. Web – Browser and web applications 3. Multimedia – Video playback (1080p @ 30fps) Local Build Methodology Tizen IVI 3.0 milestone releases we used: – M2-Sep (released Oct 11, 2013) – M2-EOY (released Jan 15, 2014) – M2-March2014 (released April 11, 2014) Non-hardware dependant packages – Rebuild for ARM instruction set Hardware dependant packages – Replace/update with R-Car M2/H2 support Tizen Common/IVI Rebase Methodology Reuse Tizen Common ARM support for Tizen
    [Show full text]
  • Dell Update Packages for Linux Operating Systems User's Guide
    Dell™ Update Packages for Linux Operating Systems User’s Guide Notes and Cautions NOTE: A NOTE indicates important information that helps you make better use of your computer. CAUTION: A CAUTION indicates potential damage to hardware or loss of data if instructions are not followed. ____________________ Information in this document is subject to change without notice. © 2009 Dell Inc. All rights reserved. Reproduction of these materials in any manner whatsoever without the written permission of Dell Inc. is strictly forbidden. Trademarks used in this text: Dell, the DELL logo, and OpenManage are trademarks of Dell Inc.; Microsoft and Windows are either trademarks or registered trademarks of Microsoft Corporation in the United States and/or other countries; Intel is a registered trademark of Intel Corporation in the United States and other countries; Red Hat and Red Hat Enterprise Linux are registered trademarks of Red Hat, Inc. in the United States and other countries; SUSE is a registered trademark of Novell, Inc. in the United States and other countries; VMware and ESX Server are registered trademarks or trademarks of VMware, Inc. in the United States and/or other jurisdictions; Citrix and XenServer are either trademarks or registered trademarks of Citrix Systems, Inc. in the United States and/or other countries. Other trademarks and trade names may be used in this document to refer to either the entities claiming the marks and names or their products. Dell Inc. disclaims any proprietary interest in trademarks and trade names other than its own. April 2009 Contents 1 Getting Started With Dell Update Packages . 7 Overview .
    [Show full text]
  • Version 7.8-Systemd
    Linux From Scratch Version 7.8-systemd Created by Gerard Beekmans Edited by Douglas R. Reno Linux From Scratch: Version 7.8-systemd by Created by Gerard Beekmans and Edited by Douglas R. Reno Copyright © 1999-2015 Gerard Beekmans Copyright © 1999-2015, Gerard Beekmans All rights reserved. This book is licensed under a Creative Commons License. Computer instructions may be extracted from the book under the MIT License. Linux® is a registered trademark of Linus Torvalds. Linux From Scratch - Version 7.8-systemd Table of Contents Preface .......................................................................................................................................................................... vii i. Foreword ............................................................................................................................................................. vii ii. Audience ............................................................................................................................................................ vii iii. LFS Target Architectures ................................................................................................................................ viii iv. LFS and Standards ............................................................................................................................................ ix v. Rationale for Packages in the Book .................................................................................................................... x vi. Prerequisites
    [Show full text]
  • Camera Driver Development.Pptx
    CAMERA DRIVER DEVELOPMENT Kyle Xu OUTLINE Prepare the Hardware Set up Environment Write a Camera Driver Solve Remaining Problems PREPARE THE HARDWARE TI OMAP4 Pandaboard Aptina AR0832 Image Sensor Ominivision OV5650 Image Sensor Pandaboard Adapters and Connectors Datasheets AR0832 OV5650 PREPARE THE HARDWARE System Setup OUTLINE Prepare the Hardware Set up Environment Write a Camera Driver Solve Remaining Problems SET UP ENVIRONMENT Install Ubuntu 12.04 on Pandaboard Powerful and fast server for cross compilation 32-core 5 min on server vs. 5 hours on Pandaboard Understand Data Path and Interfaces DATA PATH Camera Serial Interface (CSI-2) Image Sub-System (ISS) Image Sensor INTERFACE: CSI-2 N data lanes and one data clock lane Each lane is a pair of +/- lines. I2C standard control interface (CCI) SCL SDA INTERFACE: Hardware Level Pandaboard Camera Expansion Connector (J-17) 5 CSI-2 lanes (including one CLK lane) I2C control lines (SCL, SDA) Other lines for battery power, camera clock, GPIO… Image Sensor 2 CSI-2 data lanes + 1 CSI-2 clock lane I2C control lines (as slave) Powered from on board battery OUTLINE Prepare the Hardware Set up Environment Write a Camera Driver Solve Remaining Problems WRITE A CAMERA DRIVER Describe the camera to the board Write the driver file a. Voltage Regulator and Clock b. I2C Bus c. V4L2 d. Driver Framework e. Complete Template Implement the driver to Linux Kernel DESCRIBE THE CAMERA TO THE BOARD Create ar0832.h to describe camera’s platform information struct ar0832_platform_data containing fields about voltage regulator, clock, power on/off methods Edit board-omap4panda-camer.c Assign values or functions to ar0832_platform_data’s fields.
    [Show full text]
  • Linux Kernal II 9.1 Architecture
    Page 1 of 7 Linux Kernal II 9.1 Architecture: The Linux kernel is a Unix-like operating system kernel used by a variety of operating systems based on it, which are usually in the form of Linux distributions. The Linux kernel is a prominent example of free and open source software. Programming language The Linux kernel is written in the version of the C programming language supported by GCC (which has introduced a number of extensions and changes to standard C), together with a number of short sections of code written in the assembly language (in GCC's "AT&T-style" syntax) of the target architecture. Because of the extensions to C it supports, GCC was for a long time the only compiler capable of correctly building the Linux kernel. Compiler compatibility GCC is the default compiler for the Linux kernel source. In 2004, Intel claimed to have modified the kernel so that its C compiler also was capable of compiling it. There was another such reported success in 2009 with a modified 2.6.22 version of the kernel. Since 2010, effort has been underway to build the Linux kernel with Clang, an alternative compiler for the C language; as of 12 April 2014, the official kernel could almost be compiled by Clang. The project dedicated to this effort is named LLVMLinxu after the LLVM compiler infrastructure upon which Clang is built. LLVMLinux does not aim to fork either the Linux kernel or the LLVM, therefore it is a meta-project composed of patches that are eventually submitted to the upstream projects.
    [Show full text]
  • The Linux Graphics Stack Attributions
    I - Hardware : Anatomy of a GPU II - Host : The Linux graphics stack Attributions Introduction to GPUs and to the Linux Graphics Stack Martin Peres CC By-SA 3.0 Nouveau developer Ph.D. student at LaBRI November 26, 2012 1 / 36 I - Hardware : Anatomy of a GPU II - Host : The Linux graphics stack Attributions General overview Outline 1 I - Hardware : Anatomy of a GPU General overview Driving screens Host < − > GPU communication 2 II - Host : The Linux graphics stack General overview DRM and libdrm Mesa X11 Wayland X11 vs Wayland 3 Attributions Attributions 2 / 36 I - Hardware : Anatomy of a GPU II - Host : The Linux graphics stack Attributions General overview General overview of a modern GPU's functions Display content on a screen Accelerate 2D operations Accelerate 3D operations Decode videos Accelerate scientific calculations 3 / 36 I - Hardware : Anatomy of a GPU II - Host : The Linux graphics stack Attributions General overview CPU Clock Front-side Graphics Generator bus card slot Chipset Memory Slots High-speed graphics bus (AGP or PCI Northbridge Memory Express) bus (memory controller hub) Internal Bus PCI Bus Onboard Southbridge graphics PCI (I/O controller controller Bus hub) IDE SATA USB Cables and Ethernet ports leading Audio Codec CMOS Memory off-board PCI Slots LPC Bus Super I/O Serial Port Parallel Port Flash ROM Floppy Disk Keyboard (BIOS) Mouse 4 / 36 I - Hardware : Anatomy of a GPU II - Host : The Linux graphics stack Attributions General overview Hardware architecture GPU: Where all the calculations are made VRAM: Stores
    [Show full text]
  • Integration of the Chromium Browser in the GENIVI Platform
    static void _f_do_barnacle_install_properties(GObjectClass *gobject_class) { GParamSpec *pspec; Integration of the Chromium /* Party code attribute */ pspec = g_param_spec_uint64 (F_DO_BARNACLE_CODE, Browser in the GENIVI Platform "Barnacle code.", "Barnacle code", 0, G_MAXUINT64, G_MAXUINT64 /* default value */, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_PRIVATE); Jacobo Aragunde Pérez g_object_class_install_property (gobject_class, blogs.igalia.com/jaragunde F_DO_BARNACLE_PROP_CODE, ● Open Source experts and consultants ● 15 years of experience ● Important contributions to: ● Client-side web technologies: WebKit, Blink/Chromium, Servo ● Graphics & Multimedia: Mesa, GStreamer ● Compilers: V8, JavaScriptCore, SpiderMonkey, Guile ● Software-defined networking: Snabb ● ... Introduction Goals of the project ● Integrate full-featured Chromium browser in GDP ● Use Intel’s Ozone-Wayland project, most complete implementation of Wayland so far ● Get latest possible version of the browser working ● Analyze and fix multi-seat implementation, if required ● Funding: GENIVI challenge grant and Igalia contributions Elements and versions ● Chromium: latest stable release was 54 at that point ● Ozone-Wayland: latest branch supports Chromium 53 ● Meta-browser: supporting Chromium 48 ● GENIVI BSPs Rebase & integrate Chromium browser Work on meta-browser ● Simplify configuration ● Obsolete CHROMIUM_ENABLE_WAYLAND detection ● Build chromium+wayland version 53 ● Recipe was pointing to version 48 ● Required patch backport ● Fix specific build scenarios
    [Show full text]
  • Instability Thresholds and Dynamics of Mesa Patterns in Reaction-Diffusion Systems
    Instability thresholds and dynamics of mesa patterns in reaction-diffusion systems Rebecca McKay and Theodore Kolokolnikov Department of Mathematics and Statistics, Dalhousie University, Canada Abstract We consider a class of one-dimensional reaction-diffusion systems, u = ε2u + f(u, w) t xx . 0= Dw + g(u, w) xx Under some generic conditions on the nonlinearities f,g, in the singular limit ε 0, and for a fixed D independent of ε, such a system exhibits a steady state consisting→ of sharp back-to-back interfaces which is stable in time. On the other hand, it is also known that in the so-called shadow limit D = , the periodic pattern having more than one interface is unstable. In this paper, we analyse∞ in detail the transition between the stable patterns when D = O(1) and the shadow system when D = . We show that this transition occurs when D is exponentially large in ε and we derive instability∞ thresholds D D D . such 1 2 3 that a periodic pattern with 2K interfaces is stable if D<DK and is unstable when D>DK . We also study the dynamics of the interfaces when D is exponentially large; this allows us to describe in detail the mechanism leading to the instability. Direct numerical computations of stability and dynamics are performed; excellent agreement with the asymptotic results is observed. 1 Introduction One of the most prevalent phenomena observed in reaction-diffusion systems is the formation of mesa patterns. Such patterns consist of a sequence of highly localized interfaces (or kinks) that are separated in space by regions where the solution is nearly constant.
    [Show full text]
  • Release Notes for X11R7.5 the X.Org Foundation 1
    Release Notes for X11R7.5 The X.Org Foundation 1 October 2009 These release notes contains information about features and their status in the X.Org Foundation X11R7.5 release. Table of Contents Introduction to the X11R7.5 Release.................................................................................3 Summary of new features in X11R7.5...............................................................................3 Overview of X11R7.5............................................................................................................4 Details of X11R7.5 components..........................................................................................5 Build changes and issues..................................................................................................10 Miscellaneous......................................................................................................................11 Deprecated components and removal plans.................................................................12 Attributions/Acknowledgements/Credits......................................................................13 Introduction to the X11R7.5 Release This release is the sixth modular release of the X Window System. The next full release will be X11R7.6 and is expected in 2010. Unlike X11R1 through X11R6.9, X11R7.x releases are not built from one monolithic source tree, but many individual modules. These modules are distributed as individ- ual source code releases, and each one is released when it is ready, instead
    [Show full text]