X-Git-Url: http://git.mutantstargoat.com?p=fc2020;a=blobdiff_plain;f=estea-xdc2020.tex;h=dd62c1cf3588c87475b47ab2219edb164d766205;hp=34a1964cf4a22ec793a7a249e1eaaef62b9b044d;hb=465b4cd046b456e0383ae1546cc2d0431d2727c4;hpb=c7b303ab0182017ba8c5a026baa990210a7dad8f diff --git a/estea-xdc2020.tex b/estea-xdc2020.tex index 34a1964..dd62c1c 100644 --- a/estea-xdc2020.tex +++ b/estea-xdc2020.tex @@ -1,7 +1,9 @@ -\documentclass{beamer} +\documentclass[usenames,dvipsnames]{beamer} \usepackage[font=small,skip=-1pt]{caption} -\usepackage{listings} \usepackage{xcolor} +\usepackage{color, colortbl} +\usepackage{caption} +\usepackage{listings} \usepackage{graphicx} \usepackage{hyperref} \usepackage{comment} @@ -9,15 +11,66 @@ \usepackage{tgpagella} \usepackage[utf8]{inputenc} \usepackage{fontspec} +\usepackage{tabularx, array, booktabs} +\usepackage{cite} +\usepackage{verbatim} +\usepackage{comment} +\usepackage{adjustbox} + +\newcommand\topalign[1]{% + \setbox0\hbox{#1}% + \raisebox{\dimexpr-\ht0+\dp0\relax}{\usebox0}} + +\definecolor{blond}{rgb}{0.98, 0.94, 0.75} +\definecolor{beige}{rgb}{0.96, 0.96, 0.86} +\definecolor{mGreen}{rgb}{0,0.6,0} +\definecolor{mGray}{rgb}{0.5,0.5,0.5} +\definecolor{mPurple}{rgb}{0.58,0,0.82} +\definecolor{bgcolor}{rgb}{0.8,0.8,0.8} +\definecolor{afblue}{rgb}{0.46, 0.64, 0.76} +\definecolor{coolblack}{rgb}{0.0, 0.18, 0.39} +\definecolor{paleaqua}{rgb}{0.74, 0.83, 0.9} +\definecolor{platinum}{rgb}{0.9, 0.89, 0.89} +\definecolor{whitesmoke}{rgb}{0.96, 0.96, 0.96} +\definecolor{carolinablue}{rgb}{0.6, 0.73, 0.89} +\definecolor{amber}{rgb}{1.0, 0.75, 0.0} +\definecolor{deepjunglegreen}{rgb}{0.0, 0.29, 0.29} +\definecolor{mediumred-violet}{rgb}{0.73, 0.2, 0.52} +\definecolor{babypink}{rgb}{0.96, 0.76, 0.76} +\definecolor{beaublue}{rgb}{0.74, 0.83, 0.9} +\definecolor{bananayellow}{rgb}{1.0, 0.88, 0.21} +\definecolor{bananamania}{rgb}{0.98, 0.91, 0.81} + +\lstdefinestyle{CStyle}{ + language=C++, % choose the language of the code +% basicstyle=\footnotesize, % the size of the fonts that are used for the code + basicstyle=\tt\color{afblue}, + breakatwhitespace=false, + breaklines=true, + backgroundcolor=\color{bgcolor}, % choose the background color. You must add \usepackage{color} + showspaces=false, % show spaces adding particular underscores + showstringspaces=false, % underline spaces within strings + showtabs=false, % show tabs within strings adding particular underscores + frame=single, % adds a frame around the code + tabsize=2, % sets default tabsize to 2 spaces + captionpos=b, % sets the caption-position to bottom + breaklines=true, % sets automatic line breaking + breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace + commentstyle=\color{mGreen}, + keywordstyle=\color{magenta}, + stringstyle=\color{mPurple}, + rulesepcolor=\color{gray}, + rulecolor=\color{black}, +} + \setmainfont{Noto Sans} % substitute with any font that exists on your system \setsansfont{Noto Sans} % substitute with any font that exists on your system -\setmonofont{Noto Sans Mono} % substitute with any font that exists on your system +\setmonofont{Noto Sans Mono Medium} % substitute with any font that exists on your system \usetheme{Warsaw} \useoutertheme{infolines} \usecolortheme{crane} -\usepackage{caption} \captionsetup[figure]{labelformat=empty} \addtobeamertemplate{headline}{}{\vskip2pt} @@ -26,10 +79,10 @@ \includegraphics[height=0.67cm]{data/igalia-logo.png} \end{textblock*}} -\definecolor{links}{rgb}{0, 0.6, 0} +\definecolor{links}{rgb}{0.1, 0.3, 0.6} \hypersetup{colorlinks,linkcolor=,urlcolor=links} -%\pgfdeclareimage[height=\paperheight]{igaliabg}{data/igalia_bg_light.eps} +\pgfdeclareimage[height=\paperheight]{igaliabglight}{data/igalia_bg_light.eps} \pgfdeclareimage[height=\paperheight]{igaliabg}{data/igaliabg.eps} %\setbeamertemplate{title page}{ @@ -61,6 +114,10 @@ \usebeamerfont{author}{\insertauthor\par} \end{minipage} } + + \put(240, -138){ + \usebeamerfont{date}{\huge{{\insertdate}}\par} + } \end{picture} } @@ -69,15 +126,16 @@ \setbeamerfont{frametitle}{size=\small} \setbeamertemplate{blocks}[default] -\setbeamercolor{block title}{fg=lightgray,bg=black} +\setbeamercolor{block title}{fg=amber,bg=black} + \title{\textbf{OpenGL and Vulkan Interoperability}} -\author[Eleni Maria Stea]{\small{Eleni Maria Stea +\author[Eleni Maria Stea ]{\small{Eleni Maria Stea }\\\\\includegraphics{data/igalia.eps}} -\date{} +\date{XDC 2020} \AtBeginSection[] { - \begin{frame} + \begin{frame} \frametitle{Outline} \tableofcontents[currentsection] \end{frame} @@ -99,78 +157,528 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section[Introduction]{The concept behind OpenGL and Vulkan interoperability} +\section[Introduction]{OpenGL and Vulkan interoperability extensions} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} - \frametitle{Why interoperability?} - - The idea is to avoid unnecessary allocations and memory mappings when we - exchange texture and buffer data across APIs.\\ - \vspace{0.3cm} - Interoperability extensions allow us to:\\ - \vspace{0.8cm} - - {\fontsize{9}{9}\selectfont - \begin{itemize}\setlength\itemsep{0.8cm} - \item {\color[rgb]{0, 0, 0.6} Allocate the resources (textures, - buffers) once.} - \item {\color[rgb]{0, 0, 0.6} Reuse them several times from both - APIs.} - \item {\color[rgb]{0, 0, 0.6} Synchronize the APIs access to the - resources.} +\begin{frame}[fragile,c] + \frametitle{OpenGL and Vulkan Interoperability Concept} + + \begin{center} + \textbf{\color{coolblack}{INTEROPERABILITY}} + \vspace{0.5cm} + +% +% The idea is to avoid unnecessary allocations and conversions when we +% exchange texture and buffer data across APIs.\\ +% + + \vspace{0.5cm} + \begin{tabular}{l} + \rowcolor{coolblack} + \multicolumn{1}{c}{ + \color{paleaqua}{EXT\_external\_objects(\_fd) extensions allow:} + }\\ + \rowcolor{platinum} + \\ + \rowcolor{platinum} + \small{· \color{coolblack}{\textbf{Allocating} resources (like textures, + buffers) \textbf{once} from Vulkan.}}\\ + \rowcolor{platinum} + \small{· \color{coolblack}{\textbf{Reusing} them \textbf{several times} from + both APIs.}}\\ + \rowcolor{platinum} + \small{· \color{coolblack}{\textbf{Synchronizing} the APIs access to + the resources.}}\\ + \rowcolor{platinum} + \\ + \end{tabular} + + \vspace{0.5cm} + \end{center} + \footnotesize{\textbf{Example:} a VR compositor where the left and right eye + images are allocated and displayed by Vulkan but their contents are filled by + OpenGL processes.} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] + \frametitle{OpenGL extensions for interoperability on Linux} + + \center{\textbf{\color{coolblack}{OpenGL Extensions (Linux)}}} + \vspace{0.2cm} + + \setbeamertemplate{itemize/enumerate body begin}{\footnotesize} + \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{EXT\_external\_object\_fd + (EXT\_memory\_object\_fd, EXT\_semaphore\_fd)}:}} + \begin{itemize} + \item enables an OpenGL application to import a memory object or + semaphore from POSIX file descriptor external handles + (\textbf{Linux only!}) \end{itemize} - } + \end{block} + + \vspace{0.2cm} + + \begin{block}{\color{afblue}{\footnotesize\textbf{EXT\_external\_object + (EXT\_memory\_object, EXT\_semaphore)}:}} + \begin{itemize} + \item enables an OpenGL application to: + \small{ + \begin{itemize} + \setbeamertemplate{itemize/enumerate subbody begin}{\normalsize} + + \item[--] create OpenGL objects, textures buffers and semaphores from + imported Vulkan memory + \item[--] synchronize the rendering using the GL semaphores + \end{itemize} + } + \item {extends existing GL calls that set and query properties} + \end{itemize} + \end{block} \end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section[Interoperability on Mesa]{Additions to Mesa and Piglit} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame} - \frametitle{What's the alternative?} - - Alternatively we would need to:\\ - \vspace{0.8cm} - - {\fontsize{9}{9}\selectfont - \begin{itemize}\setlength\itemsep{0.8cm} - \item {\color[rgb]{0, 0, 0.6} Allocate resources of the same - size in both APIs.} - \item {\color[rgb]{0, 0, 0.6} Map the Vulkan memory and copy the Vulkan object data to a an - OpenGL object data (and \textit{do all the necessary - conversions!}).} - \item {\color[rgb]{0, 0, 0.6} Copy the data back after the process (and \textit{do all the - necessary conversions!}).} - \item {\color[rgb]{0, 0, 0.6} Synchronize the access externally - (more complex).} + \frametitle{Igalia's contributions} + + \setbeamertemplate{blocks}[rounded] + \center{ + \normalsize{\textbf{\color{coolblack}{Work on the feature}}} + } + + \vspace{0.5cm} + + \begin{block}{Mesa} + \footnotesize{ + Igalia contributed to the implementation of the interoperability + extensions for different {\color{deepjunglegreen}\textbf{Mesa + drivers}}. + } + \end{block} + + \vspace{0.5cm} + + \begin{block}{Piglit (drivers testing framework)} + \footnotesize{ + As there were \textbf{no CTS}, we've written a Vulkan framework for + {\color{coolblack}\textbf{Piglit}} and Vulkan/GL tests that cover + some common + EXT\_external\_objects(\_fd) use cases. + } + \end{block} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + \frametitle{Additions to Mesa (the details)} + + \center{ + \normalsize{\textbf{\color{coolblack}{Contributions to Mesa + drivers}}} + } + \tiny{ + \begin{table}[t] + \begin{tabularx}{\textwidth}{|l|X|l|} + \hline + \rowcolor{paleaqua} + Driver & Igalia's Contributions & Status \\ + \hline + \hline + \rowcolor{platinum} + iris & \textbf{\color{coolblack}implemented} EXT\_external\_objects, + EXT\_external\_objects\_fd & \cellcolor{babypink}{under review (MR + !4337)}\\ + \rowcolor{whitesmoke} + freedreno & \textbf{\color{coolblack}implemented} EXT\_external\_objects, + EXT\_external\_objects\_fd & \cellcolor{green}{upstream} \\ + \rowcolor{platinum} + radeonsi & \textbf{\color{coolblack}fixes} to the already implemented feature & + \cellcolor{bananamania}{work in + progress (WIP MR !6364)} \\ + \rowcolor{whitesmoke} + i965 & helped with the \textbf{\color{coolblack}review}, patches & \cellcolor{babypink}{under review + (Draft MR !5594)}\\ + \hline + \end{tabularx} + \end{table} + } + + \center{ + \normalsize{\textbf{\color{coolblack}{Contributors, reviewers, + people who helped!}}} + } + + \tiny{ + \begin{table}[ht] + \begin{tabularx}{\textwidth}{|l|X|X|} + \hline + \rowcolor{paleaqua} + Driver & Patches & Reviews, Comments, Advice\\ + \hline + \hline + \rowcolor{platinum} + iris & Juan A. Suárez Romero, Eleni Maria Stea, Tapani Pälli, Eduardo Lima Mitev + & Tapani Pälli, Rohan Garg, Eric Engestrom, Kenneth Graunke, + Jason Ekstrand, Oscar Barenys, Daniel Stone, Matt Turner, Tomeu Vizoso \\ + \rowcolor{whitesmoke} + freedreno & Eduardo Lima Mitev, Hyunjun Ko & Rob + Clark, Marek Olšák, Jonathan Marek, Rohan Garg\\ + \rowcolor{platinum} + radeonsi & The feature was implemented by + AMD a few years ago and we are mostly working on fixes (WIP). + & feedback from: Bas Nieuwenhuizen, Marek Olšák \\ + \rowcolor{whitesmoke} + i965 & Rohan Garg, Juan A. Suárez Romero, Tapani Pälli + & Tomeu Vizoso, Eleni Maria Stea, Oscar Barenys \\ + \hline + \end{tabularx} + \end{table} + } + + \tiny{ + \begin{itemize} + \item {The information above was accurate at the beginning of + September when I pre-recorded this presentation! Apologies if + I've not included someone or something!} \end{itemize} } \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section[EXT\_external\_objects(\_fd)]{The required OpenGL extensions} + +\begin{frame}[fragile] + \frametitle{Additions to Piglit (the details) I} + + \begin{center} + \normalsize{\textbf{\color{coolblack}{Contributions to Piglit I }}} + \end{center} + + \tiny{ + \begin{center}\textbf{Reusing color images:}\end{center} + \begin{table}[t] + \begin{tabularx}{\textwidth}{|l|X|c|l|} + \hline + \rowcolor{paleaqua} + Test name & Description + & Output & Status\\ + \hline + \hline + \rowcolor{platinum} + vk-image-overwrite & + The test allocates images of different formats and + tiling modes using Vulkan and fills their pixels using OpenGL. + & + \adjustbox{valign=t, margin=1ex, padding=1ex}{\includegraphics[height=1cm]{shots/image_overwrite.png}} & \cellcolor{green}{upstream}\\ + \hline + \rowcolor{whitesmoke} + vk-image-display & + The test allocates a Vulkan image and renders a + pattern to it using Vulkan. Then it displays it using OpenGL. + The test uses semaphores to synchronize the GL, Vulkan access to + the texture.\vspace{0.3cm} & + \adjustbox{valign=t, margin=1ex, + padding=1ex}{\includegraphics[height=1cm]{shots/image_display.png}} + & \cellcolor{green}{upstream}\\ + \hline + \rowcolor{platinum} + vk-image-display-overwrite & + Similar to the previous ones, but the Vulkan texture data are + overwritten again with OpenGL and then read back from Vulkan. & + \adjustbox{valign=t, margin=1ex, + padding=1ex}{\includegraphics[height=1cm]{shots/image_display_overwrite.png}} + & \cellcolor{green}{upstream}\\ + \hline + \end{tabularx} + \end{table} + } +\end{frame} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} - \frametitle{test} - foobar +\begin{frame}[fragile] + \frametitle{Additions to Piglit (the details) II} + + \begin{center} + \normalsize{\textbf{\color{coolblack}{Contributions to Piglit II }}} + \end{center} + + \tiny{ + \begin{center}\textbf{Reusing the depth and stencil buffer:}\end{center} + \begin{table}[t] + \begin{tabularx}{\textwidth}{|l|X|c|l|} + \hline + \rowcolor{paleaqua} + Test name & Description + & Output & Status\\ + \hline + \hline + \rowcolor{platinum} + vk-depth-display & On the Vulkan side we draw a quad at a + specific depth to fill the z buffer with a recognizable pattern. + Then we use the Vulkan z buffer from OpenGL, where we clear the + framebuffer to green and render a + blue fullscreen quad positioned on the z-axis further away than + the depth of the original quad. If the z buffer has been imported + correctly the blue quad should be partially obscured due to the + depth test failing in the middle. + \vspace{0.3cm} + & + \adjustbox{valign=t, margin=1ex, + padding=1ex}{\includegraphics[height=1cm]{shots/depth.png}} + & \cellcolor{babypink}{under review}\\ + \hline + \rowcolor{whitesmoke} + vk-stencil-display & Similarly, a small quad is rendered with + Vulkan and the stencil test enabled. It is + then imported and used by OpenGL that renders a fullscreen quad + with the stencil test enabled. Pixels that pass the stencil test + have the quad color and the rest the framebuffer + color. + \vspace{0.3cm} & + \adjustbox{valign=t, margin=1ex, + padding=1ex}{\includegraphics[height=1cm]{shots/stencil.png}} + & \cellcolor{babypink}{under review}\\ + \hline + \end{tabularx} + \end{table} + } \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section[Piglit tests use cases]{Some use cases for Piglit} + +\begin{frame}[fragile] + \frametitle{Additions to Piglit (the details) III} + + \begin{center} + \normalsize{\textbf{\color{coolblack}{Contributions to Piglit III }}} + \end{center} + + \tiny{ + \begin{center}\textbf{Reusing a pixel buffer:}\end{center} + + \begin{table}[t] + \begin{tabularx}{\textwidth}{|l|X|l|l|} + \hline + \rowcolor{paleaqua} + Test name & Description + & Output & Status\\ + \hline + \hline + \rowcolor{platinum} + vk-buf-exchange & + The test renders an image and copies it to a buffer using + Vulkan. Then, the buffer is imported in OpenGL and is used as + pixel storage for an OpenGL texture. OpenGL renders the texture + and we validate that it contains the pattern that was rendered + by Vulkan. \vspace{0.3cm} & + \adjustbox{valign=t, margin=1ex, + padding=1ex}{\includegraphics[height=1cm]{shots/image_display.png}} + & \cellcolor{green}{upstream}\\ + \hline + \rowcolor{whitesmoke} + vk-pix-buf-update-errors & + The test is similar to the previous one with the difference that + we attempt to overwrite the buffer using BufferSubData. We + validate that an invalid operation error is generated and the + contents of the buffer remain unchanged after the + attempt.\vspace{0.3cm} & + \adjustbox{valign=t, margin=1ex, + padding=1ex}{\includegraphics[height=1cm]{shots/image_display.png}} + & \cellcolor{blond}{work in progress}\\ + \hline + \end{tabularx} + \end{table} + } +\end{frame} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{frame} - \frametitle{test} - foobar +\begin{frame}[fragile] + \frametitle{Additions to Piglit (the details) IV} + + \begin{center} + \normalsize{\textbf{\color{coolblack}{Contributions to Piglit IV }}} + \end{center} + + \tiny{ + \begin{center}\textbf{Reusing a vertex buffer:}\end{center} + \begin{table}[t] + \begin{tabularx}{\textwidth}{|l|X|l|l|} + \hline + \rowcolor{paleaqua} + Test name & Description + & Output & Status\\ + \hline + \hline + \rowcolor{platinum} + vk-vert-buf-update-errors & + A Vulkan vertex buffer is allocated and filled with data so that + the vertices create quads that follow a chess pattern. This + vertex buffer is used by OpenGL that clears the screen with red + and paints the pixels blue. + We validate that the geometry is correct and that we can't + overwrite it using \texttt{glBufferSubdata}. \vspace{0.3cm} & + \adjustbox{valign=t, margin=1ex, + padding=1ex}{\includegraphics[height=1cm]{shots/vert_buf_update_errors.png}} + & \cellcolor{blond}{work in progress}\\ + \hline + \rowcolor{whitesmoke} + vk-vert-buf-reuse & + Similar to the previous test, but the Vulkan vertex buffer is + used in a Vulkan renderpass afterwards to make sure Vulkan can + read back and reuse the vertex buffer.\vspace{0.3cm} & + \adjustbox{valign=t, margin=1ex, + padding=1ex}{\includegraphics[height=1cm]{shots/vert_buf_update_errors.png}} + & + \cellcolor{blond}{work in progress}\\ + \hline + \end{tabularx} + \end{table} + } \end{frame} -\section[Work and Status]{Igalia's work on mesa} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] + \frametitle{Additions to Piglit (the details) V} + \begin{center} + \normalsize{\textbf{\color{coolblack}{Contributions to Piglit V }}}\\ + \vspace{0.5cm} + \scriptsize{Same as with mesa many people helped us with the work on the + tests:} + \end{center} + + \tiny{ + \begin{table}[t] + \begin{tabularx}{\textwidth}{|l|X|} + \hline + \rowcolor{paleaqua} + Contributors & Contributions \\ + \hline + \hline + \rowcolor{platinum} + Eleni Maria Stea & tests, Vulkan framework code \\ + \rowcolor{whitesmoke} + Juan A. Suárez Romero & contributions to the framework, and + vk-image-overwrite, testing \\ + \rowcolor{platinum} + Tapani Pälli (\textit{\color{coolblack}{many thanks!}}) & reviews, testing and patches + for the framework \\ + \rowcolor{whitesmoke} + Bas Nieuwenhuizen & framework patch to support dedicated memory \\ + \rowcolor{platinum} + Topi Pohjolainen & we've used some old patches of him as an example + at the very beginning\\ + \hline + \end{tabularx} + \end{table} + } + + \begin{itemize} + \item Also thanks to Germán Poo Caamaño who helped tidying up the + initial mess of the Vulkan framework commits. + \item Again, this information was accurate when I prepared and + pre-recorded the slides. Sorry if I am missing someone or something! + \end{itemize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] + \frametitle{Piglit Results} + \begin{block}{\begin{center}Conclusions from running the tests:\end{center}} + \begin{itemize} + \vspace{0.5cm} + \item The feature seems to work well for the most use cases tested in + all mesa drivers mentioned before.\\ + \vspace{0.5cm} + \item Depth and stencil buffer exchange is only supported on + proprietary Nvidia driver, unfortunately not on Mesa yet.\\ + \vspace{0.5cm} + \item radeonsi needs some fixes to better support buffers and + optimal tiling (WIP). + \vspace{0.5cm} + \end{itemize} + \end{block} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\begin{frame}[fragile] +% \frametitle{vk-image-overwrite} +% \begin{block}{vk-image-overwrite} +% \lstinline[language=C++, style=CStyle]{glCreateMemoryObjectsEXT(1, gl_mem_obj); } +% \end{block} +%\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section[Q \& A]{Questions} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \begin{frame} - \frametitle{test} - foobar + \frametitle{Questions?} + {\fontsize{8}{7}\selectfont + \begin{center} + \begin{figure} + \includegraphics[scale=0.04]{data/qmark.png} + \end{figure} + \vspace{0.7cm} + {\large E-mail: {\color{coolblack}estea@igalia.com}}\\ + {\large IRC/Freenode: {\color{coolblack}hikiko}}\\ + \end{center} + } \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section[Q \& A]{Questions and Answers} +\section[References]{References} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\setbeamertemplate{bibliography entry title}{} +%\setbeamertemplate{bibliography entry location}{} +%\setbeamertemplate{bibliography entry note}{} +\setbeamerfont{bibliography item}{size=\footnotesize} +\setbeamerfont{bibliography entry author}{size=\footnotesize} +\setbeamerfont{bibliography entry title}{size=\footnotesize} +\setbeamerfont{bibliography entry year}{size=\footnotesize} +\setbeamerfont{bibliography entry note}{size=\footnotesize} + +\begin{frame}[allowframebreaks] + \frametitle{Links} + \bibliographystyle{unsrt} + \bibliography{bib/references.bib} + \nocite{*} +\end{frame} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame}[plain] +\begin{minipage}[b][0.6\textheight]{\linewidth} + \begin{picture}(0, 0) + \put(0, -76){% + \pgfuseimage{igaliabglight} + } + \begin{minipage}[b][0.4\textheight]{\linewidth} + \begin{figure} + \includegraphics[scale=0.6]{data/mesa.png} + \end{figure} + \end{minipage} + \put(-200, 0) { + \hfill \huge{\textbf{\color{coolblack}Thank you!}}\\ + } + \end{picture} +\end{minipage} + +\end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%