X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fgraphics%2Fgles%2Fegl-implementation.h;h=03c35f45bdc86cd78f09251d9ea4c7c302f42361;hb=6206c977d8ec33445d0fa948886b214bee02214d;hp=eeb33e3fa4cd1a4468d0801e6ce6656bbf72c1fc;hpb=2c353f39ef0992b1eef56a4993037b1fe213159b;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/graphics/gles/egl-implementation.h b/dali/internal/graphics/gles/egl-implementation.h index eeb33e3..03c35f4 100644 --- a/dali/internal/graphics/gles/egl-implementation.h +++ b/dali/internal/graphics/gles/egl-implementation.h @@ -2,7 +2,7 @@ #define DALI_INTERNAL_EGL_IMPLEMENTATION_H /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ #include #include #include +#include #include // INTERNAL INCLUDES @@ -69,25 +70,31 @@ public: bool InitializeGles( EGLNativeDisplayType display, bool isOwnSurface = true ); /** - * Create the OpenGL context. + * Create the OpenGL context for the shared resource. * @return true if successful */ virtual bool CreateContext(); /** + * Create the OpenGL context for the window. + * @return true if successful + */ + bool CreateWindowContext( EGLContext& mEglContext ); + + /** * Destroy the OpenGL context. */ - void DestroyContext(); + void DestroyContext( EGLContext& eglContext ); /** * Destroy the OpenGL surface. */ - void DestroySurface(); + void DestroySurface( EGLSurface& eglSurface ); /** * Make the OpenGL context current */ - virtual void MakeContextCurrent(); + virtual void MakeContextCurrent( EGLSurface eglSurface, EGLContext eglContext ); /** * clear the OpenGL context @@ -116,12 +123,12 @@ public: /** * Performs an OpenGL swap buffers command */ - virtual void SwapBuffers(); + virtual void SwapBuffers( EGLSurface& eglSurface ); /** * Performs an OpenGL copy buffers command */ - virtual void CopyBuffers(); + virtual void CopyBuffers( EGLSurface& eglSurface ); /** * Performs an EGL wait GL command @@ -132,16 +139,17 @@ public: * Choose config of egl * @param isWindowType whether the config for window or pixmap * @param colorDepth Bit per pixel value (ex. 32 or 24) + * @return true if the eglChooseConfig is succeed. */ - void ChooseConfig( bool isWindowType, ColorDepth depth ); + bool ChooseConfig( bool isWindowType, ColorDepth depth ); /** * Create an OpenGL surface using a window * @param window The window to create the surface on * @param colorDepth Bit per pixel value (ex. 32 or 24) - * @return true on success, false on failure + * @return Handle to an on-screen EGL window surface (the requester has an ownership of this egl surface) */ - void CreateSurfaceWindow( EGLNativeWindowType window, ColorDepth depth ); + EGLSurface CreateSurfaceWindow( EGLNativeWindowType window, ColorDepth depth ); /** * Create the OpenGL surface using a pixmap @@ -157,7 +165,7 @@ public: * @return true if the context was lost due to a change in display * between old surface and new surface */ - bool ReplaceSurfaceWindow( EGLNativeWindowType window ); + bool ReplaceSurfaceWindow( EGLNativeWindowType window, EGLSurface& eglSurface, EGLContext& eglContext ); /** * Replaces the render surface @@ -169,6 +177,11 @@ public: bool ReplaceSurfacePixmap( EGLNativePixmapType pixmap, EGLSurface& eglSurface ); /** + * Sets gles version + */ + void SetGlesVersion( const int32_t glesVersion ); + + /** * returns the display with which this object was initialized * @return the EGL Display. */ @@ -180,6 +193,18 @@ public: */ EGLContext GetContext() const; + /** + * Returns the gles version + * @return the gles version + */ + int32_t GetGlesVersion() const; + + /** + * Returns whether the surfaceless context is supported + * @return true if the surfaceless context is supported + */ + bool IsSurfacelessContextSupported() const; + private: Vector mContextAttribs; @@ -192,19 +217,28 @@ private: EGLDisplay mEglDisplay; EGLConfig mEglConfig; - EGLContext mEglContext; + EGLContext mEglContext; ///< The resource context holding assets such as textures to be shared + + typedef std::vector EglWindowContextContainer; + EglWindowContextContainer mEglWindowContexts; ///< The EGL context for the window + EGLSurface mCurrentEglSurface; + EGLContext mCurrentEglContext; + + typedef std::vector EglWindowSurfaceContainer; + EglWindowSurfaceContainer mEglWindowSurfaces; ///< The EGL surface for the window - int mMultiSamplingLevel; + int32_t mMultiSamplingLevel; + int32_t mGlesVersion; ColorDepth mColorDepth; bool mGlesInitialized; bool mIsOwnSurface; - bool mContextCurrent; bool mIsWindow; bool mDepthBufferRequired; bool mStencilBufferRequired; + bool mIsSurfacelessContextSupported; }; } // namespace Adaptor