From 465b4cd046b456e0383ae1546cc2d0431d2727c4 Mon Sep 17 00:00:00 2001 From: Eleni Maria Stea Date: Sun, 13 Sep 2020 20:37:27 +0300 Subject: [PATCH] ekthesi ideon sto depth --- estea-xdc2020.tex | 132 ++++++++++++++++++++++++++++------------------------- 1 file changed, 71 insertions(+), 61 deletions(-) diff --git a/estea-xdc2020.tex b/estea-xdc2020.tex index 0b95ed1..dd62c1c 100644 --- a/estea-xdc2020.tex +++ b/estea-xdc2020.tex @@ -45,8 +45,8 @@ 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, + 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 @@ -181,7 +181,7 @@ \rowcolor{platinum} \\ \rowcolor{platinum} - \small{· \color{coolblack}{\textbf{Allocating} the resources (textures, + \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 @@ -195,17 +195,17 @@ \vspace{0.5cm} \end{center} - \footnotesize{\textbf{Example:} a Vulkan VR compositor could allocate the - left and right eye images but let other OpenGL processes to generate and - write their texture data.} + \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} + \frametitle{OpenGL extensions for interoperability on Linux} - \center{\textbf{\color{coolblack}{OpenGL EXTENSIONS}}} + \center{\textbf{\color{coolblack}{OpenGL Extensions (Linux)}}} \vspace{0.2cm} \setbeamertemplate{itemize/enumerate body begin}{\footnotesize} @@ -220,6 +220,7 @@ \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} @@ -228,11 +229,16 @@ \begin{block}{\color{afblue}{\footnotesize\textbf{EXT\_external\_object (EXT\_memory\_object, EXT\_semaphore)}:}} \begin{itemize} - \item {functions to create GL objects, textures and buffers - from Vulkan memory} - \item {functions to create GL semaphore objects that - correspond to Vulkan ones} - \item {functions for synchronization} + \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} @@ -264,7 +270,8 @@ \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 the most common + {\color{coolblack}\textbf{Piglit}} and Vulkan/GL tests that cover + some common EXT\_external\_objects(\_fd) use cases. } \end{block} @@ -282,11 +289,11 @@ \tiny{ \begin{table}[t] \begin{tabularx}{\textwidth}{|l|X|l|} - \hline + \hline \rowcolor{paleaqua} Driver & Igalia's Contributions & Status \\ - \hline - \hline + \hline + \hline \rowcolor{platinum} iris & \textbf{\color{coolblack}implemented} EXT\_external\_objects, EXT\_external\_objects\_fd & \cellcolor{babypink}{under review (MR @@ -301,7 +308,7 @@ \rowcolor{whitesmoke} i965 & helped with the \textbf{\color{coolblack}review}, patches & \cellcolor{babypink}{under review (Draft MR !5594)}\\ - \hline + \hline \end{tabularx} \end{table} } @@ -314,11 +321,11 @@ \tiny{ \begin{table}[ht] \begin{tabularx}{\textwidth}{|l|X|X|} - \hline + \hline \rowcolor{paleaqua} Driver & Patches & Reviews, Comments, Advice\\ - \hline - \hline + \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, @@ -331,9 +338,9 @@ 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 + i965 & Rohan Garg, Juan A. Suárez Romero, Tapani Pälli & Tomeu Vizoso, Eleni Maria Stea, Oscar Barenys \\ - \hline + \hline \end{tabularx} \end{table} } @@ -360,21 +367,21 @@ \begin{center}\textbf{Reusing color images:}\end{center} \begin{table}[t] \begin{tabularx}{\textwidth}{|l|X|c|l|} - \hline + \hline \rowcolor{paleaqua} - Test name & Use case + Test name & Description & Output & Status\\ - \hline - \hline + \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 + \hline \rowcolor{whitesmoke} - vk-image-display & + 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 @@ -382,15 +389,15 @@ \adjustbox{valign=t, margin=1ex, padding=1ex}{\includegraphics[height=1cm]{shots/image_display.png}} & \cellcolor{green}{upstream}\\ - \hline + \hline \rowcolor{platinum} - vk-image-display-overwrite & + 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 + \hline \end{tabularx} \end{table} } @@ -409,24 +416,27 @@ \begin{center}\textbf{Reusing the depth and stencil buffer:}\end{center} \begin{table}[t] \begin{tabularx}{\textwidth}{|l|X|c|l|} - \hline + \hline \rowcolor{paleaqua} - Test name & Use case + Test name & Description & Output & Status\\ - \hline - \hline + \hline + \hline \rowcolor{platinum} - vk-depth-display & A Vulkan quad is rendered at a specific depth - \texttt{d1}. The Vulkan depth buffer is used as a depth attachment while rendering - a blue quad in an OpenGL FBO with the depth test enabled in a - depth \texttt{d2 < d1}. We see the framebuffer color where - \texttt{imported\_depth > depth}. + 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 + \hline \rowcolor{whitesmoke} vk-stencil-display & Similarly, a small quad is rendered with Vulkan and the stencil test enabled. It is @@ -438,7 +448,7 @@ \adjustbox{valign=t, margin=1ex, padding=1ex}{\includegraphics[height=1cm]{shots/stencil.png}} & \cellcolor{babypink}{under review}\\ - \hline + \hline \end{tabularx} \end{table} } @@ -458,12 +468,12 @@ \begin{table}[t] \begin{tabularx}{\textwidth}{|l|X|l|l|} - \hline + \hline \rowcolor{paleaqua} - Test name & Use case + Test name & Description & Output & Status\\ - \hline - \hline + \hline + \hline \rowcolor{platinum} vk-buf-exchange & The test renders an image and copies it to a buffer using @@ -504,14 +514,14 @@ \begin{center}\textbf{Reusing a vertex buffer:}\end{center} \begin{table}[t] \begin{tabularx}{\textwidth}{|l|X|l|l|} - \hline + \hline \rowcolor{paleaqua} - Test name & Use case + Test name & Description & Output & Status\\ - \hline - \hline + \hline + \hline \rowcolor{platinum} - vk-vert-buf-update-errors & + 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 @@ -521,7 +531,7 @@ \adjustbox{valign=t, margin=1ex, padding=1ex}{\includegraphics[height=1cm]{shots/vert_buf_update_errors.png}} & \cellcolor{blond}{work in progress}\\ - \hline + \hline \rowcolor{whitesmoke} vk-vert-buf-reuse & Similar to the previous test, but the Vulkan vertex buffer is @@ -531,7 +541,7 @@ padding=1ex}{\includegraphics[height=1cm]{shots/vert_buf_update_errors.png}} & \cellcolor{blond}{work in progress}\\ - \hline + \hline \end{tabularx} \end{table} } @@ -551,25 +561,25 @@ \tiny{ \begin{table}[t] \begin{tabularx}{\textwidth}{|l|X|} - \hline + \hline \rowcolor{paleaqua} Contributors & Contributions \\ - \hline - \hline + \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{many thanks!}) & reviews, testing and patches + 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 + \hline \end{tabularx} \end{table} } @@ -589,11 +599,11 @@ \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 common use cases in + \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 drivers, unfortunately not on Mesa yet.\\ + proprietary Nvidia driver, unfortunately not on Mesa yet.\\ \vspace{0.5cm} \item radeonsi needs some fixes to better support buffers and optimal tiling (WIP). -- 1.7.10.4