1 \documentclass[usenames,dvipsnames]{beamer}
2 \usepackage[font=small,skip=-1pt]{caption}
4 \usepackage{color, colortbl}
11 \usepackage{tgpagella}
12 \usepackage[utf8]{inputenc}
14 \usepackage{tabularx, array, booktabs}
18 \usepackage{adjustbox}
20 \newcommand\topalign[1]{%
22 \raisebox{\dimexpr-\ht0+\dp0\relax}{\usebox0}}
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}
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,
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},
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
72 \useoutertheme{infolines}
75 \captionsetup[figure]{labelformat=empty}
77 \addtobeamertemplate{headline}{}{\vskip2pt}
78 \addtobeamertemplate{headline}{}{%
79 \begin{textblock*}{5mm}(.9\textwidth,-0.6cm)
80 \includegraphics[height=0.67cm]{data/igalia-logo.png}
83 \definecolor{links}{rgb}{0.1, 0.3, 0.6}
84 \hypersetup{colorlinks,linkcolor=,urlcolor=links}
86 \pgfdeclareimage[height=\paperheight]{igaliabglight}{data/igalia_bg_light.eps}
87 \pgfdeclareimage[height=\paperheight]{igaliabg}{data/igaliabg.eps}
89 %\setbeamertemplate{title page}{
90 % \begin{picture}(-90, 180)
92 % \pgfuseimage{igaliabg}
96 % \begin{minipage}[b][36mm][t]{240mm}
97 % \usebeamerfont{title}{\inserttitle\par}
98 % \usebeamerfont{author}{\insertauthor\par}
99 % \usebeamerfont{title}{\insertinstitute\par}
105 \setbeamertemplate{navigation symbols}{}
106 \setbeamertemplate{title page}{
109 \pgfuseimage{igaliabg}
113 \begin{minipage}[b][38mm][t]{220mm}
114 \usebeamerfont{title}{\inserttitle\par}
115 \usebeamerfont{author}{\insertauthor\par}
120 \usebeamerfont{date}{\huge{{\insertdate}}\par}
125 \setbeamertemplate{itemize items}[triangle]
126 \setbeamertemplate{itemize subitem}[circle]
127 \setbeamerfont{frametitle}{size=\small}
129 \setbeamertemplate{blocks}[default]
130 \setbeamercolor{block title}{fg=amber,bg=black}
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}}
141 \tableofcontents[currentsection]
145 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
147 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
158 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
161 \begin{frame}[fragile,c]
168 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
169 \section[Introduction]{Introduction: Using ANGLE in WebGL2}
170 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
172 \begin{frame}[fragile,c]
173 \frametitle{A few words about ANGLE}
174 \center{\textbf{\color{coolblack}{ANGLE is an EGL/GLESv2 implementation}}}
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]
183 \begin{block}{\color{afblue}{\scriptsize\textbf{EGL/GLESv2}:}}
186 \item GLESv2 is used to render graphics using the GPU (graphics
188 \item EGL is used to create a GLESv2 context.
193 \begin{block}{\color{afblue}{\scriptsize\textbf{ANGLE EGL/GLESv2}:}}
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
209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
211 \begin{frame}[fragile,c]
212 \frametitle{Using ANGLE in WebKit}
214 \center{\textbf{\color{coolblack}{Using ANGLE (EGL/GLESv2 backend) in WebGL2 }}}
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]
225 \begin{block}{\color{afblue}{\scriptsize\textbf{Reasons}:}}
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!)
233 \begin{block}{\color{afblue}{\scriptsize\textbf{Problem}:}}
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}}!
247 \center{\textbf{\color{coolblack}{We need to replace this copy with
253 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
255 \begin{frame}[fragile,c]
256 \frametitle{Experiments on Linux}
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.}
266 \tiny{{(In several cases ANGLE behaves
267 different from EGL: e.g. when \texttt{eglMakeCurrent} doesn't
268 call \texttt{eglMakeCurrent}!!).}}
270 \item {\color{coolblack}\textbf{Fix the problem with shared
271 context and shared textures.}
274 modifications in ANGLE OpenGL driver, writing an ANGLE extension, forcing the
275 EGL/OpenGL backend, and it wouldn't work with multiple
278 \item {\color{coolblack}\textbf{Fix the problem by sharing a Linux kernel
279 dma-buf buffer across drivers.}
281 \tiny{{(drivers must support some EGL/GL extensions, but both mesa and
282 ANGLE support them)}}
284 \item {\color{coolblack}\textbf{Solve the multiple processes case.}
286 \tiny{{(we need some sort of IPC to exchange the dma-buf FD)}}
292 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
293 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
294 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
295 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
296 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
297 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
299 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
300 \section[Experiment 1]{Experiment 1: Using ANGLE and the native system driver in the same
302 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
304 \begin{frame}[fragile,c]
305 \frametitle{Step 1: Setting up to debug ANGLE with GDB}
311 I've ran my experiments using test programs and ANGLE,\\
313 \textbf{\color{mediumred-violet}modify the default set up} to
314 debug/explore ANGLE calls with GDB:
320 \setbeamertemplate{blocks}[rounded][shadow]
322 \begin{block}{\footnotesize{\textbf{Problems when building ANGLE:}}}\scriptsize{\texttt{
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.}
340 \setbeamertemplate{itemize item}[circle]
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}}
350 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
352 \begin{frame}[fragile,c]
353 \frametitle{Step 2: Contexts from two drivers in the same
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]
363 \textbf{\color{coolblack}First Test}
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:
372 \adjustbox{valign=t, margin=1ex,
373 padding=1ex}{\includegraphics[height=1.5cm]{data/angle_egl.png}}
376 \begin{block}{\footnotesize{Things I had to take care of:}}
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
391 \begin{frame}[fragile,c]
392 \frametitle{Step 2: Contexts from two drivers in the same
396 \textbf{\color{coolblack}Why invalidate MakeCurrent?}
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}} \\
409 \textbf{\color{coolblack}More on Makefile changes and dynamic loading:}
412 \setbeamertemplate{itemize/enumerate body begin}{\tiny}
413 \setbeamertemplate{itemize items}[circle]
417 \textbf{Blog post:}\\
418 Sharing texture data between ANGLE and the native system driver:\\
419 \url{https://eleni.mutantstargoat.com/hikiko/angle-dma/}
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.}}
431 \url{https://github.com/hikiko/shctx/tree/wip/system\_egl\_dynamic\_angle}
436 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
438 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
439 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
440 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
441 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
442 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
444 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
445 \section[Experiment 2]{Experiment 2: Sharing a texture across drivers using shared context}
446 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
448 \begin{frame}[fragile,c]
454 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
456 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
457 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
458 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
459 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
460 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
462 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
463 \section[Experiment 3]{Experiment 3: Sharing texture data across drivers using kernel DMA buffers}
464 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
466 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
468 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
469 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
470 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
471 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
472 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
474 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
475 \section[Multiple Processes]{Multiple Processes}
476 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
478 \begin{frame}[fragile,c]
479 \frametitle{What if WebGL and Graphics pipeline were separate processes?}
480 \setbeamertemplate{blocks}[rounded]
484 \textbf{\small{There is a plan to split the main graphics pipeline and the WebGL2
485 pipeline in two processes. (Žan Doberšek)}}}
488 \begin{block}{Can we still use shared DMA buffers?}
493 \item {\color{coolblack} \textbf{YES!} DMA buffers can be shared across
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}.}
509 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
511 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
512 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
513 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
514 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
515 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
517 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
518 \section[WebKit Integration]{WebKit Integration}
519 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
521 \begin{frame}[fragile,c]
522 \frametitle{WIP WebKit:}
523 \setbeamertemplate{blocks}[rounded]
525 \normalsize{\textbf{\color{coolblack}{Ongoing work on WebKit}}}
530 \small{\color{deepjunglegreen}{Building WebKit with ANGLE on Linux was problematic.\\
531 Before starting the task some other fixes were necessary:}}
535 \begin{block}{DONE/WIP/TODO}
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}}}
551 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
553 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
554 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
555 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
556 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
557 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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}
571 \begin{frame}[allowframebreaks]
573 \bibliographystyle{unsrt}
574 \bibliography{bib/references.bib}
578 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
580 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%