* @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
*/
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();
+
private:
Vector<EGLint> mContextAttribs;
int32_t mMultiSamplingLevel;
int32_t mGlesVersion;
+ std::vector<int> mDamagedRectArray;
ColorDepth mColorDepth;
bool mStencilBufferRequired;
bool mIsSurfacelessContextSupported;
bool mIsKhrCreateContextSupported;
+ uint32_t mSwapBufferCountAfterResume;
+ bool mIsKhrPartialUpdateSupported;
+ bool mPartialUpdateAvailable;
+
+ PFNEGLSETDAMAGEREGIONKHRPROC mEglSetDamageRegionKHR;
+ PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC mSwapBuffersWithDamage;
};
} // namespace Adaptor