added a few more slides
authorEleni Maria Stea <estea@igalia.com>
Tue, 18 May 2021 20:19:51 +0000 (23:19 +0300)
committerEleni Maria Stea <estea@igalia.com>
Tue, 18 May 2021 20:19:51 +0000 (23:19 +0300)
Makefile
codecamp.tex

index 56ba2db..775775a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,3 @@
-
 codecamp.pdf:codecamp.tex bib/references.bib
        xelatex codecamp.tex
        bibtex codecamp
 codecamp.pdf:codecamp.tex bib/references.bib
        xelatex codecamp.tex
        bibtex codecamp
index 898b8dd..4818161 100644 (file)
     \frametitle{A few words about ANGLE}
        \center{\textbf{\color{coolblack}{ANGLE is an EGL/GLESv2 implementation}}}
 
     \frametitle{A few words about ANGLE}
        \center{\textbf{\color{coolblack}{ANGLE is an EGL/GLESv2 implementation}}}
 
-       \setbeamertemplate{itemize/enumerate body begin}{\footnotesize}
+       \setbeamertemplate{itemize/enumerate body begin}{\scriptsize}
        \setbeamertemplate{itemize/enumerate subbody begin}{\tiny}
        \setbeamertemplate{itemize/enumerate subsubbody begin}{\tiny}
        \setbeamertemplate{itemize items}[triangle]
        \setbeamertemplate{blocks}[rounded][shadow]
 
        \setbeamertemplate{itemize/enumerate subbody begin}{\tiny}
        \setbeamertemplate{itemize/enumerate subsubbody begin}{\tiny}
        \setbeamertemplate{itemize items}[triangle]
        \setbeamertemplate{blocks}[rounded][shadow]
 
-    \begin{block}{\color{afblue}{\footnotesize\textbf{EGL/GLESv2}:}}
+       \vspace{0.3cm}
+    \begin{block}{\color{afblue}{\scriptsize\textbf{EGL/GLESv2}:}}
                \begin{itemize}
                \begin{itemize}
+                       \itemsep0.2cm
             \item GLESv2 is used to render graphics using the GPU (graphics
                 API).
             \item EGL is used to create a GLESv2 context.
         \end{itemize}
        \end{block}
             \item GLESv2 is used to render graphics using the GPU (graphics
                 API).
             \item EGL is used to create a GLESv2 context.
         \end{itemize}
        \end{block}
+       \vspace{0.3cm}
 
 
-
-    \begin{block}{\color{afblue}{\footnotesize\textbf{ANGLE EGL/GLESv2}:}}
+    \begin{block}{\color{afblue}{\scriptsize\textbf{ANGLE EGL/GLESv2}:}}
                \begin{itemize}
                \begin{itemize}
-            \item GLESv2 is implemented on top of other APIs (OpenGL,
+                       \itemsep0.2cm
+                       \item GLESv2 is implemented \textbf{on top of other APIs} (OpenGL,
                 Vulkan, GLESv2). EGL too (EGL, GLX, gbm, headless display).
             \item Users can select the most convenient backend using some 
                 Vulkan, GLESv2). EGL too (EGL, GLX, gbm, headless display).
             \item Users can select the most convenient backend using some 
-                \textit{ANGLE EGL extensions} (\texttt{eglext\_angle.h}) that
+                \textbf{ANGLE EGL extensions} (\texttt{eglext\_angle.h}) that
                 provide extra attributes to some standard EGL API stucts.
                 provide extra attributes to some standard EGL API stucts.
-            \item Primary purpose of ANGLE is to provide EGL/GLESv2 to systems
+                       \item Primary \textbf{purpose} of ANGLE is to provide EGL/GLESv2 to systems
                 lacking it.
         \end{itemize}
        \end{block}
                 lacking it.
         \end{itemize}
        \end{block}
     \center{\textbf{\color{coolblack}{Using ANGLE (EGL/GLESv2 backend) in WebGL2 }}}
        \vspace{0.2cm}
 
     \center{\textbf{\color{coolblack}{Using ANGLE (EGL/GLESv2 backend) in WebGL2 }}}
        \vspace{0.2cm}
 
-       \setbeamertemplate{itemize/enumerate body begin}{\footnotesize}
+       \setbeamertemplate{itemize/enumerate body begin}{\scriptsize}
        \setbeamertemplate{itemize/enumerate subbody begin}{\tiny}
        \setbeamertemplate{itemize/enumerate subsubbody begin}{\tiny}
        \setbeamertemplate{itemize items}[triangle]
        \setbeamertemplate{blocks}[rounded][shadow]
 
        \setbeamertemplate{itemize/enumerate subbody begin}{\tiny}
        \setbeamertemplate{itemize/enumerate subsubbody begin}{\tiny}
        \setbeamertemplate{itemize items}[triangle]
        \setbeamertemplate{blocks}[rounded][shadow]
 
+       \vspace{0.1cm}
 
 
-    \begin{block}{\color{afblue}{\footnotesize\textbf{Reasons}:}}
+    \begin{block}{\color{afblue}{\scriptsize\textbf{Reasons}:}}
                \begin{itemize}
                \begin{itemize}
