From 6f6af29d7879fcf9caec46fbd500d35fc51692d1 Mon Sep 17 00:00:00 2001 From: Daekwang Ryu Date: Tue, 12 Dec 2017 15:21:14 +0900 Subject: [PATCH] evas_gl: sync with Evas_GL.h of Tizen Change-Id: I68cd5c2b36416d692e8c4fba70e826b93ebfe50c --- src/lib/evas/Evas_GL.h | 272 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 227 insertions(+), 45 deletions(-) diff --git a/src/lib/evas/Evas_GL.h b/src/lib/evas/Evas_GL.h index c5c3fa9..86c1c44 100755 --- a/src/lib/evas/Evas_GL.h +++ b/src/lib/evas/Evas_GL.h @@ -97,8 +97,43 @@ Much of it is from Mesa, so their copyright is included as well. * @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. * * + *

Evas GL vs. Elementary GLView

+ * + * 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 + * - http://tizen.org/feature/opengles.version.3_1 + * - http://tizen.org/feature/opengles.version.3_2 + * + * 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 Feature List. + * @{ + */ + +/* *

Evas GL usage example

* * Below is an illustrative example of how to use OpenGL to render to an @@ -475,11 +510,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 { @@ -492,6 +528,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 { @@ -507,6 +544,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 { @@ -514,7 +552,7 @@ 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.*/ // TIZEN_ONLY(20171114) : EvasGL Render Thread EVAS_GL_OPTIONS_THREAD = (1<<2) /**< If enabled, Evas GL pixel callback will be called by another thread instead of main thread. * This option can enhance performance because Evas GL is worked with aynchronized call, @@ -525,6 +563,7 @@ typedef enum _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. */ @@ -541,6 +580,7 @@ typedef enum _Evas_GL_Multisample_Bits * 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 * @@ -564,6 +604,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 { @@ -572,7 +614,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. */ @@ -582,46 +624,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 @@ -631,12 +703,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 @@ -646,51 +724,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 @@ -698,67 +794,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. * + * @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 @@ -772,12 +897,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. @@ -788,9 +918,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 * @@ -800,11 +932,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 instantiated with @ref evas_gl_context_version_create(). * - * This function can be used to get the GL API for an 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). * @@ -820,24 +956,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. * @@ -845,19 +985,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, @@ -865,7 +1009,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); @@ -874,52 +1018,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); @@ -962,6 +1118,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/ . @@ -987,6 +1145,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 + /* * Evas GL has two types to support 64 bit interger both EvasGL[u]int64 and GL[u]int64 * EvasGL[u]int64 is for backwards compatibility and GL[u]int64 is for native type. @@ -1507,6 +1669,27 @@ typedef khronos_uint64_t GLuint64; #define GL_STACK_UNDERFLOW_KHR 0x0504 #endif /* GL_KHR_debug */ +#ifndef GL_KHR_no_error +#define GL_KHR_no_error 1 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#endif /* GL_KHR_no_error */ + +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 +#endif /* GL_KHR_robust_buffer_access_behavior */ + +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 +#define GL_CONTEXT_ROBUST_ACCESS_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +#endif /* GL_KHR_robustness */ + #ifndef GL_KHR_texture_compression_astc_hdr #define GL_KHR_texture_compression_astc_hdr 1 #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 @@ -5090,7 +5273,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 * * @{ */ @@ -5499,7 +5682,7 @@ EvasGLImage *img = glapi->evasglCreateImageForContext * * @note Evas_GL_API must have version 2 or higher. * - * @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; @@ -5734,9 +5917,9 @@ EvasGLImage *img = glapi->evasglCreateImageForContext GLsync (*glFenceSyncAPPLE) (GLenum condition, GLbitfield flags); GLboolean (*glIsSyncAPPLE) (GLsync sync); void (*glDeleteSyncAPPLE) (GLsync sync); - GLenum (*glClientWaitSyncAPPLE) (GLsync sync, GLbitfield flags, uint64_t timeout); - void (*glWaitSyncAPPLE) (GLsync sync, GLbitfield flags, uint64_t timeout); - void (*glGetInteger64vAPPLE) (GLenum pname, int64_t *params); + GLenum (*glClientWaitSyncAPPLE) (GLsync sync, GLbitfield flags, GLuint64 timeout); + void (*glWaitSyncAPPLE) (GLsync sync, GLbitfield flags, GLuint64 timeout); + void (*glGetInteger64vAPPLE) (GLenum pname, GLint64 *params); void (*glGetSyncivAPPLE) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); /* GL_EXT_map_buffer_range */ @@ -5777,8 +5960,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 * @{ */ /** @@ -5929,7 +6111,7 @@ EvasGLImage *img = glapi->evasglCreateImageForContext void (*glClearBufferfv) (GLenum buffer, GLint drawBuffer, const GLfloat * value); void (*glClearBufferiv) (GLenum buffer, GLint drawBuffer, const GLint * value); void (*glClearBufferuiv) (GLenum buffer, GLint drawBuffer, const GLuint * value); - GLenum (*glClientWaitSync) (GLsync sync, GLbitfield flags, uint64_t timeout); + GLenum (*glClientWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout); void (*glCompressedTexImage3D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data); void (*glCompressedTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data); void (*glCopyBufferSubData) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size); @@ -5955,11 +6137,11 @@ EvasGLImage *img = glapi->evasglCreateImageForContext void (*glGetActiveUniformBlockiv) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); void (*glGetActiveUniformBlockName) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); void (*glGetActiveUniformsiv) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); - void (*glGetBufferParameteri64v) (GLenum target, GLenum value, int64_t * data); + void (*glGetBufferParameteri64v) (GLenum target, GLenum value, GLint64 * data); void (*glGetBufferPointerv) (GLenum target, GLenum pname, GLvoid ** params); GLint (*glGetFragDataLocation) (GLuint program, const char * name); - void (*glGetInteger64i_v) (GLenum target, GLuint index, int64_t * data); - void (*glGetInteger64v) (GLenum pname, int64_t * data); + void (*glGetInteger64i_v) (GLenum target, GLuint index, GLint64 * data); + void (*glGetInteger64v) (GLenum pname, GLint64 * data); void (*glGetIntegeri_v) (GLenum target, GLuint index, GLint * data); void (*glGetInternalformativ) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params); void (*glGetProgramBinary) (GLuint program, GLsizei bufsize, GLsizei *length, GLenum *binaryFormat, void *binary); @@ -6020,7 +6202,7 @@ EvasGLImage *img = glapi->evasglCreateImageForContext void (*glVertexAttribI4ui) (GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3); void (*glVertexAttribI4uiv) (GLuint index, const GLuint *v); void (*glVertexAttribIPointer) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); - void (*glWaitSync) (GLsync sync, GLbitfield flags, uint64_t timeout); + void (*glWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout); /** @} */ /** * @anchor gles3.1 -- 2.7.4