EvasGL: This patch is for synchronization with Tizen 2.4 38/61238/1
authorDaeKwang Ryu <dkdk.ryu@samsung.com>
Mon, 7 Mar 2016 02:41:16 +0000 (11:41 +0900)
committerDaeKwang Ryu <dkdk.ryu@samsung.com>
Mon, 7 Mar 2016 02:43:16 +0000 (11:43 +0900)
Change-Id: I370d843f45e81750b1a338ee0a6ffa220c8d296d

src/lib/evas/Evas_GL.h

index 621a474..8045b62 100644 (file)
@@ -41,8 +41,41 @@ extern "C" {
  * @brief This group discusses the functions that are used to do OpenGL rendering on Evas. Evas allows you
  *        to use OpenGL to render to specially set up image objects (which act as
  *        render target surfaces).
+ *        By default, Evas GL will use an OpenGL-ES 2.0 context and API set.
  *
  *
+ * <h2> Evas GL vs. Elementary GLView </h2>
+ *
+ * While it is possible to Evas and Ecore_Evas to create an OpenGL application,
+ * using these low-level APIs can be troublesome for most users. Before
+ * diving in Evas GL, please refer to the page @ref elm_opengl_page.
+ *
+ * Elementary @ref GLView provides a set of helper functions in:
+ * @li @ref Elementary_GL_Helpers "Elementary_GL_Helpers.h"
+ *
+ * Similarly, two sets of helper functions are provided by Evas GL in the
+ * following header files:
+ * @li @ref Evas_GL_GLES1_Helpers "Evas_GL_GLES1_Helpers.h"
+ * @li @ref Evas_GL_GLES2_Helpers "Evas_GL_GLES2_Helpers.h"
+ * @li @ref Evas_GL_GLES3_Helpers "Evas_GL_GLES3_Helpers.h"
+ *
+ * @section EVAS_GL_RELATED_FEATURES Related Features
+ * This API is related with the following feature:\n
+ * - http://tizen.org/feature/opengles.version.1_1
+ * - http://tizen.org/feature/opengles.version.2_0
+ * - http://tizen.org/feature/opengles.version.3_0
+ *
+ * It is recommended to design feature related codes in your application for reliability.\n
+ *
+ * You can check if a device supports the related features for this API by using @ref CAPI_SYSTEM_SYSTEM_INFO_MODULE, thereby controlling the procedure of your application.\n
+ *
+ * To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.\n
+ *
+ * More details on featuring your application can be found from <a href="https://developer.tizen.org/development/getting-started/native-application/understanding-tizen-programming/application-filtering"><b>Feature List</b>.</a>
+ * @{
+ */
+
+/*
  * <h2> Evas GL usage example </h2>
  *
  * Below is an illustrative example of how to use OpenGL to render to an
@@ -419,11 +452,12 @@ typedef enum _Evas_GL_Color_Format
 {
     EVAS_GL_RGB_888   = 0, /**< Opaque RGB surface */
     EVAS_GL_RGBA_8888 = 1, /**< RGBA surface with alpha */
-    EVAS_GL_NO_FBO    = 2  /**< Special value for creating PBuffer surfaces without any attached buffer. @see evas_gl_pbuffer_surface_create. @since 1.12*/
+    EVAS_GL_NO_FBO    = 2  /**< Special value for creating PBuffer surfaces without any attached buffer. @see evas_gl_pbuffer_surface_create. @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */
 } Evas_GL_Color_Format;
 
 /**
  * @brief Enumeration that defines the Surface Depth Format.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 typedef enum _Evas_GL_Depth_Bits
 {
@@ -436,6 +470,7 @@ typedef enum _Evas_GL_Depth_Bits
 
 /**
  * @brief Enumeration that defines the Surface Stencil Format.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 typedef enum _Evas_GL_Stencil_Bits
 {
@@ -451,6 +486,7 @@ typedef enum _Evas_GL_Stencil_Bits
  * @brief Enumeration that defines the Configuration Options.
  *
  * @since 1.1
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 typedef enum _Evas_GL_Options_Bits
 {
@@ -458,13 +494,14 @@ typedef enum _Evas_GL_Options_Bits
    EVAS_GL_OPTIONS_DIRECT  = (1<<0),/**< Optional hint to allow rendering directly to the Evas window if possible */
    EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION = (1<<1) /**< Force direct rendering even if the canvas is rotated.
                                                   *   In that case, it is the application's role to rotate the contents of
-                                                  *   the Evas_GL view. @see evas_gl_rotation_get. @since 1.12 */
+                                                  *   the Evas_GL view. @see evas_gl_rotation_get */
 } Evas_GL_Options_Bits;
 
 /**
  * @brief Enumeration that defines the configuration options for a Multisample Anti-Aliased (MSAA) rendering surface.
  *
  * @since 1.2
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks This only works on devices that support the required extensions.
  */
