#define __DALI_INTERNAL_EGL_IMPLEMENTATION_H__
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 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.
// EXTERNAL INCLUDES
#include <EGL/egl.h>
#include <EGL/eglext.h>
-#include <boost/any.hpp>
#include <dali/public-api/common/dali-vector.h>
// INTERNAL INCLUDES
-#include <base/interfaces/egl-interface.h>
+#include <adaptors/integration-api/egl-interface.h>
namespace Dali
{
+
namespace Internal
{
namespace Adaptor
{
-enum ColorDepth
-{
- COLOR_DEPTH_24 = 24,
- COLOR_DEPTH_32 = 32
-};
-
/**
* EglImplementation class provides an EGL implementation.
*/
public:
/**
* Constructor
+ * @param environmentOptions To check the envirionment options
*/
- EglImplementation();
+ EglImplementation( int multiSamplingLevel );
/**
* Destructor
public:
- /**
+ /**
* (Called from ECoreX::RenderSurface, not RenderThread, so not in i/f, hence, not virtual)
* Initialize GL
* @param display The display
void MakeContextNull();
/**
+ * @brief Make the OpenGL surface current
+ *
+ * @param pixmap The pixmap to replace the current surface
+ * @param eglSurface The eglSurface to replace the current OpenGL surface.
+ */
+ void MakeCurrent( EGLNativePixmapType pixmap, EGLSurface eglSurface );
+
+ /**
* Terminate GL
*/
virtual void TerminateGles();
bool IsGlesInitialized() const;
/**
- * Sets the refresh sync mode.
- * @see SyncMode
- */
- virtual bool SetRefreshSync( SyncMode mode );
-
- /**
* Performs an OpenGL swap buffers command
*/
virtual void SwapBuffers();
* Create the OpenGL surface using a pixmap
* @param pixmap The pixmap 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 off-screen EGL pixmap surface (the requester has an ownership of this egl surface)
*/
- void CreateSurfacePixmap( EGLNativePixmapType pixmap, ColorDepth depth );
+ EGLSurface CreateSurfacePixmap( EGLNativePixmapType pixmap, ColorDepth depth );
/**
* Replaces the render surface
* @param[in] window, the window to create the new surface on
- * @param[in] display, the display
* @return true if the context was lost due to a change in display
* between old surface and new surface
*/
- bool ReplaceSurfaceWindow( EGLNativeWindowType window, EGLNativeDisplayType display );
+ bool ReplaceSurfaceWindow( EGLNativeWindowType window );
/**
* Replaces the render surface
- * @param[in] pixmap, the pixmap to create the new surface on
- * @param[in] display, the display
+ * @param[in] pixmap, the pixmap to replace the new surface on
+ * @param[out] eglSurface, the eglSurface is created using a pixmap.
* @return true if the context was lost due to a change in x-display
* between old surface and new surface
*/
- bool ReplaceSurfacePixmap( EGLNativePixmapType pixmap, EGLNativeDisplayType display );
+ bool ReplaceSurfacePixmap( EGLNativePixmapType pixmap, EGLSurface& eglSurface );
/**
* returns the display with which this object was initialized
Vector<EGLint> mContextAttribs;
EGLNativeDisplayType mEglNativeDisplay;
+
EGLNativeWindowType mEglNativeWindow;
- EGLNativePixmapType mEglNativePixmap;
+
+ EGLNativePixmapType mCurrentEglNativePixmap;
EGLDisplay mEglDisplay;
EGLConfig mEglConfig;
EGLContext mEglContext;
- EGLSurface mEglSurface;
+ EGLSurface mCurrentEglSurface;
bool mGlesInitialized;
bool mIsOwnSurface;
- SyncMode mSyncMode;
bool mContextCurrent;
bool mIsWindow;
ColorDepth mColorDepth;
+
+ int mMultiSamplingLevel;
};
} // namespace Adaptor