Hi all, I am sorry that I didn't have enough discussion about why new window system code is needed for Tizen on mesa.
This is a brief architecture of Tizen Window System. +--------------------------------------------------------------------------------------------------+ | [Tizen Window System Architecture] | | | | | | | | +-----------------------+ +------------+ +------------+ | | | Enlightenment Display | | | | 3D UI | | | | Server for Tizen +------------------>| EvasGL | | Toolkit | | | | | | | | | | | | | +-----+------+ +-----+------+ | | +--+-----------------+--+ | | | | | | v | | | | | +------------+ | | | | | | GPU Vendor | | | | | | | GL/EGL |<-----------+ | | | | | Driver | | | | | +-----+------+ | | | | | | | v v v | | +-----------------------+ +----------------------+ +------------+ | | | TDM | | TBM | | | | | |(Tizen Display Manager)+--->|(Tizen Buffer Manager)|<-----| TPL-EGL | | | | | | | | | | | +-----------------------+ +----------------------+ +------------+ | | | +--------------------------------------------------------------------------------------------------+ < display server / wayland-egl client > +-----------------------------+ +-------------------------------+ | | | | | +-----------------------+ | | +-----------------------+ | | | Enlightenment Display +-------+ | | wayland-egl client | | | | Server for Tizen | | | | +--+-------------+------+ | | +----------+------------+ | | | | | | | | | | | | | | | v | | | | | | | +-----------------------+ | | | | | | | | EVAS GL TBM | | | | | | | | +----+-------------+----+ | | | | | | | | | | | | | | | | | v | | | v v | | | +---------+ | | +--------------+ | +-----+ +-------------+ | | | | EGL +-------|--->| GPU Vendor |<---------+ EGL | | wayland-egl | | | | +----+----+ | | | GL Driver | | +--+--+ +---+---------+ | | | | | | +--------------+ | | | ^ | | v v | | | v v | | | +---------+ +---------+ | | +--------------+ | +--------------------+--+ | | | TBM |<--+ TPL-EGL +-------|--->| wayland-tbm |<---------+ TPL-EGL | | | +---------+ +---------+ | | +--------------+ | +-----------------------+ | | | | ^ | | | | | | | | +-----------------------------+ +------------+ +-------------------------------+ * TBM: - Tizen Buffer Manager (TBM) provides the abstraction interface for the graphic buffer manager in Tizen. [1] - Why does it needed? Because different vendors provides different user-level interface for the memory manager, Tizen made TBM for supporting a common interface. refer [3], page 6-8. * TDM: - TDM stands for Tizen Display Manager. Tizen Display Manager (TDM) provides the display device abstraction interface for the display server to allow the direct access to graphics hardware in a safe and efficient manner as a display HAL. The primary goal of TDM is the unification of display hardware management procedures in user space. [2] - Why does it needed? Because different vendors provides different user-level interface for the display devices, Tizen made TDM for supporting a common interface. refer [3], page 15-16. * wayland-tbm: - wayland-tbm is a protocol for graphics memory management for Tizen. The wayland-tbm provides the library for sharing the tbm_surfaces between the client and the server. 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. - wayland-tbm suppots two major features 1) sharing the tbm_surfaces between the client and the server * it is similar with wayland-drm but it shares tbm_surface as a base buffer. 2) obtaining the scanout buffer and assigning it to the server or the client. * Because some vendor provide limited scanout buffers, therefore tizen added a protocol of releasing/assigning scanoutbuffers. * non-compisite mode / direct rendering: obtaining scanout buffer from display-server and assigning it to the wayland-egl client. * composite mode: obtaining the scanout buffer from the wayland-egl client and assigning it to the display-server. * TPL-EGL: - 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. TPL-EGL treats tbm_surface as a base buffer object. And it uses wayland-tbm protocol instead of wayland-drm for sharing buffers on wayland-egl. It supports tbm, wayland-egl, gbm window system. And tizen's enligthenment display server create egl_display from tbm instead of gbm. [4],[5] Compared to mesa, Tizen Platform depends on TBM, TDM, wayland-tbm protocol. Tizen uses TBM for treating a native buffer. And Display manager uses tbm_surface as a base buffer for displying. And for sharing native buffers between display server and wayland-egl client tizen uses wayland-tbm protocol also wayland-tbm protocol/library provides a manners of managing limited scanout buffers between the client and the server. Therefore to support Tizen to mesa egl, I am suggesting to add new window system code for Tizen. Thanks for reading this far, comments welcome. Thanks, Gwan-gyeong. [1] https://wiki.tizen.org/TBM [2] https://wiki.tizen.org/TDM [3] Tizen Buffer HAL and Tizen Display HAL https://www.tizenconference.com/frontend/site/show-details?eventId=2612&object=session&id=21124 https://swoogo.s3.amazonaws.com/uploads/46837-5926fd6b24dfd.pdf [4] https://www.x.org/wiki/Events/XDC2016/Program/XDC2016_Tizen_Window_System_EGL_Vulkan.pdf [5] https://wiki.tizen.org/3.0_Porting_Guide/Graphics_and_UI 2017-10-28 2:22 GMT+09:00 Kenneth Graunke <kenn...@whitecape.org>: > On Thursday, October 26, 2017 11:16:06 AM PDT Eric Anholt wrote: >> Gwan-gyeong Mun <elong...@gmail.com> writes: >> >> > Hi, >> > >> > These Patch v5 series modified with new helper function series [1]. >> > >> > These series only have mesa for tizen feature. >> > >> > [1] https://patchwork.freedesktop.org/series/32577/ >> >> Rather than have another giant pile of window system code in the tree, >> I'd like to see a serious discussion of why you aren't using the >> existing wayland and gbm platforms and what you would need from them. >> The TPL stuff looks like abstraction for the sake of abstraction, to me. > > I agree with Eric. I've never understood why this is necessary. -- Gwan-gyeong Mun _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev