EvasGL: Add support for Evas GL 3.1

Summary:
2 wrapper functions are added.
(glFramebufferParameteri, glGetFramebufferParameteriv)

update gl2ext.h(generated 20160209) in evas_gl.h

Test Plan: OpenGL ES Conformance Test

Reviewers: jpeg

Subscribers: spacegrapher, wonsik, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3782
This commit is contained in:
DaeKwang Ryu 2016-07-04 20:30:50 +09:00 committed by Jean-Philippe Andre
parent 4ee015f755
commit 8b5d5a5a8d
4 changed files with 1354 additions and 11 deletions

File diff suppressed because it is too large Load Diff

View File

@ -750,6 +750,56 @@ _evgl_glDisable(GLenum cap)
glDisable(cap);
}
void
_evgl_glFramebufferParameteri(GLenum target, GLenum pname, GLint param)
{
EVGL_Resource *rsc;
EVGL_Context *ctx;
EINA_SAFETY_ON_NULL_RETURN(_gles3_api.glFramebufferParameteri);
if (!(rsc=_evgl_tls_resource_get()))
{
ERR("Unable to execute GL command. Error retrieving tls");
return;
}
if (!rsc->current_eng)
{
ERR("Unable to retrive Current Engine");
return;
}
ctx = rsc->current_ctx;
if (!ctx)
{
ERR("Unable to retrive Current Context");
return;
}
if (!_evgl_direct_enabled())
{
if (target == GL_DRAW_FRAMEBUFFER || target == GL_FRAMEBUFFER)
{
if (ctx->current_draw_fbo == 0)
{
SET_GL_ERROR(GL_INVALID_OPERATION);
return;
}
}
else if (target == GL_READ_FRAMEBUFFER)
{
if (ctx->current_read_fbo == 0)
{
SET_GL_ERROR(GL_INVALID_OPERATION);
return;
}
}
}
_gles3_api.glFramebufferParameteri(target, pname, param);
}
static void
_evgl_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
@ -1070,6 +1120,55 @@ _evgl_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GL
glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
}
void
_evgl_glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint* params)
{
EVGL_Resource *rsc;
EVGL_Context *ctx;
EINA_SAFETY_ON_NULL_RETURN(_gles3_api.glGetFramebufferParameteriv);
if (!(rsc=_evgl_tls_resource_get()))
{
ERR("Unable to execute GL command. Error retrieving tls");
return;
}
if (!rsc->current_eng)
{
ERR("Unable to retrive Current Engine");
return;
}
ctx = rsc->current_ctx;
if (!ctx)
{
ERR("Unable to retrive Current Context");
return;
}
if (!_evgl_direct_enabled())
{
if (target == GL_DRAW_FRAMEBUFFER || target == GL_FRAMEBUFFER)
{
if (ctx->current_draw_fbo == 0)
{
SET_GL_ERROR(GL_INVALID_OPERATION);
return;
}
}
else if (target == GL_READ_FRAMEBUFFER)
{
if (ctx->current_read_fbo == 0)
{
SET_GL_ERROR(GL_INVALID_OPERATION);
return;
}
}
}
_gles3_api.glGetFramebufferParameteriv(target, pname, params);
}
void
_evgl_glGetIntegerv(GLenum pname, GLint* params)
{
@ -2472,7 +2571,7 @@ _evgl_api_gles2_get(Evas_GL_API *funcs, Eina_Bool debug)
}
static void
_normal_gles3_api_get(Evas_GL_API *funcs)
_normal_gles3_api_get(Evas_GL_API *funcs, int minor_version)
{
if (!funcs) return;
funcs->version = EVAS_GL_API_VERSION;
@ -2731,11 +2830,84 @@ _normal_gles3_api_get(Evas_GL_API *funcs)
ORD(glVertexAttribIPointer);
ORD(glWaitSync);
if (minor_version > 0)
{
//GLES 3.1
ORD(glDispatchCompute);
ORD(glDispatchComputeIndirect);
ORD(glDrawArraysIndirect);
ORD(glDrawElementsIndirect);
ORD(glFramebufferParameteri);
ORD(glGetFramebufferParameteriv);
ORD(glGetProgramInterfaceiv);
ORD(glGetProgramResourceIndex);
ORD(glGetProgramResourceName);
ORD(glGetProgramResourceiv);
ORD(glGetProgramResourceLocation);
ORD(glUseProgramStages);
ORD(glActiveShaderProgram);
ORD(glCreateShaderProgramv);
ORD(glBindProgramPipeline);
ORD(glDeleteProgramPipelines);
ORD(glGenProgramPipelines);
ORD(glIsProgramPipeline);
ORD(glGetProgramPipelineiv);
ORD(glProgramUniform1i);
ORD(glProgramUniform2i);
ORD(glProgramUniform3i);
ORD(glProgramUniform4i);
ORD(glProgramUniform1ui);
ORD(glProgramUniform2ui);
ORD(glProgramUniform3ui);
ORD(glProgramUniform4ui);
ORD(glProgramUniform1f);
ORD(glProgramUniform2f);
ORD(glProgramUniform3f);
ORD(glProgramUniform4f);
ORD(glProgramUniform1iv);
ORD(glProgramUniform2iv);
ORD(glProgramUniform3iv);
ORD(glProgramUniform4iv);
ORD(glProgramUniform1uiv);
ORD(glProgramUniform2uiv);
ORD(glProgramUniform3uiv);
ORD(glProgramUniform4uiv);
ORD(glProgramUniform1fv);
ORD(glProgramUniform2fv);
ORD(glProgramUniform3fv);
ORD(glProgramUniform4fv);
ORD(glProgramUniformMatrix2fv);
ORD(glProgramUniformMatrix3fv);
ORD(glProgramUniformMatrix4fv);
ORD(glProgramUniformMatrix2x3fv);
ORD(glProgramUniformMatrix3x2fv);
ORD(glProgramUniformMatrix2x4fv);
ORD(glProgramUniformMatrix4x2fv);
ORD(glProgramUniformMatrix3x4fv);
ORD(glProgramUniformMatrix4x3fv);
ORD(glValidateProgramPipeline);
ORD(glGetProgramPipelineInfoLog);
ORD(glBindImageTexture);
ORD(glGetBooleani_v);
ORD(glMemoryBarrier);
ORD(glMemoryBarrierByRegion);
ORD(glTexStorage2DMultisample);
ORD(glGetMultisamplefv);
ORD(glSampleMaski);
ORD(glGetTexLevelParameteriv);
ORD(glGetTexLevelParameterfv);
ORD(glBindVertexBuffer);
ORD(glVertexAttribFormat);
ORD(glVertexAttribIFormat);
ORD(glVertexAttribBinding);
ORD(glVertexBindingDivisor);
}
#undef ORD
}
static void
_debug_gles3_api_get(Evas_GL_API *funcs)
_debug_gles3_api_get(Evas_GL_API *funcs, int minor_version)
{
if (!funcs) return;
funcs->version = EVAS_GL_API_VERSION;
@ -2991,12 +3163,86 @@ _debug_gles3_api_get(Evas_GL_API *funcs)
ORD(glVertexAttribI4uiv);
ORD(glVertexAttribIPointer);
ORD(glWaitSync);
if (minor_version > 0)
{
//GLES 3.1
ORD(glDispatchCompute);
ORD(glDispatchComputeIndirect);
ORD(glDrawArraysIndirect);
ORD(glDrawElementsIndirect);
ORD(glFramebufferParameteri);
ORD(glGetFramebufferParameteriv);
ORD(glGetProgramInterfaceiv);
ORD(glGetProgramResourceIndex);
ORD(glGetProgramResourceName);
ORD(glGetProgramResourceiv);
ORD(glGetProgramResourceLocation);
ORD(glUseProgramStages);
ORD(glActiveShaderProgram);
ORD(glCreateShaderProgramv);
ORD(glBindProgramPipeline);
ORD(glDeleteProgramPipelines);
ORD(glGenProgramPipelines);
ORD(glIsProgramPipeline);
ORD(glGetProgramPipelineiv);
ORD(glProgramUniform1i);
ORD(glProgramUniform2i);
ORD(glProgramUniform3i);
ORD(glProgramUniform4i);
ORD(glProgramUniform1ui);
ORD(glProgramUniform2ui);
ORD(glProgramUniform3ui);
ORD(glProgramUniform4ui);
ORD(glProgramUniform1f);
ORD(glProgramUniform2f);
ORD(glProgramUniform3f);
ORD(glProgramUniform4f);
ORD(glProgramUniform1iv);
ORD(glProgramUniform2iv);
ORD(glProgramUniform3iv);
ORD(glProgramUniform4iv);
ORD(glProgramUniform1uiv);
ORD(glProgramUniform2uiv);
ORD(glProgramUniform3uiv);
ORD(glProgramUniform4uiv);
ORD(glProgramUniform1fv);
ORD(glProgramUniform2fv);
ORD(glProgramUniform3fv);
ORD(glProgramUniform4fv);
ORD(glProgramUniformMatrix2fv);
ORD(glProgramUniformMatrix3fv);
ORD(glProgramUniformMatrix4fv);
ORD(glProgramUniformMatrix2x3fv);
ORD(glProgramUniformMatrix3x2fv);
ORD(glProgramUniformMatrix2x4fv);
ORD(glProgramUniformMatrix4x2fv);
ORD(glProgramUniformMatrix3x4fv);
ORD(glProgramUniformMatrix4x3fv);
ORD(glValidateProgramPipeline);
ORD(glGetProgramPipelineInfoLog);
ORD(glBindImageTexture);
ORD(glGetBooleani_v);
ORD(glMemoryBarrier);
ORD(glMemoryBarrierByRegion);
ORD(glTexStorage2DMultisample);
ORD(glGetMultisamplefv);
ORD(glSampleMaski);
ORD(glGetTexLevelParameteriv);
ORD(glGetTexLevelParameterfv);
ORD(glBindVertexBuffer);
ORD(glVertexAttribFormat);
ORD(glVertexAttribIFormat);
ORD(glVertexAttribBinding);
ORD(glVertexBindingDivisor);
}
#undef ORD
}
static Eina_Bool
_evgl_load_gles3_apis(void *dl_handle, Evas_GL_API *funcs)
_evgl_load_gles3_apis(void *dl_handle, Evas_GL_API *funcs, int minor_version)
{
if (!dl_handle) return EINA_FALSE;
@ -3116,6 +3362,80 @@ _evgl_load_gles3_apis(void *dl_handle, Evas_GL_API *funcs)
ORD(glVertexAttribI4uiv);
ORD(glVertexAttribIPointer);
ORD(glWaitSync);
if (minor_version > 0)
{
//GLES 3.1
ORD(glDispatchCompute);
ORD(glDispatchComputeIndirect);
ORD(glDrawArraysIndirect);
ORD(glDrawElementsIndirect);
ORD(glFramebufferParameteri);
ORD(glGetFramebufferParameteriv);
ORD(glGetProgramInterfaceiv);
ORD(glGetProgramResourceIndex);
ORD(glGetProgramResourceName);
ORD(glGetProgramResourceiv);
ORD(glGetProgramResourceLocation);
ORD(glUseProgramStages);
ORD(glActiveShaderProgram);
ORD(glCreateShaderProgramv);
ORD(glBindProgramPipeline);
ORD(glDeleteProgramPipelines);
ORD(glGenProgramPipelines);
ORD(glIsProgramPipeline);
ORD(glGetProgramPipelineiv);
ORD(glProgramUniform1i);
ORD(glProgramUniform2i);
ORD(glProgramUniform3i);
ORD(glProgramUniform4i);
ORD(glProgramUniform1ui);
ORD(glProgramUniform2ui);
ORD(glProgramUniform3ui);
ORD(glProgramUniform4ui);
ORD(glProgramUniform1f);
ORD(glProgramUniform2f);
ORD(glProgramUniform3f);
ORD(glProgramUniform4f);
ORD(glProgramUniform1iv);
ORD(glProgramUniform2iv);
ORD(glProgramUniform3iv);
ORD(glProgramUniform4iv);
ORD(glProgramUniform1uiv);
ORD(glProgramUniform2uiv);
ORD(glProgramUniform3uiv);
ORD(glProgramUniform4uiv);
ORD(glProgramUniform1fv);
ORD(glProgramUniform2fv);
ORD(glProgramUniform3fv);
ORD(glProgramUniform4fv);
ORD(glProgramUniformMatrix2fv);
ORD(glProgramUniformMatrix3fv);
ORD(glProgramUniformMatrix4fv);
ORD(glProgramUniformMatrix2x3fv);
ORD(glProgramUniformMatrix3x2fv);
ORD(glProgramUniformMatrix2x4fv);
ORD(glProgramUniformMatrix4x2fv);
ORD(glProgramUniformMatrix3x4fv);
ORD(glProgramUniformMatrix4x3fv);
ORD(glValidateProgramPipeline);
ORD(glGetProgramPipelineInfoLog);
ORD(glBindImageTexture);
ORD(glGetBooleani_v);
ORD(glMemoryBarrier);
ORD(glMemoryBarrierByRegion);
ORD(glTexStorage2DMultisample);
ORD(glGetMultisamplefv);
ORD(glSampleMaski);
ORD(glGetTexLevelParameteriv);
ORD(glGetTexLevelParameterfv);
ORD(glBindVertexBuffer);
ORD(glVertexAttribFormat);
ORD(glVertexAttribIFormat);
ORD(glVertexAttribBinding);
ORD(glVertexBindingDivisor);
}
#undef ORD
return EINA_TRUE;
}
@ -3123,7 +3443,7 @@ _evgl_load_gles3_apis(void *dl_handle, Evas_GL_API *funcs)
static Eina_Bool
_evgl_gles3_api_init(void)
_evgl_gles3_api_init(int minor_version)
{
static Eina_Bool _initialized = EINA_FALSE;
if (_initialized) return EINA_TRUE;
@ -3155,7 +3475,7 @@ _evgl_gles3_api_init(void)
return EINA_FALSE;
}
if (!_evgl_load_gles3_apis(_gles3_handle, &_gles3_api))
if (!_evgl_load_gles3_apis(_gles3_handle, &_gles3_api, minor_version))
{
return EINA_FALSE;
}
@ -3168,13 +3488,22 @@ _evgl_gles3_api_init(void)
void
_evgl_api_gles3_get(Evas_GL_API *funcs, Eina_Bool debug)
{
if (!_evgl_gles3_api_init())
const char *ret = (const char *) glGetString(GL_VERSION);
int minor_version = ret[12] - '0';
if (minor_version > 9 || minor_version < 0)
{
ERR("OpenGL ES version is invalid.");
return;
}
if (!_evgl_gles3_api_init(minor_version))
return;
if (debug)
_debug_gles3_api_get(funcs);
_debug_gles3_api_get(funcs, minor_version);
else
_normal_gles3_api_get(funcs);
_normal_gles3_api_get(funcs, minor_version);
if (evgl_engine->direct_scissor_off)
_direct_scissor_off_api_get(funcs);

View File

@ -549,6 +549,42 @@ _evgl_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenu
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
//3.X ext bodies
#define _EVASGL_EXT_CHECK_SUPPORT(name)
#define _EVASGL_EXT_DISCARD_SUPPORT()
#define _EVASGL_EXT_BEGIN(name)
#define _EVASGL_EXT_END()
#define _EVASGL_EXT_DRVNAME(name)
#define _EVASGL_EXT_DRVNAME_PRIVATE(name)
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param1, param2) \
static ret evgl_gles3_##name param1 { EVGL_FUNC_BEGIN(); return EXT_FUNC_GLES3(name) param2; }
#define _EVASGL_EXT_FUNCTION_END()
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN()
#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END()
#define _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN(ret, name, param1, param2)
#define _EVASGL_EXT_FUNCTION_PRIVATE_END()
#define _EVASGL_EXT_FUNCTION_DRVFUNC(name)
#define _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR(name)
#include "evas_gl_api_ext_def.h"
#undef _EVASGL_EXT_CHECK_SUPPORT
#undef _EVASGL_EXT_DISCARD_SUPPORT
#undef _EVASGL_EXT_BEGIN
#undef _EVASGL_EXT_END
#undef _EVASGL_EXT_DRVNAME
#undef _EVASGL_EXT_DRVNAME_PRIVATE
#undef _EVASGL_EXT_DRVNAME_DESKTOP
#undef _EVASGL_EXT_FUNCTION_BEGIN
#undef _EVASGL_EXT_FUNCTION_END
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END
#undef _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN
#undef _EVASGL_EXT_FUNCTION_PRIVATE_END
#undef _EVASGL_EXT_FUNCTION_DRVFUNC
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
// 0: not initialized,
// 1: GLESv2 initialized,
// 3: GLESv1 and GLESv2 initialized,
@ -1489,7 +1525,7 @@ evgl_api_gles3_ext_get(Evas_GL_API *gl_funcs, void *getproc, const char *glueext
}
}
#define ORD(f) EVAS_API_OVERRIDE(f, gl_funcs, evgl_)
#define ORD(f) EVAS_API_OVERRIDE(f, gl_funcs, evgl_gles3_)
/////////////////////////////////////////////////////////////////////////////////////////////////////
// Extension HEADER

