SlideShare a Scribd company logo
Tizen 3.0 's Window System Integration
Layer of OpenGLES/EGL & Vulkan Driver
Mun Gwan-gyeong
Software R&D Center
Samsung Electronics
(libtpl-egl, vulkan-wsi-tizen)
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 2 / 33
Agenda
Tizen 3.0 Window System Architecture
Tizen 3.0 Window System Integration Layer of
OpenGLES/EGL
libtpl-egl (Tizen Porting Layer for EGL)
Tizen 3.0 Vulkan WSI for Tizen
vulkan-wsi-tizen
Tizen 3.0 Window System Architecture
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 4 / 33
Tizen 3.0 Window System Architecture
Uses
Application
Backend
Module
Top-level
Module
Kernel layer – display sub system, input sub system, memory sub system
Display Server
TBM
(Buffer
manager)
TDM
(Display
manager)
Input
manager
libtpl-egl
GL
EvasGL
CoreGL
TDM Backend TBM Backend
GPU Vender
DDK
3D UI Toolkit
Hardware
independent
Hardware
dependent
Tizen API
Native App
Vulkan
Khronos
Loader
tizenvulkan-wsi-tizen
( Forked from E20 )
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 5 / 33
Components description
TPL-EGL is an abstraction layer for surface and buffer management
on Tizen platform aimed to implement the EGL porting layer of
OpenGLES driver over various display protocols.
Vulkan-WSI-Tizen wrapes vendor's vulkan ICDs and provides the
WSI(Window-System Interface) for the tizen.
Tizen Buffer Manager (TBM) provides the abstraction interface for
the graphic buffer manager in Tizen.
Tizen Display Manager (TDM) provides the abstraction interface
for the display server, such a wayland server, to allow the direct
access to graphics hardware in a safe and efficient manner as a
display HAL.
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 6 / 33
Components description (cont.)
EvasGL is a kind of Evas Object image for opengl and it is a GLES
Wrapper.
CoreGL is an injection layer of OpenGL ES that provides the
following capabilities:
Support for driver-independent optimization (FastPath)
EGL/OpenGL ES debugging
Performance logging
Tizen Porting Layer for EGL (libtpl-egl)
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 8 / 33
Tizen OpenGL ES and EGL Architecture
Uses
Module
System boundary
CoreGL Core
GPU Vendor GL / EGL Driver
GPU
GLES Application
GLESV1_CM
(CoreGL Frontend)
GLESV2
(CoreGL Frontend)
EGL
(CoreGL Frontend)
libtpl-egl Frontend
TBM backend
wayland-egl
backend
GBM backend
CoreGL
libtpl-egl
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 9 / 33
Tizen Porting Layer for EGL
Tizen Porting Layer(TPL) Architecture
TPL provides implementation of EGL platform functions on Tizen platform
TPL?
Background
Various window system protocols in Tizen
– Wayland , gbm , tbm , X11 (Tizen 3.0 Alpha)
Needs to separating common layer (frontend, duplicated code) and backend for
maintaining
Why TPL?
TPL-EGL APIs prevents burdens of EGL porting on various window system
protocols.
Vendor GL Driver’s Window System Porting Layer functions treat only TPL-EGL
APs.
If libtpl-egl has improved performance, then Vendor driver can get it without
modification of code.
TPL Frontend Interface
tpl_wayland tpl_gbm
TPL Backend Interface
EGL
GPU GL Driver’s Window System Porting Layer Functions (Call TPL Interface)
tpl_tbm
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 10 / 33
TPL Frontend Interface
Tizen Porting Layer Core Object
TPL Object
Base class for all TPL objects
TPL Display
Encapsulate native display object (wl_display, gbm_device,
tbm_bufmgr )
TPL Surface
Encapsulate native drawable object (wl_surface, gbm_surface,
tbm_surface_queue_h )
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 11 / 33
Tizen Porting Layer for EGL
TPL
Provides TPL objects which correspond to EGL objects
TPL Display TPL SurfaceTPL Surface
(TBM_Surface_Queue)
TBM_Surface
EGLDisplay EGLSurface Driver’s egl buffer
Driver’s internal
memory handle
Driver’s internal
memory handle
Native Display Native Drawable
GL Driver’s Object
TPL Object, TBM Surface
Window System / DRM Object
DMABUF
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 12 / 33
GLES Drawing API Flow
EntryPoints Functions
(egl entrypoints)
TPL(Tizen Porting Layer)
(tpl.c)
eglCreateContext
eglInitialize
eglChooseConfig
eglCreateWindowSurface
GL calls (ex. glClear)
eglSwapBuffer
eglGetDisplay
…
tpl_surface_dequeue_buffer
tpl_surface_enqueue_buffer
tpl_surface_create
TPL display creation &
initialization
Create TPL surface for the
EGLSurface
Get the buffer of the current
frame for render target
Called from GL Driver’s EGL
Porting Layer when the
rendering is done.
tpl_display_create
GL Driver’s Window system
porting Functions
Create Driver’s display
Create Driver’s window
surface
Create Driver’s window
surface
Display window buffer
…
Get window target buffer
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 13 / 33
Simple example of the Tizen Porting Layer
tpl_display_t *dpy = tpl_display_create(...);
tpl_surface_t *sfc = tpl_surface_create(dpy, ...);
tbm_surface_h buf;
while (1)
{
buf = tpl_surface_dequeue_buffer(sfc); // get buffer
/* Draw something */
tpl_surface_enqueue_buffer(sfc, buf); // post buffer
}
[pseudo code] Using libtpl-egl api
In the GPU vendor driver, the "Draw something" part is what
the GPU frame builder does.
TPL-EGL exposes the native platform buffer as tbm_surface. If
tbm backend uses drm_backend , GL Driver can get dma_buf
from tbm_surface's buffer object.
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 14 / 33
TPL Frontend API ( tpl_object )
TPL Object
Base class for all TPL objects
Provide common functionalities of all TPL objects
API Description
tpl_object_reference Increase reference count of the given TPL object
tpl_object_unreference Decrease reference count and destroy it if it becomes 0
tpl_object_get_reference Get reference count of the given TPL object
tpl_object_get_type Get type of the object (display or surface)
tpl_object_set_user_data Set user data and free callback for destruction
tpl_object_get_user_data Get user data
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 15 / 33
TPL Frontend API ( tpl_display )
TPL Display
Encapsulate native display object (wl_display, gbm_device, tbm_bufmgr)
Any other objects are created from TPL Display , they are inherited
backend type from TPL Display.
API Description
tpl_display_create Creates the TPL-EGL display object for the given native display
tpl_display_get Retrieve the TPL-EGL display for the given native display handle
tpl_display_get_native_handle Get native handle of the given display
tpl_display_query_config Query pixel format information
tpl_display_get_native_window_info Query information on the given native window.
tpl_display_get_native_pixmap_info Query information on the given native pixmap.
tpl_display_get_buffer_from_native_pixmap Get native buffer from the given native pixmap.
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 16 / 33
TPL Frontend API ( tpl_surface )
TPL Surface
Encapsulate native drawable object (wl_surface, gbm_surface,
tbm_surface_queue_h)
Main Features
Get the buffer for a surface
Post the buffer to a surface of screen
API Description
tpl_surface_create Create a TPL-EGL surface for the given native drawable
tpl_surface_get_display Get TPL-EGL display of the given surface
tpl_surface_get_native_handle Get native handle of the given surface
tpl_surface_get_type Get type of the given surface (Window or Pixmap)
tpl_surface_get_size Get size of the given surface
tpl_surface_dequeue_buffer Get buffer (as TBM_SURFACE) of the current frame for the given surface
tpl_surface_validate Check current buffer is valid
tpl_surface_set_post_interval Set post interval
tpl_surface_get_post_interval Get post interval
tpl_surface_enqueue_buffer Post to screen
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 17 / 33
Wayland Server / Client on libtpl-egl
Uses
Module
System boundary
Enlightenment
EVAS GL TBM / DRM
TBM / GBM
EGL
libtpl-egl
GPU Vendor GL Driver
libwayland-tbm
Wayland-EGL Client
EGL
libtpl-egl
Wayland ClientWayland Display Server
libwayland-egl
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 18 / 33
Buffer Flow ( Wayland Server ↔ GLES/EGL Driver )
Buffer Flow Direction
Module
System boundary
Presenter
Wayland Display Server Tizen Porting Layer for EGL
Renderer
GLES/EGL Driver
libtpl-egl
(1) Dequeue
(2) Enqueue
(3) Acquire
(4) Release
tpl_surface_dequeue_buffer()
tpl_surface_enqueue_buffer()
tbm_surface_queue_acquire()
tbm_surface_queue_release()
Buffer Flow Between the Wayland Server and GLES/EGL Driver
Vulkan WSI for Tizen (vulkan-wsi-tizen)
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 20 / 33
Tizen Vulkan Architecture
Uses
Module
System boundary
Khronos Vulkan Loader
libtpl-eglVulkan WSI Tizen
Vendor’s Vulkan ICD
GPU
Vulkan Application
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 21 / 33
Vulkan WSI for Tizen
Objectives
Applications should be able to use khronos vulkan loader
Do not modify khronos vulkan loader
Separate WSI binary across multiple vendor ICDs
Don’t do any platform specific things, use TPL instead
Architecture
WSI wraps the ICD and act like a complete ICD
Vulkan Application
Khronos Vulkan Loader
Vulkan WSI Tizen
Vendor ICD
TPL/TBM
Tizen Window System
Tizen WSI/ICD Interface
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 22 / 33
Vulkan Loader ( Khronos Vulkan Loader )
Loader exposes vulkan symbols to applications (libvulkan.so)
Loader opens an ICD shared object file and dispatches ICD
functions via vk_icdGetInstanceProcAddr()
This is recommended way according to the khronos loader
document
Application calls a loader function, then loader function finally calls
the dispatched ICD function
Vulkan is layered architecture
libvulkan.so
(loader)
foo()
bar()
…
icd.so
(vendor’s)
foo()
bar()
…
Application
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 23 / 33
Wrapping ICD ( vulkan-wsi-tizen )
Vulkan WSI Tizen acts like a complete ICD
Exposes vk_icdGetInstanceProcAddr() which dispatches all required
vulkan functions
Some functions are implemented in vulkan-wsi-tizen, while others come
from vendor ICD
API Hooks
Vulkan WSI Tizen hooks desired vulkan functions
Hooked vulkan-wsi-tizen functions are dispatched instead of ICD
functions
vkGetInstanceProcAddr(), vkGetDeviceProcAddr() are hooked by default
If not, an (Vendor’s) ICD function might be dispatched even though
it is hooked by WSI
libvulkan.so
(loader)
foo()
…
foo()
…
icd.so
(vendor’s)
foo()
…
WSI might call icd.foo
inside of wsi.so
bar()bar()
baz() baz()
vulkan-wsi-tizen.so
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 24 / 33
Extension Merge ( vulkan-wsi-tizen )
Extension Merge
vulkan-wsi-tizen merges extensions from Vendor ICD and vulkan-wsi-
tizen’s own extension
vulkan-wsi-tizen hooks extension enumeration functions
vkEnumerateInstanceExtensionProperties() in vulkan-wsi-tizen
Vendor ICD instance extension + VK_KHR_surface +
VK_KHR_wayland_surface
vkEnumerateDeviceExtensionProperties() in vulkan-wsi-tizen
Vendor ICD device extension + VK_KHR_swapchain
libvulkan.so
(loader)
foo()
…
foo()
…
icd.so
(vendor’s)
foo()
…
bar()bar()
baz() baz()
Vulkan-wsi-tizen
merges extensions
vulkan-wsi-tizen.so
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 25 / 33
WSI Surface Functions (Khronos Vulkan Loader)
WSI Surface Functions
Surface functions are implemented in the khronos loader
Surface object is passed to the vulkan-wsi-tizen when other WSI
function is called
ex) vkCreateSwapchainKHR
Data structure for the loader surface object can be accessed via
vk_icd.h (Khronos Vulkan Loader’s header file)
libvulkan.so
(loader)
foo()
…
foo()
…
icd.so
(vendor’s)
foo()
…
bar()bar()
baz() baz()
Ex) WSI Swapchain Functions
vulkan-wsi-tizen.so
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 26 / 33
WSI Functions ( vulkan-wsi-tizen )
WSI functions except surface functions are implemented and hooked
WSI function categories
Surface capability query functions
Formats, presentation support, …
ex) vkGetPhysicalDeviceSurfaceCapabilitiesKHR(),
vkGetPhysicalDeviceSurfaceFormatsKHR() …
Swapchain functions
ex) vkCreateSwapchainKHR(), vkGetSwapchainImagesKHR(),
vkAcquireNextImageKHR(), vkQueuePresentKHR() …
Display functions
Required when presenting directly to a display device
libvulkan.so
(loader)
foo()
…
foo()
…
icd.so
(vendor’s)
foo()
…
bar()bar()
baz() baz()
Ex) WSI Swapchain Functions
vulkan-wsi-tizen.so
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 27 / 33
Swapchain related API ( vulkan-wsi-tizen )
TPL Surface
TBM
Surface
TBM
Surface
TBM
Surface
VkSwapchainKHR
VkImage VkImage VkImage TBM Surface Queue
Swapchain
Manages image (buffer) queue
vkAcquireNextImageKHR()
Acquire a next image from the presentation engine
vkQueuePresentKHR()
Present the given image to the presentation engine
Implemented using TPL surface
vkAcquireNextImageKHR()
tpl_surface_dequeue_buffer()
Find index of the dequeued buffer and return
vkQueuePresentKHR()
tpl_surface_enqueue_buffer()
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 28 / 33
Vulkan WSI Tizen ↔ Vendor’s ICD interface
Vulkan WSI Tizen ↔ Vendor’s ICD interface
Vendor’s ICD should provide functions required by the Vulkan WSI Tizen
vk_tizen.h
Defines functions ICD should provides
Vulkan WSI Tizen should be able to dispatch those functions via Vendor ICD’s
vk_icdGetInstanceProcAddr()
vkCreateImageFromNativeBufferTIZEN()
It creates a VkImage from a tizen native buffer (tbm_surface_h)
It is called by vkCreateSwapchainKHR() of vulkan-wsi-tizen
Arguments
[in] VkDevice
– VkDevice is passed by vkCreateSwapchainKHR()
[in] tbm_surface_h
– Native tizen buffer
[in] const VkImageCreateInfo *
– Properties of the native tizen buffer (dimension, format, …)
[in] const VkAllocationCallbacks *
– Allocation callbacks used for host memory allocation
[out] VkImage *
– Vendor ICD should create vkImage from tbm_surface.
– vkAcquireNextImageKHR() uses this VkImage.
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 29 / 33
Vulkan WSI Tizen ↔ Vendor’s ICD (cont.)
vkQueueSignalReleaseImageTIZEN()
When the vendor’s vulkan driver ends up the handling of vkImage and it is
ready to present (all waiting semaphores are triggered), Vendor ICD notifies to
vulkan-wsi-tizen (NativeFenceFd is created by Vendor Driver. )
It is called by vkQueuePresentKHR() of vulkan-wsi-tizen
Arguments
[in] VkQueue
– VKQueue is passed by vkQueuePresentKHR()
[in] uint32_t
– waitSemaphoreCount is passed by VkPresentInfoKHR of
vkQueuePresentKHR()
[in] const VkSemaphore *
– WaitSemaphore list is passed by VkPresentInfoKHR of
vkQueuePresentKHR()
[in] VkImage
– VkImage index is passed by VkPresentInfoKHR of vkQueuePresentKHR()
[out] int *NativeFenceFd
– Vendor ICD should create NativeFenceFd from WaitSemaphore list.
– vulkan-wsi-tizen waits NativeFeceFd by tbm_sync_fence_wait().
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 30 / 33
Vulkan WSI Tizen ↔ Vendor’s ICD (cont.)
vkAcquireImageTIZEN()
It notifies the acquired Image which is ready to use to the Vendor’s Vulkan
Driver.
It is called by vkAcquireNextImageKHR() of vulkan-wsi-tizen
Arguments
[in] VkDevice
– VkDevice is passed by vkAcquireNextImageKHR()
[in] VkImage
– VkImage index is passed by vkAcquireNextImageKHR()
[in] int nativeFenceFD
– Vulkan driver should wait this nativeFenceFD until Display Server
triggers it. ( Display Server uses tbm_sync_timeline_inc() for triggering)
– nativeFenceFD is created by tbm_sync_fence_create()
[in] VkSemaphore
– Vendor ICD connects VkSemaphore to nativeFenceFD
– When nativeFenceFD is triggered, Vendor ICD signals VkSemaphore
[in] VkFence
– Vendor ICD connects VkFence to nativeFenceFD
– When nativeFenceFD is triggered, Vendor ICD signals VkFence
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 31 / 33
Supported WSI Spec (Current State)
Surface & Swapchain Functions
Function Status
vkCreateWaylandSurfaceKHR Provided by khronos loader
vkDestroySurfaceKHR Provided by khronos loader
vkGetPhysicalDeviceWaylandPresentationSupportKHR Done
vkGetPhysicalDeviceSurfaceSupportKHR Done
vkGetPhysicalDeviceSurfaceCapabilitiesKHR Done
vkGetPhysicalDeviceSurfaceFormatsKHR Done
vkGetPhysicalDeviceSurfacePresentModesKHR Done
vkCreateSwapchainKHR Done
vkCreateSharedSwapchainKHR Not Implemented Yet
vkDestroySwapchainKHR Done
vkGetSwapchainImagesKHR Done
vkAcquireNextImageKHR Done
vkQueuePresentKHR Done
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 32 / 33
Supported WSI Spec
Present Modes
Display Functions
Modes Status
VK_PRESENT_MODE_IMMEDIATE_KHR Not Implemented Yet
VK_PRESENT_MODE_MAILBOX_KHR Done
VK_PRESENT_MODE_FIFO_KHR Not Implemented Yet
VK_PRESENT_MODE_FIFO_RELAXED_KHR Not Implemented Yet
Function Status
vkCreateDisplaySurfaceKHR Provided by khronos loader
vkGetPhysicalDeviceDisplayPropertiesKHR Not Implemented Yet
vkGetPhysicalDeviceDisplayPlanePropertiesKHR Not Implemented Yet
vkGetDisplayPlaneSupportedDisplaysKHR Not Implemented Yet
vkGetDisplayModePropertiesKHR Not Implemented Yet
vkCreateDisplayModeKHR Not Implemented Yet
vkGetDisplayPlaneCapabilitiesKHR Not Implemented Yet
Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 33 / 33
References
Project Git repogitory (https://review.tizen.org/gerrit/#/admin/projects/ )
libtpl-egl Reference Driver
The Emulator YAGL (OpenGLES / EGL driver for the emulator) is implemented
by libtpl-egl.
The following commit explains how to port the driver with libtpl-egl from the
traditional drm-based driver.
Porting YAGL to the Tizen platform https://review.tizen.org/gerrit/#/c/67921/
Project Repository Description
libtpl-egl platform/core/uifw/libtpl-egl Tizen Porting Layer for EGL
vulkan-wsi-tizen platform/core/uifw/vulkan-wsi-tizen vulkan wsi tizen icd, it wrapps vendor icd and
provides wsi for tizen
libtbm platform/core/uifw/libtbm The library for the Tizen Buffer Manager
coregl platform/core/uifw/coregl An injection layer of OpenGL ES / EGL
wayland-tbm
platform/core/uifw/wayland-tbm
Wayland tbm is a protocol for graphics memor
y management for Tizen
emulator-yagl platform/adaptation/emulator/emulator-yagl OpenGL ES / EGL driver for the emulator
tpl-novice platform/core/uifw/ws-testcase Novice test framework for TPL
Copyright © 2012 Samsung Electronics, Co., Ltd. All rights reserved. 34

More Related Content

What's hot

Introduction to Skia by Ryan Chou @20141008
Introduction to Skia by Ryan Chou @20141008Introduction to Skia by Ryan Chou @20141008
Introduction to Skia by Ryan Chou @20141008
Ryan Chou
 
SIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGLSIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGL
Mark Kilgard
 
NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016
Mark Kilgard
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Bin Chen
 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
Emertxe Information Technologies Pvt Ltd
 
BitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven rendererBitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven renderertobias_persson
 
Golang basics for Java developers - Part 1
Golang basics for Java developers - Part 1Golang basics for Java developers - Part 1
Golang basics for Java developers - Part 1
Robert Stern
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
Chris Simmonds
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
Electronic Arts / DICE
 
Introduction to Android Window System
Introduction to Android Window SystemIntroduction to Android Window System
Introduction to Android Window System
National Cheng Kung University
 
Beyond porting
Beyond portingBeyond porting
Beyond porting
Cass Everitt
 
Embedded Android : System Development - Part IV (Android System Services)
Embedded Android : System Development - Part IV (Android System Services)Embedded Android : System Development - Part IV (Android System Services)
Embedded Android : System Development - Part IV (Android System Services)
Emertxe Information Technologies Pvt Ltd
 
Low Level View of Android System Architecture
Low Level View of Android System ArchitectureLow Level View of Android System Architecture
Low Level View of Android System Architecture
National Cheng Kung University
 
Yocto project
Yocto projectYocto project
LCA13: Xen on ARM
LCA13: Xen on ARMLCA13: Xen on ARM
LCA13: Xen on ARM
Linaro
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
Emertxe Information Technologies Pvt Ltd
 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
Emertxe Information Technologies Pvt Ltd
 
Hardware Accelerated 2D Rendering for Android
Hardware Accelerated 2D Rendering for AndroidHardware Accelerated 2D Rendering for Android
Hardware Accelerated 2D Rendering for Android
National Cheng Kung University
 
Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IVEmbedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
Emertxe Information Technologies Pvt Ltd
 

What's hot (20)

Introduction to Skia by Ryan Chou @20141008
Introduction to Skia by Ryan Chou @20141008Introduction to Skia by Ryan Chou @20141008
Introduction to Skia by Ryan Chou @20141008
 
SIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGLSIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGL
 
NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
 
Character Drivers
Character DriversCharacter Drivers
Character Drivers
 
BitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven rendererBitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven renderer
 
Golang basics for Java developers - Part 1
Golang basics for Java developers - Part 1Golang basics for Java developers - Part 1
Golang basics for Java developers - Part 1
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
Introduction to Android Window System
Introduction to Android Window SystemIntroduction to Android Window System
Introduction to Android Window System
 
Beyond porting
Beyond portingBeyond porting
Beyond porting
 
Embedded Android : System Development - Part IV (Android System Services)
Embedded Android : System Development - Part IV (Android System Services)Embedded Android : System Development - Part IV (Android System Services)
Embedded Android : System Development - Part IV (Android System Services)
 
Low Level View of Android System Architecture
Low Level View of Android System ArchitectureLow Level View of Android System Architecture
Low Level View of Android System Architecture
 
Yocto project
Yocto projectYocto project
Yocto project
 
LCA13: Xen on ARM
LCA13: Xen on ARMLCA13: Xen on ARM
LCA13: Xen on ARM
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
 
Hardware Accelerated 2D Rendering for Android
Hardware Accelerated 2D Rendering for AndroidHardware Accelerated 2D Rendering for Android
Hardware Accelerated 2D Rendering for Android
 
Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IVEmbedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
 

Viewers also liked

OpenMobile ACL bringing Android apps to TIZEN
OpenMobile ACL bringing Android apps to TIZENOpenMobile ACL bringing Android apps to TIZEN
OpenMobile ACL bringing Android apps to TIZEN
Ryo Jin
 
Siggraph 2016 - Vulkan and nvidia : the essentials
Siggraph 2016 - Vulkan and nvidia : the essentialsSiggraph 2016 - Vulkan and nvidia : the essentials
Siggraph 2016 - Vulkan and nvidia : the essentials
Tristan Lorach
 
Showdown vulkan
Showdown vulkanShowdown vulkan
Showdown vulkan
Wen Lei Li
 
Panduan Penggunaan Perangkat Wearable Tizen
Panduan Penggunaan Perangkat Wearable TizenPanduan Penggunaan Perangkat Wearable Tizen
Panduan Penggunaan Perangkat Wearable Tizen
Ryo Jin
 
(En) Samsung Gear Fit 2 Watchface Design Duide
(En) Samsung  Gear Fit 2 Watchface Design Duide(En) Samsung  Gear Fit 2 Watchface Design Duide
(En) Samsung Gear Fit 2 Watchface Design Duide
TizenExperts
 
Publishing to Tizen using the Automated Conversion/Repackaging of Existing An...
Publishing to Tizen using the Automated Conversion/Repackaging of Existing An...Publishing to Tizen using the Automated Conversion/Repackaging of Existing An...
Publishing to Tizen using the Automated Conversion/Repackaging of Existing An...
Ryo Jin
 
Tizen-based Samsung TV Web Simulator
Tizen-based Samsung TV Web SimulatorTizen-based Samsung TV Web Simulator
Tizen-based Samsung TV Web SimulatorRyo Jin
 
ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染
Ning Hu
 
Gear Fit2 Watchface Design Guide
Gear Fit2 Watchface Design GuideGear Fit2 Watchface Design Guide
Gear Fit2 Watchface Design Guide
Ryo Jin
 
The green light for red meat in a child’s diet
The green light for red meat in a child’s dietThe green light for red meat in a child’s diet
The green light for red meat in a child’s dietJoanna Lowy
 
Intro to Yahoo Tech
Intro to Yahoo TechIntro to Yahoo Tech
Intro to Yahoo Tech
Dav Glass
 
Life Around Us (International Awards): Winners 2015
Life Around Us (International Awards): Winners  2015Life Around Us (International Awards): Winners  2015
Life Around Us (International Awards): Winners 2015
maditabalnco
 
Portal ngo.pl – Iza Dembicka, Alina Gałązka, NGO.pl
Portal ngo.pl – Iza Dembicka, Alina Gałązka, NGO.plPortal ngo.pl – Iza Dembicka, Alina Gałązka, NGO.pl
Portal ngo.pl – Iza Dembicka, Alina Gałązka, NGO.plbridgecamp
 
Tinco Lycklama presentatie zuster Mattea
Tinco Lycklama presentatie zuster MatteaTinco Lycklama presentatie zuster Mattea
Tinco Lycklama presentatie zuster Mattea
Historische Vereniging Noordoost Friesland
 
Narrativas digitais: criar com o myebook
Narrativas digitais: criar com o myebookNarrativas digitais: criar com o myebook
Narrativas digitais: criar com o myebook
Instituto de Letras e Ciências Humanas
 
Version 0
Version 0Version 0
Version 0
Guy Kawasaki
 

Viewers also liked (19)

OpenMobile ACL bringing Android apps to TIZEN
OpenMobile ACL bringing Android apps to TIZENOpenMobile ACL bringing Android apps to TIZEN
OpenMobile ACL bringing Android apps to TIZEN
 
Siggraph 2016 - Vulkan and nvidia : the essentials
Siggraph 2016 - Vulkan and nvidia : the essentialsSiggraph 2016 - Vulkan and nvidia : the essentials
Siggraph 2016 - Vulkan and nvidia : the essentials
 
Showdown vulkan
Showdown vulkanShowdown vulkan
Showdown vulkan
 
Panduan Penggunaan Perangkat Wearable Tizen
Panduan Penggunaan Perangkat Wearable TizenPanduan Penggunaan Perangkat Wearable Tizen
Panduan Penggunaan Perangkat Wearable Tizen
 
(En) Samsung Gear Fit 2 Watchface Design Duide
(En) Samsung  Gear Fit 2 Watchface Design Duide(En) Samsung  Gear Fit 2 Watchface Design Duide
(En) Samsung Gear Fit 2 Watchface Design Duide
 
Publishing to Tizen using the Automated Conversion/Repackaging of Existing An...
Publishing to Tizen using the Automated Conversion/Repackaging of Existing An...Publishing to Tizen using the Automated Conversion/Repackaging of Existing An...
Publishing to Tizen using the Automated Conversion/Repackaging of Existing An...
 
Tizen-based Samsung TV Web Simulator
Tizen-based Samsung TV Web SimulatorTizen-based Samsung TV Web Simulator
Tizen-based Samsung TV Web Simulator
 
ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染
 
Gear Fit2 Watchface Design Guide
Gear Fit2 Watchface Design GuideGear Fit2 Watchface Design Guide
Gear Fit2 Watchface Design Guide
 
Clase 5: Analitica Web
Clase 5: Analitica WebClase 5: Analitica Web
Clase 5: Analitica Web
 
The green light for red meat in a child’s diet
The green light for red meat in a child’s dietThe green light for red meat in a child’s diet
The green light for red meat in a child’s diet
 
Intro to Yahoo Tech
Intro to Yahoo TechIntro to Yahoo Tech
Intro to Yahoo Tech
 
Concurso de arquitectura
Concurso de arquitecturaConcurso de arquitectura
Concurso de arquitectura
 
24 John Meat to Eat
24 John Meat to Eat24 John Meat to Eat
24 John Meat to Eat
 
Life Around Us (International Awards): Winners 2015
Life Around Us (International Awards): Winners  2015Life Around Us (International Awards): Winners  2015
Life Around Us (International Awards): Winners 2015
 
Portal ngo.pl – Iza Dembicka, Alina Gałązka, NGO.pl
Portal ngo.pl – Iza Dembicka, Alina Gałązka, NGO.plPortal ngo.pl – Iza Dembicka, Alina Gałązka, NGO.pl
Portal ngo.pl – Iza Dembicka, Alina Gałązka, NGO.pl
 
Tinco Lycklama presentatie zuster Mattea
Tinco Lycklama presentatie zuster MatteaTinco Lycklama presentatie zuster Mattea
Tinco Lycklama presentatie zuster Mattea
 
Narrativas digitais: criar com o myebook
Narrativas digitais: criar com o myebookNarrativas digitais: criar com o myebook
Narrativas digitais: criar com o myebook
 
Version 0
Version 0Version 0
Version 0
 

Similar to Tizen 3.0's Window System Integration Layer of OpenGLES/EGL & Vulkan Driver

OpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI PlatformsOpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI Platforms
Prabindh Sundareson
 
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
The Linux Foundation
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011
Prabindh Sundareson
 
Mirage: ML kernels in the cloud (ML Workshop 2010)
Mirage: ML kernels in the cloud (ML Workshop 2010)Mirage: ML kernels in the cloud (ML Workshop 2010)
Mirage: ML kernels in the cloud (ML Workshop 2010)Anil Madhavapeddy
 
FPL'2014 - FlexTiles Workshop - 7 - FlexTiles Emulation platform
FPL'2014 - FlexTiles Workshop - 7 - FlexTiles Emulation platformFPL'2014 - FlexTiles Workshop - 7 - FlexTiles Emulation platform
FPL'2014 - FlexTiles Workshop - 7 - FlexTiles Emulation platform
FlexTiles Team
 
Unite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platformsUnite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platforms
ナム-Nam Nguyễn
 
Memory Management in TIZEN - Samsung SW Platform Team
Memory Management in TIZEN - Samsung SW Platform TeamMemory Management in TIZEN - Samsung SW Platform Team
Memory Management in TIZEN - Samsung SW Platform Team
Ryo Jin
 
Porting the Source Engine to Linux: Valve's Lessons Learned
Porting the Source Engine to Linux: Valve's Lessons LearnedPorting the Source Engine to Linux: Valve's Lessons Learned
Porting the Source Engine to Linux: Valve's Lessons Learned
basisspace
 
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
Intel® Software
 
Introduction to 2D/3D Graphics
Introduction to 2D/3D GraphicsIntroduction to 2D/3D Graphics
Introduction to 2D/3D Graphics
Prabindh Sundareson
 
clCaffe*: Unleashing the Power of Intel Graphics for Deep Learning Acceleration
clCaffe*: Unleashing the Power of Intel Graphics for Deep Learning AccelerationclCaffe*: Unleashing the Power of Intel Graphics for Deep Learning Acceleration
clCaffe*: Unleashing the Power of Intel Graphics for Deep Learning Acceleration
Intel® Software
 
OpenGL ES EGL Spec&APIs
OpenGL ES EGL Spec&APIsOpenGL ES EGL Spec&APIs
OpenGL ES EGL Spec&APIs
Jungsoo Nam
 
Mini Project final report on " LEAKY BUCKET ALGORITHM "
Mini Project final report on " LEAKY BUCKET ALGORITHM "Mini Project final report on " LEAKY BUCKET ALGORITHM "
Mini Project final report on " LEAKY BUCKET ALGORITHM "
Nikhil Jain
 
20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Jorisimec.archive
 
Challenges in GPU compilers
Challenges in GPU compilersChallenges in GPU compilers
Challenges in GPU compilers
AnastasiaStulova
 
FPL'2014 - FlexTiles Workshop - 5 - FlexTiles Simulation Platform
FPL'2014 - FlexTiles Workshop - 5 - FlexTiles Simulation PlatformFPL'2014 - FlexTiles Workshop - 5 - FlexTiles Simulation Platform
FPL'2014 - FlexTiles Workshop - 5 - FlexTiles Simulation Platform
FlexTiles Team
 
Track c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -eveTrack c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -evechiportal
 
Virtual platform
Virtual platformVirtual platform
Virtual platformsean chen
 
SNAP MACHINE LEARNING
SNAP MACHINE LEARNINGSNAP MACHINE LEARNING
SNAP MACHINE LEARNING
Ganesan Narayanasamy
 
SequenceL Auto-Parallelizing Toolset Intro slideshare
SequenceL Auto-Parallelizing Toolset Intro slideshareSequenceL Auto-Parallelizing Toolset Intro slideshare
SequenceL Auto-Parallelizing Toolset Intro slideshare
Doug Norton
 

Similar to Tizen 3.0's Window System Integration Layer of OpenGLES/EGL & Vulkan Driver (20)

OpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI PlatformsOpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI Platforms
 
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011
 
Mirage: ML kernels in the cloud (ML Workshop 2010)
Mirage: ML kernels in the cloud (ML Workshop 2010)Mirage: ML kernels in the cloud (ML Workshop 2010)
Mirage: ML kernels in the cloud (ML Workshop 2010)
 
FPL'2014 - FlexTiles Workshop - 7 - FlexTiles Emulation platform
FPL'2014 - FlexTiles Workshop - 7 - FlexTiles Emulation platformFPL'2014 - FlexTiles Workshop - 7 - FlexTiles Emulation platform
FPL'2014 - FlexTiles Workshop - 7 - FlexTiles Emulation platform
 
Unite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platformsUnite 2013 optimizing unity games for mobile platforms
Unite 2013 optimizing unity games for mobile platforms
 
Memory Management in TIZEN - Samsung SW Platform Team
Memory Management in TIZEN - Samsung SW Platform TeamMemory Management in TIZEN - Samsung SW Platform Team
Memory Management in TIZEN - Samsung SW Platform Team
 
Porting the Source Engine to Linux: Valve's Lessons Learned
Porting the Source Engine to Linux: Valve's Lessons LearnedPorting the Source Engine to Linux: Valve's Lessons Learned
Porting the Source Engine to Linux: Valve's Lessons Learned
 
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
 
Introduction to 2D/3D Graphics
Introduction to 2D/3D GraphicsIntroduction to 2D/3D Graphics
Introduction to 2D/3D Graphics
 
clCaffe*: Unleashing the Power of Intel Graphics for Deep Learning Acceleration
clCaffe*: Unleashing the Power of Intel Graphics for Deep Learning AccelerationclCaffe*: Unleashing the Power of Intel Graphics for Deep Learning Acceleration
clCaffe*: Unleashing the Power of Intel Graphics for Deep Learning Acceleration
 
OpenGL ES EGL Spec&APIs
OpenGL ES EGL Spec&APIsOpenGL ES EGL Spec&APIs
OpenGL ES EGL Spec&APIs
 
Mini Project final report on " LEAKY BUCKET ALGORITHM "
Mini Project final report on " LEAKY BUCKET ALGORITHM "Mini Project final report on " LEAKY BUCKET ALGORITHM "
Mini Project final report on " LEAKY BUCKET ALGORITHM "
 
20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris
 
Challenges in GPU compilers
Challenges in GPU compilersChallenges in GPU compilers
Challenges in GPU compilers
 
FPL'2014 - FlexTiles Workshop - 5 - FlexTiles Simulation Platform
FPL'2014 - FlexTiles Workshop - 5 - FlexTiles Simulation PlatformFPL'2014 - FlexTiles Workshop - 5 - FlexTiles Simulation Platform
FPL'2014 - FlexTiles Workshop - 5 - FlexTiles Simulation Platform
 
Track c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -eveTrack c-High speed transaction-based hw-sw coverification -eve
Track c-High speed transaction-based hw-sw coverification -eve
 
Virtual platform
Virtual platformVirtual platform
Virtual platform
 
SNAP MACHINE LEARNING
SNAP MACHINE LEARNINGSNAP MACHINE LEARNING
SNAP MACHINE LEARNING
 
SequenceL Auto-Parallelizing Toolset Intro slideshare
SequenceL Auto-Parallelizing Toolset Intro slideshareSequenceL Auto-Parallelizing Toolset Intro slideshare
SequenceL Auto-Parallelizing Toolset Intro slideshare
 

More from Ryo Jin

Samsung Z4 User Manual
Samsung Z4 User ManualSamsung Z4 User Manual
Samsung Z4 User Manual
Ryo Jin
 
Samsung ARTIK 050 (ARTIK ZERO) Modules Data Sheet
Samsung ARTIK 050 (ARTIK ZERO) Modules Data SheetSamsung ARTIK 050 (ARTIK ZERO) Modules Data Sheet
Samsung ARTIK 050 (ARTIK ZERO) Modules Data Sheet
Ryo Jin
 
Introduction to Watch Face Development with Tizen Studio
Introduction to Watch Face Development with Tizen StudioIntroduction to Watch Face Development with Tizen Studio
Introduction to Watch Face Development with Tizen Studio
Ryo Jin
 
Cara Menggunakan Smartphone Tizen
Cara Menggunakan Smartphone TizenCara Menggunakan Smartphone Tizen
Cara Menggunakan Smartphone Tizen
Ryo Jin
 
Samsung Indonesia: Tizen Store
Samsung Indonesia: Tizen StoreSamsung Indonesia: Tizen Store
Samsung Indonesia: Tizen Store
Ryo Jin
 
Samsung Indonesia: Tizen Wearables
Samsung Indonesia: Tizen WearablesSamsung Indonesia: Tizen Wearables
Samsung Indonesia: Tizen Wearables
Ryo Jin
 
Samsung Indonesia: Tizen Web Apps
Samsung Indonesia: Tizen Web AppsSamsung Indonesia: Tizen Web Apps
Samsung Indonesia: Tizen Web Apps
Ryo Jin
 
Samsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native AppSamsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native App
Ryo Jin
 
Samsung Indonesia: Tizen Platform Overview and IoT
Samsung Indonesia: Tizen Platform Overview and IoTSamsung Indonesia: Tizen Platform Overview and IoT
Samsung Indonesia: Tizen Platform Overview and IoT
Ryo Jin
 
Russian Tizen Project
Russian Tizen ProjectRussian Tizen Project
Russian Tizen Project
Ryo Jin
 
Samsung SM-R360 Tizen User Manual
Samsung SM-R360 Tizen User ManualSamsung SM-R360 Tizen User Manual
Samsung SM-R360 Tizen User Manual
Ryo Jin
 
Tizen Micro Profile for IoT device
Tizen Micro Profile for IoT deviceTizen Micro Profile for IoT device
Tizen Micro Profile for IoT device
Ryo Jin
 
Panduan Dasar Pemrograman Tizen
Panduan Dasar Pemrograman TizenPanduan Dasar Pemrograman Tizen
Panduan Dasar Pemrograman Tizen
Ryo Jin
 
The Story of Enlightenment, EFL, Tizen and Wayland
The Story of Enlightenment, EFL, Tizen and WaylandThe Story of Enlightenment, EFL, Tizen and Wayland
The Story of Enlightenment, EFL, Tizen and Wayland
Ryo Jin
 
Tizen PASS
Tizen PASSTizen PASS
Tizen PASS
Ryo Jin
 
Tizen PASS
Tizen PASSTizen PASS
Tizen PASS
Ryo Jin
 
Samsung Gear UI Design Guidelines
Samsung Gear UI Design GuidelinesSamsung Gear UI Design Guidelines
Samsung Gear UI Design Guidelines
Ryo Jin
 
Attack surface analysis of Tizen devices
Attack surface analysis of Tizen devicesAttack surface analysis of Tizen devices
Attack surface analysis of Tizen devices
Ryo Jin
 
Samsung DeepSort
Samsung DeepSortSamsung DeepSort
Samsung DeepSort
Ryo Jin
 
Samsung Gear Circle SM-R130 User Manual
Samsung Gear Circle SM-R130 User ManualSamsung Gear Circle SM-R130 User Manual
Samsung Gear Circle SM-R130 User Manual
Ryo Jin
 

More from Ryo Jin (20)

Samsung Z4 User Manual
Samsung Z4 User ManualSamsung Z4 User Manual
Samsung Z4 User Manual
 
Samsung ARTIK 050 (ARTIK ZERO) Modules Data Sheet
Samsung ARTIK 050 (ARTIK ZERO) Modules Data SheetSamsung ARTIK 050 (ARTIK ZERO) Modules Data Sheet
Samsung ARTIK 050 (ARTIK ZERO) Modules Data Sheet
 
Introduction to Watch Face Development with Tizen Studio
Introduction to Watch Face Development with Tizen StudioIntroduction to Watch Face Development with Tizen Studio
Introduction to Watch Face Development with Tizen Studio
 
Cara Menggunakan Smartphone Tizen
Cara Menggunakan Smartphone TizenCara Menggunakan Smartphone Tizen
Cara Menggunakan Smartphone Tizen
 
Samsung Indonesia: Tizen Store
Samsung Indonesia: Tizen StoreSamsung Indonesia: Tizen Store
Samsung Indonesia: Tizen Store
 
Samsung Indonesia: Tizen Wearables
Samsung Indonesia: Tizen WearablesSamsung Indonesia: Tizen Wearables
Samsung Indonesia: Tizen Wearables
 
Samsung Indonesia: Tizen Web Apps
Samsung Indonesia: Tizen Web AppsSamsung Indonesia: Tizen Web Apps
Samsung Indonesia: Tizen Web Apps
 
Samsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native AppSamsung Indonesia: Tizen Native App
Samsung Indonesia: Tizen Native App
 
Samsung Indonesia: Tizen Platform Overview and IoT
Samsung Indonesia: Tizen Platform Overview and IoTSamsung Indonesia: Tizen Platform Overview and IoT
Samsung Indonesia: Tizen Platform Overview and IoT
 
Russian Tizen Project
Russian Tizen ProjectRussian Tizen Project
Russian Tizen Project
 
Samsung SM-R360 Tizen User Manual
Samsung SM-R360 Tizen User ManualSamsung SM-R360 Tizen User Manual
Samsung SM-R360 Tizen User Manual
 
Tizen Micro Profile for IoT device
Tizen Micro Profile for IoT deviceTizen Micro Profile for IoT device
Tizen Micro Profile for IoT device
 
Panduan Dasar Pemrograman Tizen
Panduan Dasar Pemrograman TizenPanduan Dasar Pemrograman Tizen
Panduan Dasar Pemrograman Tizen
 
The Story of Enlightenment, EFL, Tizen and Wayland
The Story of Enlightenment, EFL, Tizen and WaylandThe Story of Enlightenment, EFL, Tizen and Wayland
The Story of Enlightenment, EFL, Tizen and Wayland
 
Tizen PASS
Tizen PASSTizen PASS
Tizen PASS
 
Tizen PASS
Tizen PASSTizen PASS
Tizen PASS
 
Samsung Gear UI Design Guidelines
Samsung Gear UI Design GuidelinesSamsung Gear UI Design Guidelines
Samsung Gear UI Design Guidelines
 
Attack surface analysis of Tizen devices
Attack surface analysis of Tizen devicesAttack surface analysis of Tizen devices
Attack surface analysis of Tizen devices
 
Samsung DeepSort
Samsung DeepSortSamsung DeepSort
Samsung DeepSort
 
Samsung Gear Circle SM-R130 User Manual
Samsung Gear Circle SM-R130 User ManualSamsung Gear Circle SM-R130 User Manual
Samsung Gear Circle SM-R130 User Manual
 

Recently uploaded

Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
Peter Caitens
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
Sharepoint Designs
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
KrzysztofKkol1
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
ayushiqss
 

Recently uploaded (20)

Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
 

Tizen 3.0's Window System Integration Layer of OpenGLES/EGL & Vulkan Driver

  • 1. Tizen 3.0 's Window System Integration Layer of OpenGLES/EGL & Vulkan Driver Mun Gwan-gyeong Software R&D Center Samsung Electronics (libtpl-egl, vulkan-wsi-tizen)
  • 2. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 2 / 33 Agenda Tizen 3.0 Window System Architecture Tizen 3.0 Window System Integration Layer of OpenGLES/EGL libtpl-egl (Tizen Porting Layer for EGL) Tizen 3.0 Vulkan WSI for Tizen vulkan-wsi-tizen
  • 3. Tizen 3.0 Window System Architecture
  • 4. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 4 / 33 Tizen 3.0 Window System Architecture Uses Application Backend Module Top-level Module Kernel layer – display sub system, input sub system, memory sub system Display Server TBM (Buffer manager) TDM (Display manager) Input manager libtpl-egl GL EvasGL CoreGL TDM Backend TBM Backend GPU Vender DDK 3D UI Toolkit Hardware independent Hardware dependent Tizen API Native App Vulkan Khronos Loader tizenvulkan-wsi-tizen ( Forked from E20 )
  • 5. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 5 / 33 Components description TPL-EGL is an abstraction layer for surface and buffer management on Tizen platform aimed to implement the EGL porting layer of OpenGLES driver over various display protocols. Vulkan-WSI-Tizen wrapes vendor's vulkan ICDs and provides the WSI(Window-System Interface) for the tizen. Tizen Buffer Manager (TBM) provides the abstraction interface for the graphic buffer manager in Tizen. Tizen Display Manager (TDM) provides the abstraction interface for the display server, such a wayland server, to allow the direct access to graphics hardware in a safe and efficient manner as a display HAL.
  • 6. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 6 / 33 Components description (cont.) EvasGL is a kind of Evas Object image for opengl and it is a GLES Wrapper. CoreGL is an injection layer of OpenGL ES that provides the following capabilities: Support for driver-independent optimization (FastPath) EGL/OpenGL ES debugging Performance logging
  • 7. Tizen Porting Layer for EGL (libtpl-egl)
  • 8. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 8 / 33 Tizen OpenGL ES and EGL Architecture Uses Module System boundary CoreGL Core GPU Vendor GL / EGL Driver GPU GLES Application GLESV1_CM (CoreGL Frontend) GLESV2 (CoreGL Frontend) EGL (CoreGL Frontend) libtpl-egl Frontend TBM backend wayland-egl backend GBM backend CoreGL libtpl-egl
  • 9. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 9 / 33 Tizen Porting Layer for EGL Tizen Porting Layer(TPL) Architecture TPL provides implementation of EGL platform functions on Tizen platform TPL? Background Various window system protocols in Tizen – Wayland , gbm , tbm , X11 (Tizen 3.0 Alpha) Needs to separating common layer (frontend, duplicated code) and backend for maintaining Why TPL? TPL-EGL APIs prevents burdens of EGL porting on various window system protocols. Vendor GL Driver’s Window System Porting Layer functions treat only TPL-EGL APs. If libtpl-egl has improved performance, then Vendor driver can get it without modification of code. TPL Frontend Interface tpl_wayland tpl_gbm TPL Backend Interface EGL GPU GL Driver’s Window System Porting Layer Functions (Call TPL Interface) tpl_tbm
  • 10. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 10 / 33 TPL Frontend Interface Tizen Porting Layer Core Object TPL Object Base class for all TPL objects TPL Display Encapsulate native display object (wl_display, gbm_device, tbm_bufmgr ) TPL Surface Encapsulate native drawable object (wl_surface, gbm_surface, tbm_surface_queue_h )
  • 11. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 11 / 33 Tizen Porting Layer for EGL TPL Provides TPL objects which correspond to EGL objects TPL Display TPL SurfaceTPL Surface (TBM_Surface_Queue) TBM_Surface EGLDisplay EGLSurface Driver’s egl buffer Driver’s internal memory handle Driver’s internal memory handle Native Display Native Drawable GL Driver’s Object TPL Object, TBM Surface Window System / DRM Object DMABUF
  • 12. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 12 / 33 GLES Drawing API Flow EntryPoints Functions (egl entrypoints) TPL(Tizen Porting Layer) (tpl.c) eglCreateContext eglInitialize eglChooseConfig eglCreateWindowSurface GL calls (ex. glClear) eglSwapBuffer eglGetDisplay … tpl_surface_dequeue_buffer tpl_surface_enqueue_buffer tpl_surface_create TPL display creation & initialization Create TPL surface for the EGLSurface Get the buffer of the current frame for render target Called from GL Driver’s EGL Porting Layer when the rendering is done. tpl_display_create GL Driver’s Window system porting Functions Create Driver’s display Create Driver’s window surface Create Driver’s window surface Display window buffer … Get window target buffer
  • 13. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 13 / 33 Simple example of the Tizen Porting Layer tpl_display_t *dpy = tpl_display_create(...); tpl_surface_t *sfc = tpl_surface_create(dpy, ...); tbm_surface_h buf; while (1) { buf = tpl_surface_dequeue_buffer(sfc); // get buffer /* Draw something */ tpl_surface_enqueue_buffer(sfc, buf); // post buffer } [pseudo code] Using libtpl-egl api In the GPU vendor driver, the "Draw something" part is what the GPU frame builder does. TPL-EGL exposes the native platform buffer as tbm_surface. If tbm backend uses drm_backend , GL Driver can get dma_buf from tbm_surface's buffer object.
  • 14. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 14 / 33 TPL Frontend API ( tpl_object ) TPL Object Base class for all TPL objects Provide common functionalities of all TPL objects API Description tpl_object_reference Increase reference count of the given TPL object tpl_object_unreference Decrease reference count and destroy it if it becomes 0 tpl_object_get_reference Get reference count of the given TPL object tpl_object_get_type Get type of the object (display or surface) tpl_object_set_user_data Set user data and free callback for destruction tpl_object_get_user_data Get user data
  • 15. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 15 / 33 TPL Frontend API ( tpl_display ) TPL Display Encapsulate native display object (wl_display, gbm_device, tbm_bufmgr) Any other objects are created from TPL Display , they are inherited backend type from TPL Display. API Description tpl_display_create Creates the TPL-EGL display object for the given native display tpl_display_get Retrieve the TPL-EGL display for the given native display handle tpl_display_get_native_handle Get native handle of the given display tpl_display_query_config Query pixel format information tpl_display_get_native_window_info Query information on the given native window. tpl_display_get_native_pixmap_info Query information on the given native pixmap. tpl_display_get_buffer_from_native_pixmap Get native buffer from the given native pixmap.
  • 16. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 16 / 33 TPL Frontend API ( tpl_surface ) TPL Surface Encapsulate native drawable object (wl_surface, gbm_surface, tbm_surface_queue_h) Main Features Get the buffer for a surface Post the buffer to a surface of screen API Description tpl_surface_create Create a TPL-EGL surface for the given native drawable tpl_surface_get_display Get TPL-EGL display of the given surface tpl_surface_get_native_handle Get native handle of the given surface tpl_surface_get_type Get type of the given surface (Window or Pixmap) tpl_surface_get_size Get size of the given surface tpl_surface_dequeue_buffer Get buffer (as TBM_SURFACE) of the current frame for the given surface tpl_surface_validate Check current buffer is valid tpl_surface_set_post_interval Set post interval tpl_surface_get_post_interval Get post interval tpl_surface_enqueue_buffer Post to screen
  • 17. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 17 / 33 Wayland Server / Client on libtpl-egl Uses Module System boundary Enlightenment EVAS GL TBM / DRM TBM / GBM EGL libtpl-egl GPU Vendor GL Driver libwayland-tbm Wayland-EGL Client EGL libtpl-egl Wayland ClientWayland Display Server libwayland-egl
  • 18. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 18 / 33 Buffer Flow ( Wayland Server ↔ GLES/EGL Driver ) Buffer Flow Direction Module System boundary Presenter Wayland Display Server Tizen Porting Layer for EGL Renderer GLES/EGL Driver libtpl-egl (1) Dequeue (2) Enqueue (3) Acquire (4) Release tpl_surface_dequeue_buffer() tpl_surface_enqueue_buffer() tbm_surface_queue_acquire() tbm_surface_queue_release() Buffer Flow Between the Wayland Server and GLES/EGL Driver
  • 19. Vulkan WSI for Tizen (vulkan-wsi-tizen)
  • 20. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 20 / 33 Tizen Vulkan Architecture Uses Module System boundary Khronos Vulkan Loader libtpl-eglVulkan WSI Tizen Vendor’s Vulkan ICD GPU Vulkan Application
  • 21. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 21 / 33 Vulkan WSI for Tizen Objectives Applications should be able to use khronos vulkan loader Do not modify khronos vulkan loader Separate WSI binary across multiple vendor ICDs Don’t do any platform specific things, use TPL instead Architecture WSI wraps the ICD and act like a complete ICD Vulkan Application Khronos Vulkan Loader Vulkan WSI Tizen Vendor ICD TPL/TBM Tizen Window System Tizen WSI/ICD Interface
  • 22. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 22 / 33 Vulkan Loader ( Khronos Vulkan Loader ) Loader exposes vulkan symbols to applications (libvulkan.so) Loader opens an ICD shared object file and dispatches ICD functions via vk_icdGetInstanceProcAddr() This is recommended way according to the khronos loader document Application calls a loader function, then loader function finally calls the dispatched ICD function Vulkan is layered architecture libvulkan.so (loader) foo() bar() … icd.so (vendor’s) foo() bar() … Application
  • 23. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 23 / 33 Wrapping ICD ( vulkan-wsi-tizen ) Vulkan WSI Tizen acts like a complete ICD Exposes vk_icdGetInstanceProcAddr() which dispatches all required vulkan functions Some functions are implemented in vulkan-wsi-tizen, while others come from vendor ICD API Hooks Vulkan WSI Tizen hooks desired vulkan functions Hooked vulkan-wsi-tizen functions are dispatched instead of ICD functions vkGetInstanceProcAddr(), vkGetDeviceProcAddr() are hooked by default If not, an (Vendor’s) ICD function might be dispatched even though it is hooked by WSI libvulkan.so (loader) foo() … foo() … icd.so (vendor’s) foo() … WSI might call icd.foo inside of wsi.so bar()bar() baz() baz() vulkan-wsi-tizen.so
  • 24. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 24 / 33 Extension Merge ( vulkan-wsi-tizen ) Extension Merge vulkan-wsi-tizen merges extensions from Vendor ICD and vulkan-wsi- tizen’s own extension vulkan-wsi-tizen hooks extension enumeration functions vkEnumerateInstanceExtensionProperties() in vulkan-wsi-tizen Vendor ICD instance extension + VK_KHR_surface + VK_KHR_wayland_surface vkEnumerateDeviceExtensionProperties() in vulkan-wsi-tizen Vendor ICD device extension + VK_KHR_swapchain libvulkan.so (loader) foo() … foo() … icd.so (vendor’s) foo() … bar()bar() baz() baz() Vulkan-wsi-tizen merges extensions vulkan-wsi-tizen.so
  • 25. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 25 / 33 WSI Surface Functions (Khronos Vulkan Loader) WSI Surface Functions Surface functions are implemented in the khronos loader Surface object is passed to the vulkan-wsi-tizen when other WSI function is called ex) vkCreateSwapchainKHR Data structure for the loader surface object can be accessed via vk_icd.h (Khronos Vulkan Loader’s header file) libvulkan.so (loader) foo() … foo() … icd.so (vendor’s) foo() … bar()bar() baz() baz() Ex) WSI Swapchain Functions vulkan-wsi-tizen.so
  • 26. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 26 / 33 WSI Functions ( vulkan-wsi-tizen ) WSI functions except surface functions are implemented and hooked WSI function categories Surface capability query functions Formats, presentation support, … ex) vkGetPhysicalDeviceSurfaceCapabilitiesKHR(), vkGetPhysicalDeviceSurfaceFormatsKHR() … Swapchain functions ex) vkCreateSwapchainKHR(), vkGetSwapchainImagesKHR(), vkAcquireNextImageKHR(), vkQueuePresentKHR() … Display functions Required when presenting directly to a display device libvulkan.so (loader) foo() … foo() … icd.so (vendor’s) foo() … bar()bar() baz() baz() Ex) WSI Swapchain Functions vulkan-wsi-tizen.so
  • 27. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 27 / 33 Swapchain related API ( vulkan-wsi-tizen ) TPL Surface TBM Surface TBM Surface TBM Surface VkSwapchainKHR VkImage VkImage VkImage TBM Surface Queue Swapchain Manages image (buffer) queue vkAcquireNextImageKHR() Acquire a next image from the presentation engine vkQueuePresentKHR() Present the given image to the presentation engine Implemented using TPL surface vkAcquireNextImageKHR() tpl_surface_dequeue_buffer() Find index of the dequeued buffer and return vkQueuePresentKHR() tpl_surface_enqueue_buffer()
  • 28. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 28 / 33 Vulkan WSI Tizen ↔ Vendor’s ICD interface Vulkan WSI Tizen ↔ Vendor’s ICD interface Vendor’s ICD should provide functions required by the Vulkan WSI Tizen vk_tizen.h Defines functions ICD should provides Vulkan WSI Tizen should be able to dispatch those functions via Vendor ICD’s vk_icdGetInstanceProcAddr() vkCreateImageFromNativeBufferTIZEN() It creates a VkImage from a tizen native buffer (tbm_surface_h) It is called by vkCreateSwapchainKHR() of vulkan-wsi-tizen Arguments [in] VkDevice – VkDevice is passed by vkCreateSwapchainKHR() [in] tbm_surface_h – Native tizen buffer [in] const VkImageCreateInfo * – Properties of the native tizen buffer (dimension, format, …) [in] const VkAllocationCallbacks * – Allocation callbacks used for host memory allocation [out] VkImage * – Vendor ICD should create vkImage from tbm_surface. – vkAcquireNextImageKHR() uses this VkImage.
  • 29. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 29 / 33 Vulkan WSI Tizen ↔ Vendor’s ICD (cont.) vkQueueSignalReleaseImageTIZEN() When the vendor’s vulkan driver ends up the handling of vkImage and it is ready to present (all waiting semaphores are triggered), Vendor ICD notifies to vulkan-wsi-tizen (NativeFenceFd is created by Vendor Driver. ) It is called by vkQueuePresentKHR() of vulkan-wsi-tizen Arguments [in] VkQueue – VKQueue is passed by vkQueuePresentKHR() [in] uint32_t – waitSemaphoreCount is passed by VkPresentInfoKHR of vkQueuePresentKHR() [in] const VkSemaphore * – WaitSemaphore list is passed by VkPresentInfoKHR of vkQueuePresentKHR() [in] VkImage – VkImage index is passed by VkPresentInfoKHR of vkQueuePresentKHR() [out] int *NativeFenceFd – Vendor ICD should create NativeFenceFd from WaitSemaphore list. – vulkan-wsi-tizen waits NativeFeceFd by tbm_sync_fence_wait().
  • 30. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 30 / 33 Vulkan WSI Tizen ↔ Vendor’s ICD (cont.) vkAcquireImageTIZEN() It notifies the acquired Image which is ready to use to the Vendor’s Vulkan Driver. It is called by vkAcquireNextImageKHR() of vulkan-wsi-tizen Arguments [in] VkDevice – VkDevice is passed by vkAcquireNextImageKHR() [in] VkImage – VkImage index is passed by vkAcquireNextImageKHR() [in] int nativeFenceFD – Vulkan driver should wait this nativeFenceFD until Display Server triggers it. ( Display Server uses tbm_sync_timeline_inc() for triggering) – nativeFenceFD is created by tbm_sync_fence_create() [in] VkSemaphore – Vendor ICD connects VkSemaphore to nativeFenceFD – When nativeFenceFD is triggered, Vendor ICD signals VkSemaphore [in] VkFence – Vendor ICD connects VkFence to nativeFenceFD – When nativeFenceFD is triggered, Vendor ICD signals VkFence
  • 31. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 31 / 33 Supported WSI Spec (Current State) Surface & Swapchain Functions Function Status vkCreateWaylandSurfaceKHR Provided by khronos loader vkDestroySurfaceKHR Provided by khronos loader vkGetPhysicalDeviceWaylandPresentationSupportKHR Done vkGetPhysicalDeviceSurfaceSupportKHR Done vkGetPhysicalDeviceSurfaceCapabilitiesKHR Done vkGetPhysicalDeviceSurfaceFormatsKHR Done vkGetPhysicalDeviceSurfacePresentModesKHR Done vkCreateSwapchainKHR Done vkCreateSharedSwapchainKHR Not Implemented Yet vkDestroySwapchainKHR Done vkGetSwapchainImagesKHR Done vkAcquireNextImageKHR Done vkQueuePresentKHR Done
  • 32. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 32 / 33 Supported WSI Spec Present Modes Display Functions Modes Status VK_PRESENT_MODE_IMMEDIATE_KHR Not Implemented Yet VK_PRESENT_MODE_MAILBOX_KHR Done VK_PRESENT_MODE_FIFO_KHR Not Implemented Yet VK_PRESENT_MODE_FIFO_RELAXED_KHR Not Implemented Yet Function Status vkCreateDisplaySurfaceKHR Provided by khronos loader vkGetPhysicalDeviceDisplayPropertiesKHR Not Implemented Yet vkGetPhysicalDeviceDisplayPlanePropertiesKHR Not Implemented Yet vkGetDisplayPlaneSupportedDisplaysKHR Not Implemented Yet vkGetDisplayModePropertiesKHR Not Implemented Yet vkCreateDisplayModeKHR Not Implemented Yet vkGetDisplayPlaneCapabilitiesKHR Not Implemented Yet
  • 33. Copyright © 2016 Samsung Electronics, Co., Ltd. All rights reserved. 33 / 33 References Project Git repogitory (https://review.tizen.org/gerrit/#/admin/projects/ ) libtpl-egl Reference Driver The Emulator YAGL (OpenGLES / EGL driver for the emulator) is implemented by libtpl-egl. The following commit explains how to port the driver with libtpl-egl from the traditional drm-based driver. Porting YAGL to the Tizen platform https://review.tizen.org/gerrit/#/c/67921/ Project Repository Description libtpl-egl platform/core/uifw/libtpl-egl Tizen Porting Layer for EGL vulkan-wsi-tizen platform/core/uifw/vulkan-wsi-tizen vulkan wsi tizen icd, it wrapps vendor icd and provides wsi for tizen libtbm platform/core/uifw/libtbm The library for the Tizen Buffer Manager coregl platform/core/uifw/coregl An injection layer of OpenGL ES / EGL wayland-tbm platform/core/uifw/wayland-tbm Wayland tbm is a protocol for graphics memor y management for Tizen emulator-yagl platform/adaptation/emulator/emulator-yagl OpenGL ES / EGL driver for the emulator tpl-novice platform/core/uifw/ws-testcase Novice test framework for TPL
  • 34. Copyright © 2012 Samsung Electronics, Co., Ltd. All rights reserved. 34