Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

Isolating GPU Access in its Own Process (Foss-North 2018)

Chromium's process architecture has graphics access restricted to a separate GPU-process. There are several reasons why this could make sense, three common ones are: Security, Robustness and Dependency Separation.
GPU access restricted to a single process requires an efficient framework for communication over IPC from the other processes, and most likely a framework for composition of surfaces. This talk describes both the possible motivations for this kind of architecture and Chromium's solution for the IPC framework. We will demonstrate how a multi-process program can compose into a single window on Linux.

24.
“We can solve any problem by introducing an extra
level of indirection.
…except for the problem of too many levels of
indirection”
Fundamental theorem of software engineering
Andrew Koenig/Butler Lampson/David J. Wheeler
@pati_gallardo

30.
OpenGL ES2 calls are serialized into “Commands” That are
placed in a Ring Buffer in Shared Memory called a
“Command Buffer”. The GPU process de-serializes them,
does validation, maybe some workarounds, and executes
them using the Platform Graphics System.
@pati_gallardo
Implementation Design

39.
Compositing in Chromium
- Software Compositing is Done In the Browser Process
- Hardware/GPU Compositing is Done in the GPU Process
(Except on Android where there is a GPU thread in the Browser Process)
@pati_gallardo

40.
Insert Some Hand Waving
The full architecture is
massive
We will follow one path
A software decoded video
frame
@pati_gallardo

48.
OES_EGL_image_external
Extension that creates EGLImage texture targets from EGLImages
“Each TEXTURE_EXTERNAL_OES texture object may require up to 3
texture image units for each texture unit to which it is bound.”
@pati_gallardo