[Mesa-dev] [PATCH v5 10/10] docs: add a high level info about Tizen / Tizen Porting Layer (TPL) for EGL / Tizen Buffer Manager (TBM) / etc (v2)
Gwan-gyeong Mun
elongbug at gmail.com
Wed Oct 25 16:51:03 UTC 2017
It gives a quick overview and references of developing OpenGLES / EGL
Driver for Tizen.
v2:
- Fixes from Eric's review:
Change links of Setup build environment for Tizen (Raspberry Pi 3) and
Tizen Binary Download Instructions for Raspberry Pi 3 to `tizen-` prefixed
pages.
- Add Setup Raspberry Pi 3 for Tizen Instruction link
Signed-off-by: Mun Gwan-gyeong <elongbug at gmail.com>
---
docs/systems.html | 1 +
docs/tizen.html | 251 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 252 insertions(+)
create mode 100644 docs/tizen.html
diff --git a/docs/systems.html b/docs/systems.html
index b97e1f0a79..ab6c9c3f74 100644
--- a/docs/systems.html
+++ b/docs/systems.html
@@ -63,6 +63,7 @@ drivers</a> for the X Window System
and Unix-like operating systems
<li><a href="README.WIN32">Microsoft Windows</a>
<li><a href="vmware-guest.html">VMware</a> guest OS driver
+<li><a href="tizen.html">Tizen</a>
</ul>
diff --git a/docs/tizen.html b/docs/tizen.html
new file mode 100644
index 0000000000..06656c8f44
--- /dev/null
+++ b/docs/tizen.html
@@ -0,0 +1,251 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8">
+ <title>Tizen</title>
+ <link rel="stylesheet" type="text/css" href="mesa.css">
+</head>
+<body>
+
+<div class="header">
+ <h1>The Mesa 3D Graphics Library</h1>
+</div>
+
+<iframe src="contents.html"></iframe>
+<div class="content">
+
+<h1>Introduction</h1>
+
+<p>
+This document describes the essential elements of Tizen's platform-level
+graphics architecture related to OpenGL ES and EGL,
+and how it is used by the application framework and the display server.
+The focus is on how graphical data buffers move through the system.
+</p>
+
+<p>
+Tizen platform requires the OpenGL ES driver for the acceleration of
+the Wayland display server and wayland-eglclient.
+This platform demands OpenGL ES and EGL driver which is implemented by
+the Tizen EGL Porting Layer.
+</p>
+<br />
+
+<h1>Tizen OpenGL ES and EGL Architecture</h1>
+
+<p>
+The following figure illustrates the Tizen OpenGL ES and EGL architecture.
+</p>
+
+<p style="text-align: center;">
+ <img src="https://wiki.tizen.org/images/d/d6/OPENGLES_STACK.png"
+ width="800" height="582" />
+</p>
+
+<br />
+<h2>CoreGL</h2>
+
+<p>An injection layer of OpenGL ES that provides the following capabilities:</p>
+
+<ul>
+ <li> Support for driver-independent optimization (FastPath)</li>
+ <li> EGL/OpenGL ES debugging</li>
+ <li> Performance logging</li>
+</ul>
+
+<br />
+<h2>Tizen Porting Layer (TPL) for EGL</h2>
+
+<p>
+TPL-EGL is an abstraction layer for surface and buffer management on Tizen
+platform. It is used for implementation of the EGL platform functions.
+</p>
+
+<p style="text-align: center;">
+ <img src="https://wiki.tizen.org/images/0/0e/Tpl_architecture.png"
+ width="800" height="204" />
+</p>
+
+<br />
+<ul>
+ <li>
+ The background for the Tizen EGL Porting Layer for EGL is in various window
+ system protocols in Tizen. There was a need for separating common layer and
+ backend.
+ </li>
+ <li>
+ Tizen uses the Tizen Porting Layer for EGL, as the TPL-EGL APIs prevents
+ burdens of the EGL porting on various window system protocols.
+ The GPU GL Driver’s Window System Porting Layer can be implemented by
+ TPL-EGL APIs which are the corresponding window system APIs.
+ The TBM, Wayland, and GBM backends are supported.
+ </li>
+</ul>
+
+<br />
+<h2>Tizen Porting Layer for EGL Object Model</h2>
+
+<p>
+TPL-EGL provides interfaces based of object driven model.
+Every TPL-EGL object can be represented as a generic tpl_object_t,
+which is reference-counted and provides common functions.
+Currently, display and surface types of TPL-EGL objects are provided.
+Display, like normal display, represents a display system which is usually
+used for connection to the server. Surface corresponds to a native surface
+like wl_surface. A surface might be configured to use N-buffers,
+but is usually double-buffered or triple-buffered.
+Buffer is actually something to render on, usually a set of pixels
+or a block of memory. For these 2 objects, the Wayland, GBM, TBM backend are
+defined, and they are corresponding to their own window systems.
+This means that you do not need to care about the window systems.
+</p>
+
+<br />
+<h3>TPL-EGL Core Object</h3>
+
+<ul>
+ <h4>TPL-EGL Object</h4>
+ <ul>
+ <li>Base class for all TPL-EGL objects</li>
+ </ul>
+
+ <h4>TPL-EGL Display</h4>
+ <ul>
+ <li>
+ Encapsulates the native display object (Display *, wl_display) Like a
+ normal display, represents a display system which is usually used for
+ connection to the server, scope for other objects.
+ </li>
+ </ul>
+
+ <h4>TPL-EGL Surface</h4>
+ <ul>
+ <li>
+ Encapsulates the native drawable object (Window, Pixmap, wl_surface)
+ The surface corresponds to a native surface, such as tbm_surface_queue
+ or wl_surface. A surface can be configured to use N-buffers,
+ but they are usually double-buffered or triple-buffered.
+ </li>
+ </ul>
+</ul>
+
+<br />
+<h3>TPL-EGL Objects and Corresponding EGL Objects</h3>
+<p>
+Both TPL-EGL and vendor GLES/EGL driver handles the tbm_surface as
+TPL surface's corresponding buffer. It is represented by the TBM_Surface
+part in the following figure.
+</p>
+
+<p style="text-align: center;">
+ <img src="https://wiki.tizen.org/images/e/e6/Relationship_TPL_EGL_Gray.png"
+ width="800" height="403" />
+</p>
+
+<br />
+<p>The following figure illustrates the GLES drawing API flow.</p>
+
+<p style="text-align: center;">
+ <img src="https://wiki.tizen.org/images/4/41/GLES_API_FLOW_GRAY.png"
+ width="800" height="480" />
+</p>
+
+<br />
+<h2>Tizen Buffer Manager (TBM)</h2>
+
+<p>
+Tizen Buffer Manager (TBM) provides the abstraction interface for the graphic
+buffer manager in Tizen.
+</p>
+
+<ul>
+ <li>
+ The TBM has a frontend libary and a backend module. The TBM frontend library
+ is hardware-independent and provides the generic buffer interface for users.
+ On the other hand, the TBM backend module is hardware-dependent and provides
+ the buffer interface depended on the target system. The chipset vendors have
+ to provide their own backend modules in order for the TBM to work well in
+ Tizen platform.
+ </li>
+ <li>
+ With TBM, the client and server can allocate buffers and share it between
+ them. For example, a client allocates a graphic buffer, draws something on
+ it with GL and sends it to the display server for displaying it on the
+ screen without buffer copying.
+ </li>
+</ul>
+
+
+<h3>TBM Surface queue</h3>
+
+<p>Provide Graphic Buffer queue between provider and consumer module.</p>
+
+<ul>
+ <li>Provider renders something at graphic buffer.</li>
+ <li>Consumer uses graphic buffer.</li>
+ <li>Example) GPU Driver is provider and Display server is Consumer</li>
+</ul>
+
+<h3>Wayland-TBM</h3>
+
+<ul>
+ <li>
+ The wayland-tbm is the library for sharing the tbm_surfaces between the client
+ and the server.
+ </li>
+ <li>
+ When the client creates the wl_buffer though the wayland-tbm library, the
+ client can gets the wl_buffer which is shared with the server through the
+ wl_tbm protocol.
+ </li>
+</ul>
+
+<br />
+<h2>References</h2>
+
+<li>
+ <a href="https://wiki.tizen.org/3.0_Porting_Guide/Graphics_and_UI/OpenGL">
+ Tizen 3.0 OpenGLES/EGL Driver Porting Guide
+ </a>
+</li>
+
+<li>
+ <a href="https://wiki.tizen.org/wiki/3.0_Porting_Guide/Graphics_and_UI/libtpl-egl">
+ Tizen 3.0 OpenGLES/EGL Driver Porting Guide BufferFlow
+ </a>
+</li>
+
+<li>
+ <a href="https://www.x.org/wiki/Events/XDC2016/Program/XDC2016_Tizen_Window_System_EGL_Vulkan.pdf">
+ Tizen 3.0 's Window System Integration Layer of OpenGLES/EGL & Vulkan Driver - XDC2017
+ </a>
+</li>
+
+<li>
+ <a href="https://wiki.tizen.org/wiki/TBM">
+ Tizen Buffer Manager (TBM)
+ </a>
+</li>
+
+<li>
+ <a href="https://wiki.tizen.org/3.0_Porting_Guide/Setup_Build_Enviromnent_for_RPI3">
+ Setup build environment for Tizen (Raspberry Pi 3)
+ </a>
+</li>
+
+<li>
+ <a href="https://wiki.tizen.org/3.0_Porting_Guide/Binary_Download_Instruction_for_RPI3">
+ Tizen Binary Download Instruction for Raspberry Pi 3
+ </a>
+</li>
+
+<li>
+ <a href="https://wiki.tizen.org/3.0_Porting_Guide/Setup_RPI3_for_Tizen_Instruction">
+ Setup Raspberry Pi 3 for Tizen Instruction
+ </a>
+</li>
+<br />
+
+</div>
+</body>
+</html>
--
2.14.2
More information about the mesa-dev
mailing list