Tizen Native API  5.5
Rendering GL on Evas

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 OpenGL with Elementary.

Elementary GLView provides a set of helper functions in:

Similarly, two sets of helper functions are provided by Evas GL in the following header files:

Related Features

This API is related with the following feature:

It is recommended to design feature related codes in your application for reliability.

You can check if a device supports the related features for this API by using System Information, thereby controlling the procedure of your application.

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.

More details on featuring your application can be found from Feature List.

Functions

Evas_GLevas_gl_new (Evas *e)
 Creates a new Evas_GL object and returns a handle for GL rendering with the EFL.
void evas_gl_free (Evas_GL *evas_gl)
 Frees an Evas_GL object.
Evas_GL_Configevas_gl_config_new (void)
 Allocates a new config object for the user to fill out.
void evas_gl_config_free (Evas_GL_Config *cfg)
 Frees a config object created from evas_gl_config_new.
Evas_GL_Surfaceevas_gl_surface_create (Evas_GL *evas_gl, Evas_GL_Config *cfg, int w, int h)
 Creates and returns a new Evas_GL_Surface object for GL Rendering.
Evas_GL_Surfaceevas_gl_pbuffer_surface_create (Evas_GL *evas_gl, Evas_GL_Config *cfg, int w, int h, const int *attrib_list)
 Create a pixel buffer surface.
void evas_gl_surface_destroy (Evas_GL *evas_gl, Evas_GL_Surface *surf)
 Destroys an Evas GL Surface.
Evas_GL_Contextevas_gl_context_create (Evas_GL *evas_gl, Evas_GL_Context *share_ctx)
 Creates and returns a new Evas GL context object (OpenGL-ES 2.0).
Evas_GL_Contextevas_gl_context_version_create (Evas_GL *evas_gl, Evas_GL_Context *share_ctx, Evas_GL_Context_Version version)
 Creates and returns a new Evas GL context object for OpenGL-ES 1.1 or 2.0.
void evas_gl_context_destroy (Evas_GL *evas_gl, Evas_GL_Context *ctx)
 Destroys the given Evas GL context object.
Eina_Bool evas_gl_make_current (Evas_GL *evas_gl, Evas_GL_Surface *surf, Evas_GL_Context *ctx)
 Sets the given context as the current context for the given surface.
const char * evas_gl_string_query (Evas_GL *evas_gl, int name)
 Returns a pointer to a static, null-terminated string describing some aspect of Evas GL.
Evas_GL_Func evas_gl_proc_address_get (Evas_GL *evas_gl, const char *name)
 Returns a extension function from OpenGL or the Evas_GL glue layer.
Eina_Bool evas_gl_native_surface_get (Evas_GL *evas_gl, Evas_GL_Surface *surf, Evas_Native_Surface *ns)
 Fills in the Native Surface information from a given Evas GL surface.
Evas_GL_APIevas_gl_api_get (Evas_GL *evas_gl)
 Gets the API for rendering using OpenGL.
Evas_GL_APIevas_gl_context_api_get (Evas_GL *evas_gl, Evas_GL_Context *ctx)
 Gets the API for rendering using OpenGL with non standard contexts.
int evas_gl_rotation_get (Evas_GL *evas_gl)
 Get the current rotation of the view, in degrees.
Eina_Bool evas_gl_surface_query (Evas_GL *evas_gl, Evas_GL_Surface *surface, int attribute, void *value)
 Query a surface for its properties.
int evas_gl_error_get (Evas_GL *evas_gl)
 Returns the last error of any evas_gl function called in the current thread. Initially, the error is set to EVAS_GL_SUCCESS. A call to evas_gl_error_get resets the error to EVAS_GL_SUCCESS.
Evas_GL_Contextevas_gl_current_context_get (Evas_GL *evas_gl)
 Returns the Evas GL context object in use or set by evas_gl_make_current.
Evas_GL_Surfaceevas_gl_current_surface_get (Evas_GL *evas_gl)
 Returns the Evas GL surface object in use or set by evas_gl_make_current.
Evas_GLevas_gl_current_evas_gl_get (Evas_GL_Context **context, Evas_GL_Surface **surface)
 Get current Evas GL.

Typedefs

typedef struct _Evas_GL Evas_GL
 The structure type of the Evas GL object used to render GL in Evas.