-            \item better performance (Žan Doberšek)
-            \item it'll be mostly a wrapper around the native driver (Linux mesa
-                drivers implement GLESv2, Linux desktop provides libGLES*)
+            \item better performance in some cases (Žan Doberšek)
+            \item it'll be mostly an optimized wrapper around the native driver (libGLES*
+                               is available on Linux desktop!)
         \end{itemize}
        \end{block}
         \end{itemize}
        \end{block}
-    \begin{block}{\color{afblue}{\footnotesize\textbf{Problem}:}}
+       \vspace{0.3cm}
+    \begin{block}{\color{afblue}{\scriptsize\textbf{Problem}:}}
                \begin{itemize}
                \begin{itemize}
-            \item ANGLE renders on a GLESv2 texture created by ANGLE context
-            \item WebKit graphics pipeline components use OpenGL textures that
-                are composited by the WebKit compositor
+                       \item \textbf{ANGLE} renders on a \textbf{GLESv2 texture} created by ANGLE context
+                       \item {\color{coolblack}WebKit \textbf{graphics pipeline} components use
+                               \textbf{OpenGL textures} that
+                               are composited by the WebKit compositor}
             \item We are currently \textbf{\textit{copying}} the ANGLE texture data to
                 an OpenGL texture to assemble the final image and this is
                 \textbf{\textit{slow}}!
         \end{itemize}
        \end{block}
 
             \item We are currently \textbf{\textit{copying}} the ANGLE texture data to
                 an OpenGL texture to assemble the final image and this is
                 \textbf{\textit{slow}}!
         \end{itemize}
        \end{block}
 
