* @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
+ * - 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 <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
{
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
{
/**
* @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
{
* @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
{
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,
* @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.
*/
* 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
*
*
* @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
{
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. */
/**
* @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
* 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
* @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
* @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
* @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.
*
* @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
*
/**
* @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).
*
* @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.
*
*
* @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,
*
* @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);
* 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);
#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/ .
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.
#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
* 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
*
* @{
*/
*
* @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;
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 */
/*------- 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
* @{ */
/**
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);
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);
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