@@ -480,7 +517,7 @@ typedef enum _Evas_GL_Multisample_Bits
  * @brief Enumeration that defines the available OpenGL ES version numbers.
  *        They can be used to create OpenGL-ES 1.1 contexts.
  *
- * @since 1.12
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @see evas_gl_context_version_create
  *
@@ -490,7 +527,7 @@ typedef enum _Evas_GL_Context_Version
 {
    EVAS_GL_GLES_1_X = 1, /**< OpenGL-ES 1.x */
    EVAS_GL_GLES_2_X = 2, /**< OpenGL-ES 2.x is the default */
-   EVAS_GL_GLES_3_X = 3  /**< @internal OpenGL-ES 3.x, not implemented yet */
+   EVAS_GL_GLES_3_X = 3  /**< OpenGL-ES 3.x (@b Since: 2.4) */
 } Evas_GL_Context_Version;
 
 /**
@@ -503,6 +540,8 @@ typedef enum _Evas_GL_Context_Version
  *
  * @see evas_gl_surface_create
  * @see evas_gl_pbuffer_surface_create
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 struct _Evas_GL_Config
 {
@@ -511,7 +550,7 @@ struct _Evas_GL_Config
    Evas_GL_Stencil_Bits       stencil_bits;     /**< Surface Stencil Bits */
    Evas_GL_Options_Bits       options_bits;     /**< Extra Surface Options */
    Evas_GL_Multisample_Bits   multisample_bits; /**< Optional Surface MSAA Bits */
-   Evas_GL_Context_Version    gles_version;     /**< @internal Special flag for OpenGL-ES 1.1 indirect rendering surfaces (since 1.12) */
+   Evas_GL_Context_Version    gles_version;     /**< @internal Special flag for OpenGL-ES 1.1 indirect rendering surfaces */
 };
 
 /** @brief Constant to use when calling @ref evas_gl_string_query to retrieve the available Evas_GL extensions. */