typedef struct _Evas_GL_Surface Evas_GL_Surface
 The structure type of the Evas GL Surface object, a GL rendering target in Evas GL.
typedef struct _Evas_GL_Context Evas_GL_Context
 The structure type of the Evas GL Context object, a GL rendering context in Evas GL.
typedef struct _Evas_GL_Config Evas_GL_Config
 The structure type of the Evas GL Surface configuration object for surface creation.
typedef struct _Evas_GL_API Evas_GL_API
 The structure type of the Evas GL API object that contains the GL APIs to be used in Evas GL.
typedef void * Evas_GL_Func
 Represents a function pointer, that can be used for Evas GL extensions.
typedef void * EvasGLImage
 Represents an Evas GL Image object used with Evas GL Image extensions.
typedef enum _Evas_GL_Color_Format Evas_GL_Color_Format
 Enumeration that defines the available surface color formats.
typedef enum _Evas_GL_Depth_Bits Evas_GL_Depth_Bits
 Enumeration that defines the Surface Depth Format.
typedef enum _Evas_GL_Stencil_Bits Evas_GL_Stencil_Bits
 Enumeration that defines the Surface Stencil Format.
typedef enum _Evas_GL_Options_Bits Evas_GL_Options_Bits
 Enumeration that defines the Configuration Options.
typedef enum
_Evas_GL_Multisample_Bits 
Evas_GL_Multisample_Bits
 Enumeration that defines the configuration options for a Multisample Anti-Aliased (MSAA) rendering surface.
typedef enum
_Evas_GL_Context_Version 
Evas_GL_Context_Version
 Enumeration that defines the available OpenGL ES version numbers. They can be used to create OpenGL-ES 1.1 contexts.

Defines

#define EVAS_GL_EXTENSIONS   1
 Constant to use when calling evas_gl_string_query to retrieve the available Evas_GL extensions.
#define EVAS_GL_IMAGE_PRESERVED   0x30D2
 An attribute for evasglCreateImage or evasglCreateImageForContext, the default is EINA_FALSE. Please refer to EGL_IMAGE_PRESERVED_KHR.
#define EVAS_VG_PARENT_IMAGE   0x30BA
 A target for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_TEXTURE_2D   0x30B1
 An attribute for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_TEXTURE_LEVEL   0x30BC
 An attribute for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_TEXTURE_CUBE_MAP_POSITIVE_X   0x30B3
 A target for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_TEXTURE_CUBE_MAP_NEGATIVE_X   0x30B4
 A target for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_TEXTURE_CUBE_MAP_POSITIVE_Y   0x30B5
 A target for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y   0x30B6
 A target for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_TEXTURE_CUBE_MAP_POSITIVE_Z   0x30B7
 A target for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z   0x30B8
 A target for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_TEXTURE_3D   0x30B2
 A target for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_TEXTURE_ZOFFSET   0x30BD
 An attribute for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_RENDERBUFFER   0x30B9
 A target for evasglCreateImage or evasglCreateImageForContext.
#define EVAS_GL_NATIVE_SURFACE_TIZEN   0x32A1
 A target for evasglCreateImage or evasglCreateImageForContext. This is a Tizen specific feature.
#define EVAS_GL_WAYLAND_BUFFER_WL   0x31D5
 A target for evasglCreateImage.
#define EVAS_GL_WAYLAND_PLANE_WL   0x31D6
 A attribute for evasglCreateImage.
#define EVAS_GL_TEXTURE_Y_U_V_WL   0x31D7
 A return value of evasglQueryWaylandBuffer with EVAS_GL_TEXTURE_FORMAT.
#define EVAS_GL_TEXTURE_Y_UV_WL   0x31D8
 A return value of evasglQueryWaylandBuffer with EVAS_GL_TEXTURE_FORMAT.
#define EVAS_GL_TEXTURE_Y_XUXV_WL   0x31D9
 A return value of evasglQueryWaylandBuffer with EVAS_GL_TEXTURE_FORMAT.
#define EVAS_GL_WAYLAND_Y_INVERTED_WL   0x31DB
 A attribute for evasglQueryWaylandBuffer.
#define EVAS_GL_API_VERSION   6
 Defines the version of the API structure.

Define Documentation

#define EVAS_GL_API_VERSION   6

Defines the version of the API structure.

This helps applications know at runtime whether a function pointer exists or not.