+       \vspace{0.1cm}
+
     \center{\textbf{\color{coolblack}{We need to replace this copy with
     something better!}}}
 
     \center{\textbf{\color{coolblack}{We need to replace this copy with
     something better!}}}
 
 \end{frame}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \end{frame}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section[Experiment 1]{Experiment 1: Using ANGLE and the native system driver in the same
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section[Experiment 1]{Experiment 1: Using ANGLE and the native system driver in the same
@@ -291,22 +303,160 @@ program}
 
 \begin{frame}[fragile,c]
     \frametitle{Step 1: Setting up to debug ANGLE with GDB}
 
 \begin{frame}[fragile,c]
     \frametitle{Step 1: Setting up to debug ANGLE with GDB}
+
+       \vspace{0.2cm}
+
     \begin{center}
     \begin{center}
+               \scriptsize{
+               I've ran my experiments using test programs and ANGLE,\\
+               and I had to
+               \textbf{\color{mediumred-violet}modify the default set up} to 
+               debug/explore ANGLE calls with GDB:
+               }
     \end{center}
     \end{center}
+
+       \vspace{0.1cm}
+
+       \setbeamertemplate{blocks}[rounded][shadow]
+
+       \begin{block}{\footnotesize{\textbf{Problems when building ANGLE:}}}\scriptsize{\texttt{
+               \begin{itemize}
+                       \itemsep0.1cm
+                               \color{coolblack}
+                       \item {{Default \textbf{gn} configuration redirects debugging
+                               symbols into separate files where GDB can't find them.}}
+                       \item {\textbf{GDB} doesn't know where to find the ANGLE
+                               installation directories.}
+                       \item {{\textbf{dwarf5} is not fully implemented on GDB, and so it's
+                               impossible to step without errors when it's enabled.}}
+                       \item {\textbf{Debugging symbols} aren't enabled by default.}
+               \end{itemize}}}
+       \vspace{0.2cm}
+       \end{block}
+
+       \vspace{0.3cm}
+
+       \scriptsize{
+               \setbeamertemplate{itemize item}[circle]
+       \begin{itemize}
+               \item {\textbf{Blog post} on how to set up
+                       \textbf{\color{mediumred-violet}{ANGLE}} and \textbf{\color{mediumred-violet}{GDB}} for debugging: \url{https://eleni.mutantstargoat.com/hikiko/debug-angle/}}
+               \item {\textbf{Gist} with the \textbf{\color{mediumred-violet}{GN args}}
+                       I've used: \url{https://gistof.com/gnargs}}
+       \end{itemize}}
+       \vspace{0.2cm}
 \end{frame}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \begin{frame}[fragile,c]
     \frametitle{Step 2: Contexts from two drivers in the same
 \end{frame}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \begin{frame}[fragile,c]
     \frametitle{Step 2: Contexts from two drivers in the same
-    program}
+    program 1/2}
+
+       \setbeamertemplate{itemize/enumerate body begin}{\scriptsize}
+       \setbeamertemplate{itemize/enumerate subbody begin}{\tiny}
+       \setbeamertemplate{itemize/enumerate subsubbody begin}{\tiny}
+       \setbeamertemplate{itemize items}[triangle]
+       \setbeamertemplate{blocks}[rounded][shadow]
+
+       \begin{center}
+       \textbf{\color{coolblack}First Test}
+       \end{center}
+       \vspace{-0.1cm}
+       \scriptsize{\color{coolblack}
+       I've first written a program where both ANGLE and native system driver render
+       images on two different X11 windows and displayed them side by side:
+       }
+       \vspace{-0.1cm}
+       \begin{center}
+       \adjustbox{valign=t, margin=1ex,
+       padding=1ex}{\includegraphics[height=1.5cm]{data/angle_egl.png}}
+       \end{center}
+       \vspace{-0.1cm}
+       \begin{block}{\footnotesize{Things I had to take care of:}}
+       \begin{itemize}
+               \item {Configure Makefile to find ANGLE \textbf{library paths} and link
+                       with native system EGL.}
+               \item {\textbf{Dynamically open} ANGLE EGL and load its functions prefixed with
+                       \texttt{angle\_} to distinguish them from native EGL ones.}
+               \item {Do the same for GLESv2.}
+               \item {\textbf{Invalidate the ANGLE context} at every display call.\\
+                       (\textit{When ANGLE is not the only
+                       implementation available \texttt{MakeCurrent} is not working as
+                       expected!!!})}
+       \end{itemize}
+       \end{block}
+\end{frame}
+
+\begin{frame}[fragile,c]
+    \frametitle{Step 2: Contexts from two drivers in the same
+    program 2/2}
+       \vspace{-0.1cm}
+       \begin{center}
+               \textbf{\color{coolblack}Why invalidate MakeCurrent?}
+               \\
+               \begin{table}[c]
+                       \begin{tabularx}{\textwidth}{l X}
+                               \tiny{\textbf{\color{mediumred-violet}Context is cached in ANGLE!}} &
+                               \adjustbox{valign=c, margin=0.1ex,
+                               padding=0.1ex}{\includegraphics[height=2cm]{data/makecurrent.png}} \\
+                       \end{tabularx}
+               \end{table}
+       \end{center}
+
+       \vspace{-0.1cm}
+       \begin{center}
+               \textbf{\color{coolblack}More on Makefile changes and dynamic loading:}
+       \end{center}
+
+       \setbeamertemplate{itemize/enumerate body begin}{\tiny}
+       \setbeamertemplate{itemize items}[circle]
+       
+       \scriptsize{
+
+       \textbf{Blog post:}\\
+       Sharing texture data between ANGLE and the native system driver:\\
+       \url{https://eleni.mutantstargoat.com/hikiko/angle-dma/}
+       \begin{itemize}
+               \item \texttt{Makefile changes and dynamic loading:}\\
+               {\color{mediumred-violet}Step 1: Using
+                       both libraries in the same program.}
+               \item \texttt{ANGLE MakeCurrent problem:}\\
+               {\color{mediumred-violet}{About ANGLE MakeCurrent.}}
+       \end{itemize}
+
+       \vspace{-0.1cm}
+
+       \textbf{Code:}\\
+       \url{https://github.com/hikiko/shctx/tree/wip/system\_egl\_dynamic\_angle}
+
+       }
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section[Experiment 2]{Experiment 2: Sharing a texture across drivers using shared context}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{frame}[fragile,c]
+    \frametitle{}
     \begin{center}
     \end{center}
 \end{frame}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     \begin{center}
     \end{center}
 \end{frame}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section[Experiment 2]{Experiment 2: Sharing a texture across drivers using shared context}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -314,6 +464,14 @@ program}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section[Multiple Processes]{Multiple Processes}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \section[Multiple Processes]{Multiple Processes}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -334,12 +492,12 @@ program}
        \itemsep0.3cm
        \item {\color{coolblack} \textbf{YES!} DMA buffers can be shared across
               multiple processes.}
        \itemsep0.3cm
        \item {\color{coolblack} \textbf{YES!} DMA buffers can be shared across
               multiple processes.}
-        \item {\color{coolblack} But we need some sort of \textit{interprocess
-            communication} to exchange the file descriptor.}
-        \item {\color{coolblack} This is a client-server example that uses unix
+                 \item {\color{coolblack} But we need some sort of \textbf{\textit{interprocess
+                         communication}} to exchange the file descriptor.}
+                 \item {\color{coolblack} This is a client-server
+                         \textbf{\textit{example}} that uses unix
             sockets to pass the dma-buf FD from one process to the other:
             sockets to pass the dma-buf FD from one process to the other:
-            \url{https://gitlab.com/blaztinn/dma-buf-texture-sharing}. It could
-            be adapted to our needs when we switch to multiple processes.}
+                       \url{https://gitlab.com/blaztinn/dma-buf-texture-sharing}.}
             \end{itemize}
 
         }
             \end{itemize}
 
         }
@@ -349,6 +507,14 @@ program}
 \end{frame}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \end{frame}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section[WebKit Integration]{WebKit Integration}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \section[WebKit Integration]{WebKit Integration}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -383,6 +549,14 @@ program}
 \end{frame}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \end{frame}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section[References]{References}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %\setbeamertemplate{bibliography entry title}{}
 \section[References]{References}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %\setbeamertemplate{bibliography entry title}{}