@@ -521,46 +560,76 @@ struct _Evas_GL_Config
 /**
  * @brief Creates a new Evas_GL object and returns a handle for GL rendering with the EFL.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] e The given Evas canvas to use
  *
  * @return The created Evas_GL object, or @c NULL in case of failure
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Evas_GL                 *evas_gl_new                (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 
 /**
  * @brief Frees an Evas_GL object.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl   The given Evas_GL object to destroy
  *
  * @see evas_gl_new
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI void                     evas_gl_free               (Evas_GL *evas_gl) EINA_ARG_NONNULL(1);
 
 /**
  * @brief Allocates a new config object for the user to fill out.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @remarks As long as Evas creates a config object for the user, it takes care
  *          of the backward compatibility issue.
  *
  * @see evas_gl_config_free
+ *
+ * @return A new config object
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Evas_GL_Config          *evas_gl_config_new         (void);
 
 /**
  * @brief Frees a config object created from evas_gl_config_new.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] cfg  The configuration structure to free, it can not be accessed afterwards.
  *
  * @remarks As long as Evas creates a config object for the user, it takes care
  *          of the backward compatibility issue.
  *
  * @see evas_gl_config_new
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI void                     evas_gl_config_free        (Evas_GL_Config *cfg) EINA_ARG_NONNULL(1);
 
 /**
  * @brief Creates and returns a new @ref Evas_GL_Surface object for GL Rendering.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl The given Evas_GL object
  * @param[in] cfg     The pixel format and configuration of the rendering surface
  * @param[in] w       The width of the surface
@@ -570,12 +639,18 @@ EAPI void                     evas_gl_config_free        (Evas_GL_Config *cfg) E
  *         otherwise @c NULL on failure
  *
  * @see evas_gl_surface_destroy
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Evas_GL_Surface         *evas_gl_surface_create     (Evas_GL *evas_gl, Evas_GL_Config *cfg, int w, int h) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1,2);
 
 /**
  * @brief Create a pixel buffer surface
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl     The given Evas_GL object
  * @param[in] cfg         Pixel format and configuration of the pixel buffer surface
  * @param[in] w           Requested width of the buffer
@@ -585,51 +660,69 @@ EAPI Evas_GL_Surface         *evas_gl_surface_create     (Evas_GL *evas_gl, Evas
  * @return The created GL surface object,
  *         otherwise @c NULL on failure
  *
- * The surface must be released with @ref evas_gl_surface_destroy.
+ * @remark The surface must be released with @ref evas_gl_surface_destroy.
  *
- * If the color format in @a cfg is @ref EVAS_GL_RGB_888 or @ref EVAS_GL_RGBA_8888,
+ * @remark If the color format in @a cfg is @ref EVAS_GL_RGB_888 or @ref EVAS_GL_RGBA_8888,
  * then Evas will automatically generate a framebuffer attached to this PBuffer.
  * Its properties can be queried using @ref evas_gl_native_surface_get.
  * If you want to attach an FBO yourself, or create a PBuffer surface only,
  * please use the color format @ref EVAS_GL_NO_FBO.
  *
- * Creating a 1x1 PBuffer surface can be useful in order to call
+ * @remark Creating a 1x1 PBuffer surface can be useful in order to call
  * @ref evas_gl_make_current() from another thread.
  *
- * @note The attribute list can be terminated by EVAS_GL_NONE or 0.
+ * @remark The attribute list can be terminated by EVAS_GL_NONE or 0.
  *       As of now, no special attributes are supported yet. Also, only EGL
  *       is supported at the moment of writing.
  *
  * @see evas_gl_surface_destroy
  *
- * @since 1.12
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Evas_GL_Surface         *evas_gl_pbuffer_surface_create(Evas_GL *evas_gl, Evas_GL_Config *cfg, int w, int h, const int *attrib_list) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1,2);
 
 /**
  * @brief Destroys an Evas GL Surface.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl   The given Evas_GL object
  * @param[in] surf      The given GL surface object
  *
- * @note This function can also destroy pbuffer surfaces.
+ * @remark This function can also destroy pbuffer surfaces.
  */
 EAPI void                     evas_gl_surface_destroy    (Evas_GL *evas_gl, Evas_GL_Surface *surf) EINA_ARG_NONNULL(1,2);
 
 /**
- * @brief Creates and returns a new Evas GL context object.
+ * @brief Creates and returns a new Evas GL context object (OpenGL-ES 2.0).
+ *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
  *
  * @param[in] evas_gl    The given Evas_GL object
  * @param[in] share_ctx  An Evas_GL context to share with the new context
  *
+ * The API in use will be an OpenGL-ES 2.0 API (ie. with framebuffers and shaders).
+ * Consider calling @ref evas_gl_context_version_create if you need an OpenGL-ES 1.1
+ * context instead.
+ *
  * @return The created context,
  *         otherwise @c NULL on failure
+ *
+ * @see evas_gl_context_version_create
  */
 EAPI Evas_GL_Context         *evas_gl_context_create     (Evas_GL *evas_gl, Evas_GL_Context *share_ctx) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 
 /**
  * @brief Creates and returns a new Evas GL context object for OpenGL-ES 1.1 or 2.0.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl    The given Evas_GL object
  * @param[in] share_ctx  A context to share (can be NULL)
  * @param[in] version    Major OpenGL-ES version number
@@ -637,67 +730,96 @@ EAPI Evas_GL_Context         *evas_gl_context_create     (Evas_GL *evas_gl, Evas
  * @return The created context,
  *         otherwise @c NULL on failure
  *
- * This function can be used to create OpenGL-ES 1.1 contexts, but OpenGL-ES 3.x
- * is not supported yet.
- *
- * The GL API bound to the created context must be queried using
+ * @remark The GL API bound to the created context must be queried using
  * @ref evas_gl_context_api_get (instead of @ref evas_gl_api_get).
  *
- * @note GLES 3.x is not supported yet.
+ * @remark GLES 3.x is supported since 2.4.
  *
  * @see Evas_GL_Context_Version
  * @see evas_gl_context_api_get
  *
- * @since 1.12
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Evas_GL_Context         *evas_gl_context_version_create(Evas_GL *evas_gl, Evas_GL_Context *share_ctx, Evas_GL_Context_Version version) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 
 /**
  * @brief Destroys the given Evas GL context object.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl The given Evas_GL object
  * @param[in] ctx     The given Evas GL context
  *
  * @see evas_gl_context_create
  * @see evas_gl_context_version_create
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI void                     evas_gl_context_destroy    (Evas_GL *evas_gl, Evas_GL_Context *ctx) EINA_ARG_NONNULL(1,2);
 
 /**
  * @brief Sets the given context as the current context for the given surface.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl The given Evas_GL object
  * @param[in] surf The given Evas GL surface
  * @param[in] ctx The given Evas GL context
  * @return @c EINA_TRUE if successful,
  *         otherwise @c EINA_FALSE if not
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Eina_Bool                evas_gl_make_current       (Evas_GL *evas_gl, Evas_GL_Surface *surf, Evas_GL_Context *ctx) EINA_ARG_NONNULL(1,2);
 
 /**
  * @brief Returns a pointer to a static, null-terminated string describing some aspect of Evas GL.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl The given Evas_GL object
  * @param[in] name    A symbolic constant, only @ref EVAS_GL_EXTENSIONS is supported for now
+ * @return A string describing some aspect of Evas GL
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI const char              *evas_gl_string_query       (Evas_GL *evas_gl, int name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
 
 /**
- * @brief Returns a extension function from OpenGL or the Evas_GL glue layer.
+ * @brief Returns a extension function from the Evas_GL glue layer.
+ *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
  *
  * @param[in] evas_gl  The given Evas_GL object
  * @param[in] name     The name of the function to return
  *
- * The available extension functions may depend on the backend engine Evas GL is
+ * @remark The available extension functions may depend on the backend engine Evas GL is
  * running on.
  *
+ * @note Evas_GL extensions are not EGL or OpenGL extensions, but Evas_GL-specific
+ *       features.
+ *
  * @return A function pointer to the Evas_GL extension.
+ *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Evas_GL_Func             evas_gl_proc_address_get   (Evas_GL *evas_gl, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1,2) EINA_PURE;
 
 /**
  * @brief Fills in the Native Surface information from a given Evas GL surface.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in]  evas_gl The given Evas_GL object
  * @param[in]  surf    The given Evas GL surface to retrieve the Native Surface information from
  * @param[out] ns      The native surface structure that the function fills in
@@ -711,12 +833,17 @@ EAPI Evas_GL_Func             evas_gl_proc_address_get   (Evas_GL *evas_gl, cons
  * @warning Applications should not rely on the information set in @p ns
  *          since its properties are internal to Evas and are not meant to be
  *          tampered with in any way or form from outside Evas.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Eina_Bool                evas_gl_native_surface_get (Evas_GL *evas_gl, Evas_GL_Surface *surf, Evas_Native_Surface *ns) EINA_ARG_NONNULL(1,2,3);
 
 /**
  * @brief Gets the API for rendering using OpenGL.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @details This returns a structure that contains all the OpenGL functions you can
  *          use to render in Evas. These functions consist of all the standard
  *          OpenGL-ES2.0 functions and any additional ones that Evas has decided to provide.
@@ -727,9 +854,11 @@ EAPI Eina_Bool                evas_gl_native_surface_get (Evas_GL *evas_gl, Evas
  *
  * @return The API to use
  *
- * @note This function will always return an OpenGL-ES 2.0 API, please use
+ * @remark This function will always return an OpenGL-ES 2.0 API, please use
  *       @ref evas_gl_context_api_get instead to get an OpenGL-ES 1.1 set of APIs.
  *
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ *
  * @see Evas_GL_API
  * @see evas_gl_context_api_get
  *
@@ -739,11 +868,15 @@ EAPI Evas_GL_API             *evas_gl_api_get            (Evas_GL *evas_gl) EINA
 /**
  * @brief Gets the API for rendering using OpenGL with non standard contexts.
  *
- * This function is similar to @ref evas_gl_api_get but takes an extra Evas GL
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
+ * @remark This function is similar to @ref evas_gl_api_get but takes an extra Evas GL
  * context argument as it is used to get the real API used by special contexts,
  * that have been instanciated with @ref evas_gl_context_version_create().
  *
- * This function can be used to get the GL API for a OpenGL-ES 1.1 context. When
+ * @remark This function can be used to get the GL API for a OpenGL-ES 1.1 context. When
  * using OpenGL-ES 1.1, applications should always use @ref evas_gl_context_api_get
  * and never call @ref evas_gl_api_get (this will always return a OpenGL-ES 2+ API).
  *
@@ -759,24 +892,28 @@ EAPI Evas_GL_API             *evas_gl_api_get            (Evas_GL *evas_gl) EINA
  * @see evas_gl_api_get
  * @see evas_gl_context_version_create
  *
- * @since 1.12
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Evas_GL_API             *evas_gl_context_api_get    (Evas_GL *evas_gl, Evas_GL_Context *ctx) EINA_ARG_NONNULL(1);
 
 /**
  * @brief Get the current rotation of the view, in degrees.
  *
- * This function should be called in order to properly handle the current
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
+ * @remark This function should be called in order to properly handle the current
  * rotation of the view. It will always return 0 unless the option
  * @ref EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION has been set.
  *
- * Indeed, in case of direct rendering to the back buffer, the client
+ * @remark Indeed, in case of direct rendering to the back buffer, the client
  * application is responsible for properly rotating its view. This can generally
  * be done by applying a rotation to a view matrix.
  *
  * @param[in] evas_gl    The current Evas_GL object
  *
- * @note The returned value may not be the same as the window rotation, for
+ * @remark The returned value may not be the same as the window rotation, for
  * example if indirect rendering is used as a fallback, or if the GPU supports
  * transparent rotation of the buffer during swap.
  *
@@ -784,19 +921,23 @@ EAPI Evas_GL_API             *evas_gl_context_api_get    (Evas_GL *evas_gl, Evas
  *
  * @see EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION
  *
- * @since 1.12
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI int                      evas_gl_rotation_get       (Evas_GL *evas_gl) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
 
 /**
  * @brief Query a surface for its properties
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in]  evas_gl    The current Evas_GL object
  * @param[in]  surface    An Evas_GL_Surface surface to query
  * @param[in]  attribute  Specifies the attribute to query.
  * @param[out] value      Returns the requested value (usually an int)
  *
- * The currently accepted attributes are the following:
+ * @remark The currently accepted attributes are the following:
  * @li @ref EVAS_GL_WIDTH,
  * @li @ref EVAS_GL_HEIGHT,
  * @li @ref EVAS_GL_TEXTURE_FORMAT,
@@ -804,7 +945,7 @@ EAPI int                      evas_gl_rotation_get       (Evas_GL *evas_gl) EINA
  *
  * @return EINA_TRUE in case of success, EINA_FALSE in case of error.
  *
- * @since 1.12
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Eina_Bool                evas_gl_surface_query      (Evas_GL *evas_gl, Evas_GL_Surface *surface, int attribute, void *value) EINA_ARG_NONNULL(1,2);
 
@@ -813,52 +954,64 @@ EAPI Eina_Bool                evas_gl_surface_query      (Evas_GL *evas_gl, Evas
  *        Initially, the error is set to @ref EVAS_GL_SUCCESS. A call to @ref evas_gl_error_get
  *        resets the error to @ref EVAS_GL_SUCCESS.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl The given Evas_GL object
  *
  * @return @ref EVAS_GL_SUCCESS in case of no error, or any other @c EVAS_GL error code.
  *
- * Since Evas GL is a glue layer for GL imitating EGL, the error codes returned
+ * @remark Since Evas GL is a glue layer for GL imitating EGL, the error codes returned
  * have a similar meaning as those defined in EGL, so please refer to the EGL
  * documentation for more information about the various error codes.
  *
- * @note Evas GL does not specify exactly which error codes will be returned in
+ * @remark Evas GL does not specify exactly which error codes will be returned in
  *       which circumstances. This is because different backends may behave
  *       differently and Evas GL will try to give the most meaningful error code
  *       based on the backend's error. Evas GL only tries to provide some
  *       information, so an application can not expect the exact same error
  *       codes as EGL would return.
  *
- * @since 1.12
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI int                      evas_gl_error_get          (Evas_GL *evas_gl) EINA_ARG_NONNULL(1);
 
 /**
  * @brief Returns the Evas GL context object in use or set by @ref evas_gl_make_current.
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl The given Evas_GL object
  *
  * @return The current context for the calling thread, or @c NULL in case of
  *         failure and when there is no current context in this thread.
  *
- * @since 1.12
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Evas_GL_Context         *evas_gl_current_context_get (Evas_GL *evas_gl) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 
 /**
  * @brief Returns the Evas GL surface object in use or set by @ref evas_gl_make_current
  *
+ * @if MOBILE @since_tizen 2.3
+ * @elseif WEARABLE @since_tizen 2.3.1
+ * @endif
+ *
  * @param[in] evas_gl The given Evas_GL object
  *
  * @return The current surface for the calling thread, or @c NULL in case of
  *         failure and when there is no current surface in this thread.
  *
- * This can be used to get a handle to the current surface, so as to switch
+ * @remark This can be used to get a handle to the current surface, so as to switch
  * between contexts back and forth. Note that the OpenGL driver may stall when
  * doing so.
  *
  * @see evas_gl_make_current
  *
- * @since 1.12
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
 EAPI Evas_GL_Surface         *evas_gl_current_surface_get (Evas_GL *evas_gl) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
 
@@ -901,6 +1054,8 @@ typedef khronos_uint64_t   EvasGLuint64;
 #if !defined(__gl2_h_)
 # define __gl2_h_
 
+#define GL_ES_VERSION_2_0 1
+
 /*
  * This document is licensed under the SGI Free Software B License Version
  * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
@@ -926,6 +1081,10 @@ typedef float            GLfloat;      // Changed khronos_float_t
 typedef float            GLclampf;     // Changed khronos_float_t
 typedef signed int       GLfixed;      // Changed khronos_int32_t
 
+/* GL types for handling large vertex buffer objects */
+typedef signed long int  GLintptr;     // Changed khronos_intptr_t
+typedef signed long int  GLsizeiptr;   // Changed khronos_ssize_t
+
 /* OpenGL ES core versions */
 //#define GL_ES_VERSION_2_0                 1
 