Version 1: GLES 2.0 + GLES2 extensions only Version 2: GLES 2.0 + GLES2 extensions + GLES1 + GLES1.1 extensions Version 3: [version 2] + Wayland extensions Version 4: [version 3] + GLES3.0 + GLES3.0 extensions Version 5: [version 4] + GLES3.1 Version 6: [version 5] + GLES3.2


Typedef Documentation

Enumeration that defines the available OpenGL ES version numbers. They can be used to create OpenGL-ES 1.1 contexts.

Since (EFL) :
1.12
Since :
2.3.1
See also:
evas_gl_context_version_create
Remarks:
This will only work with EGL/GLES (but not with desktop OpenGL).

Enumeration that defines the Surface Depth Format.

Since :
2.3.1

Enumeration that defines the configuration options for a Multisample Anti-Aliased (MSAA) rendering surface.

Since (EFL) :
1.2
Since :
2.3.1
Remarks:
This only works on devices that support the required extensions.

Enumeration that defines the Configuration Options.

Since (EFL) :
1.1
Since :
2.3.1

Enumeration that defines the Surface Stencil Format.

Since :
2.3.1

Enumeration Type Documentation

Enumeration that defines the available surface color formats.

Enumerator:
EVAS_GL_RGB_888 

Opaque RGB surface

EVAS_GL_RGBA_8888 

RGBA surface with alpha

EVAS_GL_NO_FBO 

Special value for creating PBuffer surfaces without any attached buffer.

See also:
evas_gl_pbuffer_surface_create.
Since :
2.3.1

Enumeration that defines the available OpenGL ES version numbers. They can be used to create OpenGL-ES 1.1 contexts.

Since (EFL) :
1.12
Since :
2.3.1
See also:
evas_gl_context_version_create
Remarks:
This will only work with EGL/GLES (but not with desktop OpenGL).
Enumerator:
EVAS_GL_GLES_1_X 

OpenGL-ES 1.x

EVAS_GL_GLES_2_X 

OpenGL-ES 2.x is the default

EVAS_GL_GLES_3_X 

OpenGL-ES 3.x (Since: 2.4)

EVAS_GL_DEBUG 

Enable debug mode on this context (See GL_KHR_debug) (Since 4.0)

Enumeration that defines the Surface Depth Format.

Since :
2.3.1
Enumerator:
EVAS_GL_DEPTH_BIT_8 

8 bits precision surface depth

EVAS_GL_DEPTH_BIT_16 

16 bits precision surface depth

EVAS_GL_DEPTH_BIT_24 

24 bits precision surface depth

EVAS_GL_DEPTH_BIT_32 

32 bits precision surface depth

Enumeration that defines the configuration options for a Multisample Anti-Aliased (MSAA) rendering surface.

Since (EFL) :
1.2
Since :
2.3.1
Remarks:
This only works on devices that support the required extensions.
Enumerator:
EVAS_GL_MULTISAMPLE_NONE 

No multisample rendering

EVAS_GL_MULTISAMPLE_LOW 

MSAA with minimum number of samples

EVAS_GL_MULTISAMPLE_MED 

MSAA with half the maximum number of samples

EVAS_GL_MULTISAMPLE_HIGH 

MSAA with maximum allowed samples

Enumeration that defines the Configuration Options.

Since (EFL) :
1.1
Since :
2.3.1
Enumerator:
EVAS_GL_OPTIONS_NONE 

No extra options

EVAS_GL_OPTIONS_DIRECT 

Optional hint to allow rendering directly to the Evas window if possible

EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION 

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 also:
evas_gl_rotation_get.
EVAS_GL_OPTIONS_THREAD 

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, but user must guarantee synchronization with pixel callback and main loop when using this flag.

Enumeration that defines the Surface Stencil Format.

Since :
2.3.1
Enumerator:
EVAS_GL_STENCIL_BIT_1 

1 bit precision for stencil buffer

EVAS_GL_STENCIL_BIT_2 

2 bits precision for stencil buffer

EVAS_GL_STENCIL_BIT_4 

4 bits precision for stencil buffer

EVAS_GL_STENCIL_BIT_8 

8 bits precision for stencil buffer

EVAS_GL_STENCIL_BIT_16 

16 bits precision for stencil buffer


Function Documentation

Gets the API for rendering using OpenGL.

