ekthesi ideon sto depth
authorEleni Maria Stea <estea@igalia.com>
Sun, 13 Sep 2020 17:37:27 +0000 (20:37 +0300)
committerEleni Maria Stea <estea@igalia.com>
Sun, 13 Sep 2020 17:37:27 +0000 (20:37 +0300)
estea-xdc2020.tex

index 0b95ed1..dd62c1c 100644 (file)
@@ -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
                \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
 
                \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}
                \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}
 
        \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}
        \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}
        \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
                                \rowcolor{whitesmoke}
                                i965 & helped with the \textbf{\color{coolblack}review}, patches & \cellcolor{babypink}{under review
                                (Draft MR !5594)}\\
-                               \hline 
+                               \hline
                        \end{tabularx}
                \end{table}
        }
        \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,
                                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}
        }
                \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
                                \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}
        }
                \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
                                \adjustbox{valign=t, margin=1ex,
                                padding=1ex}{\includegraphics[height=1cm]{shots/stencil.png}}
                                & \cellcolor{babypink}{under review}\\
-                               \hline 
+                               \hline
                        \end{tabularx}
                \end{table}
                }
 
                \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
                \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
                                \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
                                padding=1ex}{\includegraphics[height=1cm]{shots/vert_buf_update_errors.png}}
                                &
                                \cellcolor{blond}{work in progress}\\
-                               \hline 
+                               \hline
                        \end{tabularx}
                \end{table}
        }
        \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}
        }
        \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).