#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.
* @param[in] multiSamplingLevel The Multi-sampling level required
* @param[in] depthBufferRequired Whether the depth buffer is required
* @param[in] stencilBufferRequired Whether the stencil buffer is required
+ * @param[in] partialUpdateAvailable Whether the partial update is available
*/
EglImplementation( int multiSamplingLevel,
Integration::DepthBufferAvailable depthBufferRequired,
- Integration::StencilBufferAvailable stencilBufferRequired );
+ Integration::StencilBufferAvailable stencilBufferRequired,
+ Integration::PartialUpdateAvailable partialUpdateAvailable );
/**
* Destructor
*/
virtual void SwapBuffers( EGLSurface& eglSurface );
+ /**
+ * Get current buffer age
+ */
+ virtual int GetBufferAge( EGLSurface& eglSurface );
+
+ /**
+ * Set Damaged rect for Partial update
+ */
+ virtual void SetDamagedRect( std::vector<int> damagedRectArray, EGLSurface& eglSurface );
+
/**
* Performs an OpenGL copy buffers command
*/
* 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
bool ReplaceSurfacePixmap( EGLNativePixmapType pixmap, EGLSurface& eglSurface );
/**
+ * Sets gles version
+ */
+ void SetGlesVersion( const int32_t glesVersion );
+
+ /**
+ * Sets Whether the frame is the first after Resume.
+ */
+ void SetFirstFrameAfterResume();
+
+ /**
* returns the display with which this object was initialized
* @return the EGL Display.
*/
*/
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;
+
+ /**
+ * @brief Wait until all rendering calls for the currently context are executed
+ */
+ void WaitClient();
+
private:
Vector<EGLint> mContextAttribs;
typedef std::vector<EGLSurface> EglWindowSurfaceContainer;
EglWindowSurfaceContainer mEglWindowSurfaces; ///< The EGL surface for the window
- int mMultiSamplingLevel;
+ int32_t mMultiSamplingLevel;
+ int32_t mGlesVersion;
+ std::vector<int> mDamagedRectArray;
ColorDepth mColorDepth;
bool mIsWindow;
bool mDepthBufferRequired;
bool mStencilBufferRequired;
+ bool mIsSurfacelessContextSupported;
+ bool mIsKhrCreateContextSupported;
+ uint32_t mSwapBufferCountAfterResume;
+ bool mIsKhrPartialUpdateSupported;
+ bool mPartialUpdateAvailable;
+
+ PFNEGLSETDAMAGEREGIONKHRPROC mEglSetDamageRegionKHR;
+ PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC mSwapBuffersWithDamage;
};
} // namespace Adaptor