Since :
2.3.1

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. This means that if you have your code ported to OpenGL-ES2.0, it is going to be easy to render to Evas.

Parameters:
[in]evas_glThe given Evas_GL object
Returns:
The API to use
Remarks:
This function will always return an OpenGL-ES 2.0 API, please use evas_gl_context_api_get instead to get an OpenGL-ES 1.1 set of APIs.
Since :
2.3.1
See also:
Evas_GL_API
evas_gl_context_api_get

Frees a config object created from evas_gl_config_new.

Since :
2.3.1
Parameters:
[in]cfgThe 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 also:
evas_gl_config_new
Since :
2.3.1

Allocates a new config object for the user to fill out.

Since :
2.3.1
Remarks:
As long as Evas creates a config object for the user, it takes care of the backward compatibility issue.
See also:
evas_gl_config_free
Returns:
A new config object
Since :
2.3.1

Gets the API for rendering using OpenGL with non standard contexts.

Since :
2.3.1
Remarks:
This function is similar to 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 evas_gl_context_version_create().
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 evas_gl_context_api_get and never call evas_gl_api_get (this will always return a OpenGL-ES 2+ API).
Parameters:
[in]evas_glThe given Evas_GL object
[in]ctxSpecifies which context to use, based on this, Evas GL will return a 1.1- or a 2.0-compatible OpenGL-ES API.
Returns:
The API to use. Only the available function pointers will be set in the structure. All the non compatible functions or unsupported extension function pointers will be set to NULL.
See also:
Evas_GL_API
evas_gl_api_get
evas_gl_context_version_create
Since :
2.3.1

Creates and returns a new Evas GL context object (OpenGL-ES 2.0).

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
[in]share_ctxAn 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 evas_gl_context_version_create if you need an OpenGL-ES 1.1 context instead.

Returns:
The created context, otherwise NULL on failure
See also:
evas_gl_context_version_create
void evas_gl_context_destroy ( Evas_GL evas_gl,
Evas_GL_Context ctx 
)

Destroys the given Evas GL context object.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
[in]ctxThe given Evas GL context
See also:
evas_gl_context_create
evas_gl_context_version_create
Since :
2.3.1

Creates and returns a new Evas GL context object for OpenGL-ES 1.1 or 2.0.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
[in]share_ctxA context to share (can be NULL)
[in]versionMajor OpenGL-ES version number
Returns:
The created context, otherwise NULL on failure
Remarks:
The GL API bound to the created context must be queried using evas_gl_context_api_get (instead of evas_gl_api_get).
GLES 3.x is supported since 2.4.
See also:
Evas_GL_Context_Version
evas_gl_context_api_get
Since :
2.3.1

Returns the Evas GL context object in use or set by evas_gl_make_current.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
Returns:
The current context for the calling thread, or NULL in case of failure and when there is no current context in this thread.
Since :
2.3.1

Get current Evas GL.

Parameters:
[out]contextOptional return value for the current context
[out]surfaceOptional return value for the current surface
Returns:
The current Evas GL, i.e. the last Evas GL passed to evas_gl_make_current
See also:
evas_gl_make_current
Note:
This can be used to restore a previous context, for instance if you are writing a library that needs to work transparently with Evas GL, and may not have control over the other Evas GL objects.
Since (EFL) :
1.16
Since :
3.0f(2.3.1)

Returns the Evas GL surface object in use or set by evas_gl_make_current.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
Returns:
The current surface for the calling thread, or NULL in case of failure and when there is no current surface in this thread.
Remarks:
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 also:
evas_gl_make_current
Since :
2.3.1
int evas_gl_error_get ( Evas_GL evas_gl)

Returns the last error of any evas_gl function called in the current thread. Initially, the error is set to EVAS_GL_SUCCESS. A call to evas_gl_error_get resets the error to EVAS_GL_SUCCESS.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
Returns:
EVAS_GL_SUCCESS in case of no error, or any other EVAS_GL error code.
Remarks:
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.
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 :
2.3.1
void evas_gl_free ( Evas_GL evas_gl)

Frees an Evas_GL object.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object to destroy
See also:
evas_gl_new
Since :
2.3.1

Sets the given context as the current context for the given surface.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
[in]surfThe given Evas GL surface
[in]ctxThe given Evas GL context
Returns:
EINA_TRUE if successful, otherwise EINA_FALSE if not
Since :
2.3.1