@@ -3422,6 +3581,7 @@ typedef struct __GLsync*   GLsync;
 #ifndef __gl3_h_
 # define __gl3_h_ 1
 
+#define GL_ES_VERSION_3_0 1
 
 #define GL_READ_BUFFER                    0x0C02
 #define GL_UNPACK_ROW_LENGTH              0x0CF2
@@ -3801,7 +3961,7 @@ typedef unsigned long long EvasGLTime;
  * call the backend's GetError() function and translate to a valid @c EVAS_GL_
  * error code.
  *
- * @since 1.12
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @{
  */
@@ -4208,7 +4368,7 @@ EvasGLImage *img = glapi->evasglCreateImageForContext
     *
     * @note Evas_GL_API must have version 2 or more.
     *
-    * @since 1.12
+    * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
     */
    EvasGLImage  (*evasglCreateImageForContext) (Evas_GL *evas_gl, Evas_GL_Context *ctx, int target, void* buffer, const int* attrib_list) EINA_WARN_UNUSED_RESULT;
 
@@ -4486,8 +4646,7 @@ EvasGLImage *img = glapi->evasglCreateImageForContext
    /*------- EvasGL / EGL-related functions -------*/
    /**
     * @name Evas GL Sync object functions
-    * @since_tizen 2.3
-    * @since 1.12
+    * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
     * @{ */
 
    /**