*/
// EXTERNAL INCLUDES
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
+#include <dali/public-api/common/list-wrapper.h>
+#include <dali/public-api/common/vector-wrapper.h>
+
+#include <dali/internal/graphics/common/egl-include.h>
#include <dali/public-api/common/dali-vector.h>
#include <dali/public-api/common/vector-wrapper.h>
+#include <dali/public-api/math/rect.h>
#include <dali/integration-api/core-enumerations.h>
// INTERNAL INCLUDES
-#include <dali/integration-api/egl-interface.h>
+#include <dali/integration-api/adaptor-framework/egl-interface.h>
namespace Dali
{
-
namespace Internal
{
namespace Adaptor
* @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] partialUpdatedRequired Whether the partial update is required
*/
EglImplementation( int multiSamplingLevel,
Integration::DepthBufferAvailable depthBufferRequired,
- Integration::StencilBufferAvailable stencilBufferRequired );
+ Integration::StencilBufferAvailable stencilBufferRequired,
+ Integration::PartialUpdateAvailable partialUpdateRequired );
/**
* Destructor
*/
- virtual ~EglImplementation();
+ ~EglImplementation() override;
public:
* Create the OpenGL context for the shared resource.
* @return true if successful
*/
- virtual bool CreateContext();
+ bool CreateContext() override;
/**
* Create the OpenGL context for the window.
/**
* Make the OpenGL context current
*/
- virtual void MakeContextCurrent( EGLSurface eglSurface, EGLContext eglContext );
+ void MakeContextCurrent( EGLSurface eglSurface, EGLContext eglContext ) override;
/**
* clear the OpenGL context
/**
* Terminate GL
*/
- virtual void TerminateGles();
+ void TerminateGles() override;
/**
* Checks if GL is initialised
/**
* Performs an OpenGL swap buffers command
*/
- virtual void SwapBuffers( EGLSurface& eglSurface );
+ void SwapBuffers( EGLSurface& eglSurface ) override;
+
+ /**
+ * Gets current back buffer age
+ */
+ EGLint GetBufferAge( EGLSurface& eglSurface ) const;
+
+ /**
+ * Performs an OpenGL set damage command with damaged rects
+ */
+ void SetDamageRegion( EGLSurface& eglSurface, std::vector< Rect< int > >& damagedRects );
+
+ /**
+ * Performs an OpenGL swap buffers command with damaged rects
+ */
+ virtual void SwapBuffers( EGLSurface& eglSurface, const std::vector<Rect<int>>& damagedRects );
/**
* Performs an OpenGL copy buffers command
*/
- virtual void CopyBuffers( EGLSurface& eglSurface );
+ void CopyBuffers( EGLSurface& eglSurface ) override;
/**
* Performs an EGL wait GL command
*/
- virtual void WaitGL();
+ void WaitGL() override;
/**
* Choose config of egl
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.
*/
*/
bool IsSurfacelessContextSupported() const;
+ /**
+ * @brief Wait until all rendering calls for the currently context are executed
+ */
+ void WaitClient();
+
+ /**
+ * @brief Returns whether the partial update is required.
+ * @return true if the partial update is required.
+ */
+ bool IsPartialUpdateRequired() const;
+
private:
Vector<EGLint> mContextAttribs;
bool mIsWindow;
bool mDepthBufferRequired;
bool mStencilBufferRequired;
+ bool mPartialUpdateRequired;
bool mIsSurfacelessContextSupported;
bool mIsKhrCreateContextSupported;
+
+ uint32_t mSwapBufferCountAfterResume;
+ PFNEGLSETDAMAGEREGIONKHRPROC mEglSetDamageRegionKHR;
+ PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC mEglSwapBuffersWithDamageKHR;
+
};
} // namespace Adaptor