Fills in the Native Surface information from a given Evas GL surface.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
[in]surfThe given Evas GL surface to retrieve the Native Surface information from
[out]nsThe native surface structure that the function fills in
Returns:
EINA_TRUE if successful, otherwise EINA_FALSE if not

This function can be called to later set this native surface as source of an Evas Object Image. Please refer to evas_object_image_native_surface_set.

Warning:
Applications should not rely on the information set in 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 :
2.3.1

Creates a new Evas_GL object and returns a handle for GL rendering with the EFL.

Since :
2.3.1
Parameters:
[in]eThe given Evas canvas to use
Returns:
The created Evas_GL object, or NULL in case of failure
Since :
2.3.1
Evas_GL_Surface* evas_gl_pbuffer_surface_create ( Evas_GL evas_gl,
Evas_GL_Config cfg,
int  w,
int  h,
const int *  attrib_list 
)

Create a pixel buffer surface.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
[in]cfgPixel format and configuration of the pixel buffer surface
[in]wRequested width of the buffer
[in]hRequested height of the buffer
[in]attrib_listAn optional list of attribute-value pairs terminated by attribute 0, can be NULL. Currently, no attributes are supported.
Returns:
The created GL surface object, otherwise NULL on failure
Remarks:
The surface must be released with evas_gl_surface_destroy.
If the color format in cfg is EVAS_GL_RGB_888 or EVAS_GL_RGBA_8888, then Evas will automatically generate a framebuffer attached to this PBuffer. Its properties can be queried using evas_gl_native_surface_get. If you want to attach an FBO yourself, or create a PBuffer surface only, please use the color format EVAS_GL_NO_FBO.
Creating a 1x1 PBuffer surface can be useful in order to call evas_gl_make_current() from another thread.
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 also:
evas_gl_surface_destroy
Since :
2.3.1
Evas_GL_Func evas_gl_proc_address_get ( Evas_GL evas_gl,
const char *  name 
)

Returns a extension function from OpenGL or the Evas_GL glue layer.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
[in]nameThe name of the function to return
Remarks:
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.
Returns:
A function pointer to the Evas_GL extension.
Since :
2.3.1
int evas_gl_rotation_get ( Evas_GL evas_gl)

Get the current rotation of the view, in degrees.

Since :
2.3.1
Remarks:
This function should be called in order to properly handle the current rotation of the view. It will always return 0 unless the option EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION has been set.
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.
Parameters:
[in]evas_glThe current Evas_GL object
Remarks:
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.
Returns:
0, 90, 180 or 270 depending on the Evas canvas' orientation.
See also:
EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION
Since :
2.3.1
const char* evas_gl_string_query ( Evas_GL evas_gl,
int  name 
)

Returns a pointer to a static, null-terminated string describing some aspect of Evas GL.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
[in]nameA symbolic constant, only EVAS_GL_EXTENSIONS is supported for now
Returns:
A string describing some aspect of Evas GL
Since :
2.3.1
Evas_GL_Surface* evas_gl_surface_create ( Evas_GL evas_gl,
Evas_GL_Config cfg,
int  w,
int  h 
)

Creates and returns a new Evas_GL_Surface object for GL Rendering.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
[in]cfgThe pixel format and configuration of the rendering surface
[in]wThe width of the surface
[in]hThe height of the surface
Returns:
The created GL surface object, otherwise NULL on failure
See also:
evas_gl_surface_destroy
Since :
2.3.1
void evas_gl_surface_destroy ( Evas_GL evas_gl,
Evas_GL_Surface surf 
)

Destroys an Evas GL Surface.

Since :
2.3.1
Parameters:
[in]evas_glThe given Evas_GL object
[in]surfThe given GL surface object
Remarks:
This function can also destroy pbuffer surfaces.
Eina_Bool evas_gl_surface_query ( Evas_GL evas_gl,
Evas_GL_Surface surface,
int  attribute,
void *  value 
)

Query a surface for its properties.

Since :
2.3.1
Parameters:
[in]evas_glThe current Evas_GL object
[in]surfaceAn Evas_GL_Surface surface to query
[in]attributeSpecifies the attribute to query.
[out]valueReturns the requested value (usually an int)
Remarks:
The currently accepted attributes are the following:
Returns:
EINA_TRUE in case of success, EINA_FALSE in case of error.
Since :
2.3.1