View File

@ -1,6 +1,9 @@
_EVASGL_FUNCTION_PRIVATE_BEGIN_VOID( glDrawBuffers, (GLsizei n, const GLenum *bufs), (n, bufs))
_EVASGL_FUNCTION_PRIVATE_BEGIN(const GLubyte *, glGetStringi, (GLenum name, GLuint index), (name, index))
_EVASGL_FUNCTION_PRIVATE_BEGIN_VOID( glReadBuffer, (GLenum src), (src))
//GLES 3.1
_EVASGL_FUNCTION_PRIVATE_BEGIN_VOID( glFramebufferParameteri, (GLenum target, GLenum pname, GLint param), (target, pname, param))
_EVASGL_FUNCTION_PRIVATE_BEGIN_VOID( glGetFramebufferParameteriv, (GLenum target, GLenum pname, GLint *params), (target, pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glBeginQuery, (GLenum target, GLuint id), (target, id))
_EVASGL_FUNCTION_BEGIN_VOID( glBeginTransformFeedback, (GLenum primitiveMode), (primitiveMode))
@ -103,3 +106,72 @@ _EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribI4ui, (GLuint index, GLuint v0, GLuin
_EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribI4uiv, (GLuint index, const GLuint *v), (index, v))
_EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribIPointer, (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (index, size, type, stride, pointer))
_EVASGL_FUNCTION_BEGIN_VOID( glWaitSync, (GLsync sync, GLbitfield flags, EvasGLuint64 timeout), (sync, flags, timeout))
//GLES 3.1
_EVASGL_FUNCTION_BEGIN_VOID( glDispatchCompute, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z), (num_groups_x, num_groups_y, num_groups_z))
_EVASGL_FUNCTION_BEGIN_VOID( glDispatchComputeIndirect, (GLintptr indirect), (indirect))
_EVASGL_FUNCTION_BEGIN_VOID( glDrawArraysIndirect, (GLenum mode, const void *indirect), (mode, indirect))
_EVASGL_FUNCTION_BEGIN_VOID( glDrawElementsIndirect, (GLenum mode, GLenum type, const void *indirect), (mode, type, indirect))
_EVASGL_FUNCTION_BEGIN_VOID( glGetProgramInterfaceiv, (GLuint program, GLenum programInterface, GLenum pname, GLint *params), (program, programInterface, pname, params))
_EVASGL_FUNCTION_BEGIN(GLuint, glGetProgramResourceIndex, (GLuint program, GLenum programInterface, const GLchar *name), (program, programInterface, name))
_EVASGL_FUNCTION_BEGIN_VOID( glGetProgramResourceName, (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name), (program, programInterface, index, bufSize, length, name))
_EVASGL_FUNCTION_BEGIN_VOID( glGetProgramResourceiv, (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params), (program, programInterface, index, propCount, props, bufSize, length, params))
_EVASGL_FUNCTION_BEGIN(GLuint, glGetProgramResourceLocation, (GLuint program, GLenum programInterface, const GLchar *name), (program, programInterface, name))
_EVASGL_FUNCTION_BEGIN_VOID( glUseProgramStages, (GLuint pipeline, GLbitfield stages, GLuint program), (pipeline, stages, program))
_EVASGL_FUNCTION_BEGIN_VOID( glActiveShaderProgram, (GLuint pipeline, GLuint program), (pipeline, program))
_EVASGL_FUNCTION_BEGIN(GLuint, glCreateShaderProgramv, (GLenum type, GLsizei count, const GLchar *const*strings), (type, count, strings))
_EVASGL_FUNCTION_BEGIN_VOID( glBindProgramPipeline, (GLuint pipeline), (pipeline))
_EVASGL_FUNCTION_BEGIN_VOID( glDeleteProgramPipelines, (GLsizei n, const GLuint *pipelines), (n, pipelines))
_EVASGL_FUNCTION_BEGIN_VOID( glGenProgramPipelines, (GLsizei n, GLuint *pipelines), (n, pipelines))
_EVASGL_FUNCTION_BEGIN(GLboolean, glIsProgramPipeline, (GLuint pipeline), (pipeline))
_EVASGL_FUNCTION_BEGIN_VOID( glGetProgramPipelineiv, (GLuint pipeline, GLenum pname, GLint *params), (pipeline, pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1i, (GLuint program, GLint location, GLint v0), (program, location, v0))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2i, (GLuint program, GLint location, GLint v0, GLint v1), (program, location, v0, v1))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2), (program, location, v0, v1, v2))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (program, location, v0, v1, v2, v3))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1ui, (GLuint program, GLint location, GLuint v0), (program, location, v0))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2ui, (GLuint program, GLint location, GLuint v0, GLuint v1), (program, location, v0, v1))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2), (program, location, v0, v1, v2))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (program, location, v0, v1, v2, v3))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1f, (GLuint program, GLint location, GLfloat v0), (program, location, v0))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2f, (GLuint program, GLint location, GLfloat v0, GLfloat v1) ,(program, location, v0, v1))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (program, location, v0, v1, v2))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (program, location, v0, v1, v2, v3))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1iv, (GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2iv, (GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3iv, (GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4iv, (GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix2x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix3x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix2x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix4x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix3x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value))
_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix4x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value))
_EVASGL_FUNCTION_BEGIN_VOID( glValidateProgramPipeline, (GLuint pipeline), (pipeline))
_EVASGL_FUNCTION_BEGIN_VOID( glGetProgramPipelineInfoLog, (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog), (pipeline, bufSize, length, infoLog))
_EVASGL_FUNCTION_BEGIN_VOID( glBindImageTexture, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format), (unit, texture, level, layered, layer, access, format))
_EVASGL_FUNCTION_BEGIN_VOID( glGetBooleani_v, (GLenum target, GLuint index, GLboolean *data), (target, index, data))
_EVASGL_FUNCTION_BEGIN_VOID( glMemoryBarrier, (GLbitfield barriers), (barriers))
_EVASGL_FUNCTION_BEGIN_VOID( glMemoryBarrierByRegion, (GLbitfield barriers), (barriers))
_EVASGL_FUNCTION_BEGIN_VOID( glTexStorage2DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations), (target, samples, internalformat, width, height, fixedsamplelocations))
_EVASGL_FUNCTION_BEGIN_VOID( glGetMultisamplefv, (GLenum pname, GLuint index, GLfloat *val), (pname, index, val))
_EVASGL_FUNCTION_BEGIN_VOID( glSampleMaski, (GLuint maskNumber, GLbitfield mask), (maskNumber, mask))
_EVASGL_FUNCTION_BEGIN_VOID( glGetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint *params), (target, level, pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glGetTexLevelParameterfv, (GLenum target, GLint level, GLenum pname, GLfloat *params), (target, level, pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glBindVertexBuffer, (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (bindingindex, buffer, offset, stride))
_EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribFormat, (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset), (attribindex, size, type, normalized, relativeoffset))
_EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribIFormat, (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (attribindex, size, type, relativeoffset))
_EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribBinding, (GLuint attribindex, GLuint bindingindex), (attribindex, bindingindex))
_EVASGL_FUNCTION_BEGIN_VOID( glVertexBindingDivisor, (GLuint bindingindex, GLuint divisor), (bindingindex, divisor))