added a few more slides
[webkit_codecamp] / codecamp.tex
1 \documentclass[usenames,dvipsnames]{beamer}
2 \usepackage[font=small,skip=-1pt]{caption}
3 \usepackage{xcolor}
4 \usepackage{color, colortbl}
5 \usepackage{caption}
6 \usepackage{listings}
7 \usepackage{graphicx}
8 \usepackage{hyperref}
9 \usepackage{comment}
10 \usepackage{textpos}
11 \usepackage{tgpagella}
12 \usepackage[utf8]{inputenc}
13 \usepackage{fontspec}
14 \usepackage{tabularx, array, booktabs}
15 \usepackage{cite}
16 \usepackage{verbatim}
17 \usepackage{comment}
18 \usepackage{adjustbox}
19
20 \newcommand\topalign[1]{%
21   \setbox0\hbox{#1}%
22   \raisebox{\dimexpr-\ht0+\dp0\relax}{\usebox0}}
23
24 \definecolor{blond}{rgb}{0.98, 0.94, 0.75}
25 \definecolor{beige}{rgb}{0.96, 0.96, 0.86}
26 \definecolor{mGreen}{rgb}{0,0.6,0}
27 \definecolor{mGray}{rgb}{0.5,0.5,0.5}
28 \definecolor{mPurple}{rgb}{0.58,0,0.82}
29 \definecolor{bgcolor}{rgb}{0.8,0.8,0.8}
30 \definecolor{afblue}{rgb}{0.46, 0.64, 0.76}
31 \definecolor{coolblack}{rgb}{0.0, 0.18, 0.39}
32 \definecolor{paleaqua}{rgb}{0.74, 0.83, 0.9}
33 \definecolor{platinum}{rgb}{0.9, 0.89, 0.89}
34 \definecolor{whitesmoke}{rgb}{0.96, 0.96, 0.96}
35 \definecolor{carolinablue}{rgb}{0.6, 0.73, 0.89}
36 \definecolor{amber}{rgb}{1.0, 0.75, 0.0}
37 \definecolor{deepjunglegreen}{rgb}{0.0, 0.29, 0.29}
38 \definecolor{mediumred-violet}{rgb}{0.73, 0.2, 0.52}
39 \definecolor{babypink}{rgb}{0.96, 0.76, 0.76}
40 \definecolor{beaublue}{rgb}{0.74, 0.83, 0.9}
41 \definecolor{bananayellow}{rgb}{1.0, 0.88, 0.21}
42 \definecolor{bananamania}{rgb}{0.98, 0.91, 0.81}
43 \definecolor{crimsonglory}{rgb}{0.75, 0.0, 0.2}
44
45 \lstdefinestyle{CStyle}{
46         language=C++,                % choose the language of the code
47 %       basicstyle=\footnotesize,       % the size of the fonts that are used for the code
48         basicstyle=\tt\color{afblue},
49     breakatwhitespace=false,
50     breaklines=true,
51         backgroundcolor=\color{bgcolor},  % choose the background color. You must add \usepackage{color}
52         showspaces=false,               % show spaces adding particular underscores
53         showstringspaces=false,         % underline spaces within strings
54         showtabs=false,                 % show tabs within strings adding particular underscores
55         frame=single,           % adds a frame around the code
56         tabsize=2,          % sets default tabsize to 2 spaces
57         captionpos=b,           % sets the caption-position to bottom
58         breaklines=true,        % sets automatic line breaking
59         breakatwhitespace=false,    % sets if automatic breaks should only happen at whitespace
60     commentstyle=\color{mGreen},
61     keywordstyle=\color{magenta},
62     stringstyle=\color{mPurple},
63         rulesepcolor=\color{gray},
64     rulecolor=\color{black},
65 }
66
67 \setmainfont{Noto Sans} % substitute with any font that exists on your system
68 \setsansfont{Noto Sans} % substitute with any font that exists on your system
69 \setmonofont{Noto Sans Mono Medium} % substitute with any font that exists on your system
70
71 \usetheme{Warsaw}
72 \useoutertheme{infolines}
73 \usecolortheme{crane}
74
75 \captionsetup[figure]{labelformat=empty}
76
77 \addtobeamertemplate{headline}{}{\vskip2pt}
78 \addtobeamertemplate{headline}{}{%
79         \begin{textblock*}{5mm}(.9\textwidth,-0.6cm)
80         \includegraphics[height=0.67cm]{data/igalia-logo.png}
81 \end{textblock*}}
82
83 \definecolor{links}{rgb}{0.1, 0.3, 0.6}
84 \hypersetup{colorlinks,linkcolor=,urlcolor=links}
85
86 \pgfdeclareimage[height=\paperheight]{igaliabglight}{data/igalia_bg_light.eps}
87 \pgfdeclareimage[height=\paperheight]{igaliabg}{data/igaliabg.eps}
88
89 %\setbeamertemplate{title page}{
90 %        \begin{picture}(-90, 180)
91 %                       \put(-200, -74){%
92 %                \pgfuseimage{igaliabg}
93 %            }
94 %
95 %            \put(55,19){%
96 %                               \begin{minipage}[b][36mm][t]{240mm}
97 %                    \usebeamerfont{title}{\inserttitle\par}
98 %                    \usebeamerfont{author}{\insertauthor\par}
99 %                    \usebeamerfont{title}{\insertinstitute\par}
100 %                \end{minipage}
101 %            }
102 %               \end{picture}
103 %}
104
105 \setbeamertemplate{navigation symbols}{}
106 \setbeamertemplate{title page}{
107         \begin{picture}(0,0)
108             \put(-30,-164){%
109                 \pgfuseimage{igaliabg}
110             }
111
112             \put(0,-110.7){%
113                 \begin{minipage}[b][38mm][t]{220mm}
114                     \usebeamerfont{title}{\inserttitle\par}
115                     \usebeamerfont{author}{\insertauthor\par}
116                 \end{minipage}
117             }
118
119                         \put(240, -138){
120                                 \usebeamerfont{date}{\huge{{\insertdate}}\par}
121                                 }
122                 \end{picture}
123 }
124
125 \setbeamertemplate{itemize items}[triangle]
126 \setbeamertemplate{itemize subitem}[circle]
127 \setbeamerfont{frametitle}{size=\small}
128
129 \setbeamertemplate{blocks}[default]
130 \setbeamercolor{block title}{fg=amber,bg=black}
131
132 \title{\textbf{Sharing texture data between drivers}}
133 \author[Eleni Maria Stea <estea@igalia.com>]{\small{Eleni Maria Stea
134 <estea@igalia.com>}\\\\\includegraphics{data/igalia.eps}}
135 \date{\tiny{WebKit Codecamp}}
136
137 \AtBeginSection[]
138 {
139   \begin{frame}
140     \frametitle{Outline}
141         \tableofcontents[currentsection]
142   \end{frame}
143 }
144
145 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
146 \begin{document}
147 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
148
149 \begin{frame}[plain]
150 \titlepage
151 \end{frame}
152
153 \begin{frame}
154         \frametitle{Outline}
155         \tableofcontents
156 \end{frame}
157
158 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
159
160 \begin{comment}
161 \begin{frame}[fragile,c]
162     \frametitle{}
163     \begin{center}
164     \end{center}
165 \end{frame}
166 \end{comment}
167
168 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
169 \section[Introduction]{Introduction: Using ANGLE in WebGL2}
170 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
171
172 \begin{frame}[fragile,c]
173     \frametitle{A few words about ANGLE}
174         \center{\textbf{\color{coolblack}{ANGLE is an EGL/GLESv2 implementation}}}
175
176         \setbeamertemplate{itemize/enumerate body begin}{\scriptsize}
177         \setbeamertemplate{itemize/enumerate subbody begin}{\tiny}
178         \setbeamertemplate{itemize/enumerate subsubbody begin}{\tiny}
179         \setbeamertemplate{itemize items}[triangle]
180         \setbeamertemplate{blocks}[rounded][shadow]
181
182         \vspace{0.3cm}
183     \begin{block}{\color{afblue}{\scriptsize\textbf{EGL/GLESv2}:}}
184                 \begin{itemize}
185                         \itemsep0.2cm
186             \item GLESv2 is used to render graphics using the GPU (graphics
187                 API).
188             \item EGL is used to create a GLESv2 context.
189         \end{itemize}
190         \end{block}
191         \vspace{0.3cm}
192
193     \begin{block}{\color{afblue}{\scriptsize\textbf{ANGLE EGL/GLESv2}:}}
194                 \begin{itemize}
195                         \itemsep0.2cm
196                         \item GLESv2 is implemented \textbf{on top of other APIs} (OpenGL,
197                 Vulkan, GLESv2). EGL too (EGL, GLX, gbm, headless display).
198             \item Users can select the most convenient backend using some 
199                 \textbf{ANGLE EGL extensions} (\texttt{eglext\_angle.h}) that
200                 provide extra attributes to some standard EGL API stucts.
201                         \item Primary \textbf{purpose} of ANGLE is to provide EGL/GLESv2 to systems
202                 lacking it.
203         \end{itemize}
204         \end{block}
205
206         \vspace{0.2cm}
207 \end{frame}
208
209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
210
211 \begin{frame}[fragile,c]
212     \frametitle{Using ANGLE in WebKit}
213
214     \center{\textbf{\color{coolblack}{Using ANGLE (EGL/GLESv2 backend) in WebGL2 }}}
215         \vspace{0.2cm}
216
217         \setbeamertemplate{itemize/enumerate body begin}{\scriptsize}
218         \setbeamertemplate{itemize/enumerate subbody begin}{\tiny}
219         \setbeamertemplate{itemize/enumerate subsubbody begin}{\tiny}
220         \setbeamertemplate{itemize items}[triangle]
221         \setbeamertemplate{blocks}[rounded][shadow]
222
223         \vspace{0.1cm}
224
225     \begin{block}{\color{afblue}{\scriptsize\textbf{Reasons}:}}
226                 \begin{itemize}
227             \item better performance in some cases (Žan Doberšek)
228             \item it'll be mostly an optimized wrapper around the native driver (libGLES*
229                                 is available on Linux desktop!)
230         \end{itemize}
231         \end{block}
232         \vspace{0.3cm}
233     \begin{block}{\color{afblue}{\scriptsize\textbf{Problem}:}}
234                 \begin{itemize}
235                         \item \textbf{ANGLE} renders on a \textbf{GLESv2 texture} created by ANGLE context
236                         \item {\color{coolblack}WebKit \textbf{graphics pipeline} components use
237                                 \textbf{OpenGL textures} that
238                                 are composited by the WebKit compositor}
239             \item We are currently \textbf{\textit{copying}} the ANGLE texture data to
240                 an OpenGL texture to assemble the final image and this is
241                 \textbf{\textit{slow}}!
242         \end{itemize}
243         \end{block}
244
245         \vspace{0.1cm}
246
247     \center{\textbf{\color{coolblack}{We need to replace this copy with
248     something better!}}}
249
250         \vspace{0.2cm}
251 \end{frame}
252
253 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
254
255 \begin{frame}[fragile,c]
256     \frametitle{Experiments on Linux}
257
258     \vspace{0.3cm}
259     {\footnotesize{
260         \begin{enumerate}
261         \itemsep0.3cm
262         \item {\color{coolblack}\textbf{Use ANGLE and EGL in the same program:
263             create 2 X11 windows, and draw 2 images from 2 different contexts
264                 by 2 different drivers.}
265
266                 \tiny{{(In several cases ANGLE behaves
267                 different from EGL: e.g. when \texttt{eglMakeCurrent} doesn't
268                 call \texttt{eglMakeCurrent}!!).}}
269                 }
270             \item {\color{coolblack}\textbf{Fix the problem with shared 
271                 context and shared textures.}
272
273                 \tiny{{(required
274                 modifications in ANGLE OpenGL driver, writing an ANGLE extension, forcing the 
275                 EGL/OpenGL backend, and it wouldn't work with multiple
276                 processes)}}
277                 }
278             \item {\color{coolblack}\textbf{Fix the problem by sharing a Linux kernel 
279                 dma-buf buffer across drivers.}
280
281                 \tiny{{(drivers must support some EGL/GL extensions, but both mesa and
282                 ANGLE support them)}}
283                 }
284             \item {\color{coolblack}\textbf{Solve the multiple processes case.}
285
286                 \tiny{{(we need some sort of IPC to exchange the dma-buf FD)}}
287                 }
288         \end{enumerate}
289     }}
290 \end{frame}
291
292 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
293 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
294 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
295 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
296 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
297 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
298
299 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
300 \section[Experiment 1]{Experiment 1: Using ANGLE and the native system driver in the same
301 program}
302 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
303
304 \begin{frame}[fragile,c]
305     \frametitle{Step 1: Setting up to debug ANGLE with GDB}
306
307         \vspace{0.2cm}
308
309     \begin{center}
310                 \scriptsize{
311                 I've ran my experiments using test programs and ANGLE,\\
312                 and I had to
313                 \textbf{\color{mediumred-violet}modify the default set up} to 
314                 debug/explore ANGLE calls with GDB:
315                 }
316     \end{center}
317
318         \vspace{0.1cm}
319
320         \setbeamertemplate{blocks}[rounded][shadow]
321
322         \begin{block}{\footnotesize{\textbf{Problems when building ANGLE:}}}\scriptsize{\texttt{
323                 \begin{itemize}
324                         \itemsep0.1cm
325                                 \color{coolblack}
326                         \item {{Default \textbf{gn} configuration redirects debugging
327                                 symbols into separate files where GDB can't find them.}}
328                         \item {\textbf{GDB} doesn't know where to find the ANGLE
329                                 installation directories.}
330                         \item {{\textbf{dwarf5} is not fully implemented on GDB, and so it's
331                                 impossible to step without errors when it's enabled.}}
332                         \item {\textbf{Debugging symbols} aren't enabled by default.}
333                 \end{itemize}}}
334         \vspace{0.2cm}
335         \end{block}
336
337         \vspace{0.3cm}
338
339         \scriptsize{
340                 \setbeamertemplate{itemize item}[circle]
341         \begin{itemize}
342                 \item {\textbf{Blog post} on how to set up
343                         \textbf{\color{mediumred-violet}{ANGLE}} and \textbf{\color{mediumred-violet}{GDB}} for debugging: \url{https://eleni.mutantstargoat.com/hikiko/debug-angle/}}
344                 \item {\textbf{Gist} with the \textbf{\color{mediumred-violet}{GN args}}
345                         I've used: \url{https://gistof.com/gnargs}}
346         \end{itemize}}
347         \vspace{0.2cm}
348 \end{frame}
349
350 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
351
352 \begin{frame}[fragile,c]
353     \frametitle{Step 2: Contexts from two drivers in the same
354     program 1/2}
355
356         \setbeamertemplate{itemize/enumerate body begin}{\scriptsize}
357         \setbeamertemplate{itemize/enumerate subbody begin}{\tiny}
358         \setbeamertemplate{itemize/enumerate subsubbody begin}{\tiny}
359         \setbeamertemplate{itemize items}[triangle]
360         \setbeamertemplate{blocks}[rounded][shadow]
361
362         \begin{center}
363         \textbf{\color{coolblack}First Test}
364         \end{center}
365         \vspace{-0.1cm}
366         \scriptsize{\color{coolblack}
367         I've first written a program where both ANGLE and native system driver render
368         images on two different X11 windows and displayed them side by side:
369         }
370         \vspace{-0.1cm}
371         \begin{center}
372         \adjustbox{valign=t, margin=1ex,
373         padding=1ex}{\includegraphics[height=1.5cm]{data/angle_egl.png}}
374         \end{center}
375         \vspace{-0.1cm}
376         \begin{block}{\footnotesize{Things I had to take care of:}}
377         \begin{itemize}
378                 \item {Configure Makefile to find ANGLE \textbf{library paths} and link
379                         with native system EGL.}
380                 \item {\textbf{Dynamically open} ANGLE EGL and load its functions prefixed with
381                         \texttt{angle\_} to distinguish them from native EGL ones.}
382                 \item {Do the same for GLESv2.}
383                 \item {\textbf{Invalidate the ANGLE context} at every display call.\\
384                         (\textit{When ANGLE is not the only
385                         implementation available \texttt{MakeCurrent} is not working as
386                         expected!!!})}
387         \end{itemize}
388         \end{block}
389 \end{frame}
390
391 \begin{frame}[fragile,c]
392     \frametitle{Step 2: Contexts from two drivers in the same
393     program 2/2}
394         \vspace{-0.1cm}
395         \begin{center}
396                 \textbf{\color{coolblack}Why invalidate MakeCurrent?}
397                 \\
398                 \begin{table}[c]
399                         \begin{tabularx}{\textwidth}{l X}
400                                 \tiny{\textbf{\color{mediumred-violet}Context is cached in ANGLE!}} &
401                                 \adjustbox{valign=c, margin=0.1ex,
402                                 padding=0.1ex}{\includegraphics[height=2cm]{data/makecurrent.png}} \\
403                         \end{tabularx}
404                 \end{table}
405         \end{center}
406
407         \vspace{-0.1cm}
408         \begin{center}
409                 \textbf{\color{coolblack}More on Makefile changes and dynamic loading:}
410         \end{center}
411
412         \setbeamertemplate{itemize/enumerate body begin}{\tiny}
413         \setbeamertemplate{itemize items}[circle]
414         
415         \scriptsize{
416
417         \textbf{Blog post:}\\
418         Sharing texture data between ANGLE and the native system driver:\\
419         \url{https://eleni.mutantstargoat.com/hikiko/angle-dma/}
420         \begin{itemize}
421                 \item \texttt{Makefile changes and dynamic loading:}\\
422                 {\color{mediumred-violet}Step 1: Using
423                         both libraries in the same program.}
424                 \item \texttt{ANGLE MakeCurrent problem:}\\
425                 {\color{mediumred-violet}{About ANGLE MakeCurrent.}}
426         \end{itemize}
427
428         \vspace{-0.1cm}
429
430         \textbf{Code:}\\
431         \url{https://github.com/hikiko/shctx/tree/wip/system\_egl\_dynamic\_angle}
432
433         }
434 \end{frame}
435
436 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
437
438 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
439 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
440 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
441 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
442 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
443
444 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
445 \section[Experiment 2]{Experiment 2: Sharing a texture across drivers using shared context}
446 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
447
448 \begin{frame}[fragile,c]
449     \frametitle{}
450     \begin{center}
451     \end{center}
452 \end{frame}
453
454 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
455
456 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
457 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
458 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
459 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
460 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
461
462 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
463 \section[Experiment 3]{Experiment 3: Sharing texture data across drivers using kernel DMA buffers}
464 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
465
466 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
467
468 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
469 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
470 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
471 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
472 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
473
474 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
475 \section[Multiple Processes]{Multiple Processes}
476 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
477
478 \begin{frame}[fragile,c]
479     \frametitle{What if WebGL and Graphics pipeline were separate processes?}
480         \setbeamertemplate{blocks}[rounded]
481
482 \vspace{0.3cm}
483     \center{
484         \textbf{\small{There is a plan to split the main graphics pipeline and the WebGL2
485     pipeline in two processes. (Žan Doberšek)}}}
486
487 \vspace{0.5cm}
488         \begin{block}{Can we still use shared DMA buffers?}
489         \footnotesize{
490
491     \begin{itemize}
492        \itemsep0.3cm
493        \item {\color{coolblack} \textbf{YES!} DMA buffers can be shared across
494               multiple processes.}
495                   \item {\color{coolblack} But we need some sort of \textbf{\textit{interprocess
496                           communication}} to exchange the file descriptor.}
497                   \item {\color{coolblack} This is a client-server
498                           \textbf{\textit{example}} that uses unix
499             sockets to pass the dma-buf FD from one process to the other:
500                         \url{https://gitlab.com/blaztinn/dma-buf-texture-sharing}.}
501             \end{itemize}
502
503         }
504     \end{block}
505
506 \vspace{0.3cm}
507 \end{frame}
508
509 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
510
511 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
512 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
513 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
514 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
515 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
516
517 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
518 \section[WebKit Integration]{WebKit Integration}
519 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
520
521 \begin{frame}[fragile,c]
522     \frametitle{WIP WebKit:}
523         \setbeamertemplate{blocks}[rounded]
524         \center{
525                 \normalsize{\textbf{\color{coolblack}{Ongoing work on WebKit}}}
526                 }
527
528         \vspace{0.3cm}
529
530     \small{\color{deepjunglegreen}{Building WebKit with ANGLE on Linux was problematic.\\
531     Before starting the task some other fixes were necessary:}}
532
533         \vspace{0.3cm}
534
535         \begin{block}{DONE/WIP/TODO}
536                 \footnotesize{
537             \begin{itemize}
538                 \item{Use the right CMake options (one can't simply enable
539                     \texttt{USE\_ANGLE\_WEBGL} ☺):
540                     \color{coolblack}{\textbf{FIXED }}}
541                 \item{Compile errors when ANGLE is used: 
542                     \color{coolblack}{\textbf{FIXED}}}
543                 \item{Link errors when ANGLE is used:
544                     \color{coolblack}{\textbf{WIP/Partially FIXED}}}
545                 \item{Copy replacement: \color{coolblack}{\textbf{TODO}}}
546             \end{itemize}
547                         }
548         \end{block}
549 \end{frame}
550
551 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
552
553 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
554 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
555 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
556 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
557 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
558
559 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
560 \section[References]{References}
561 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
562 %\setbeamertemplate{bibliography entry title}{}
563 %\setbeamertemplate{bibliography entry location}{}
564 %\setbeamertemplate{bibliography entry note}{}
565 \setbeamerfont{bibliography item}{size=\footnotesize}
566 \setbeamerfont{bibliography entry author}{size=\footnotesize}
567 \setbeamerfont{bibliography entry title}{size=\footnotesize}
568 \setbeamerfont{bibliography entry year}{size=\footnotesize}
569 \setbeamerfont{bibliography entry note}{size=\footnotesize}
570
571 \begin{frame}[allowframebreaks]
572         \frametitle{Links}
573         \bibliographystyle{unsrt}
574         \bibliography{bib/references.bib}
575         \nocite{*}
576 \end{frame}
577
578 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
579 \end{document}
580 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%