evas_gl: implement EvasGL ES 3.2

add a wrapper function for glFramebufferTexture.
some bugs were fixed.
I tested on Ubuntu 14.04(x64) and nVidia 375 driver with VK-GL-CTS

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D4831
This commit is contained in:
Daekwang Ryu 2017-05-17 05:46:51 +00:00 committed by Cedric BAIL
parent 1c5fa59ee8
commit cf818a84be
3 changed files with 835 additions and 327 deletions

View File

@ -4781,7 +4781,220 @@ typedef struct __GLsync* GLsync;
#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5
#endif
/* OpenGLES 3.2 */
#ifndef __gl32_h_
#define __gl32_h_ 1
typedef void (*GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
#define GL_MULTISAMPLE_LINE_WIDTH_RANGE 0x9381
#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY 0x9382
#define GL_MULTIPLY 0x9294
#define GL_SCREEN 0x9295
#define GL_OVERLAY 0x9296
#define GL_DARKEN 0x9297
#define GL_LIGHTEN 0x9298
#define GL_COLORDODGE 0x9299
#define GL_COLORBURN 0x929A
#define GL_HARDLIGHT 0x929B
#define GL_SOFTLIGHT 0x929C
#define GL_DIFFERENCE 0x929E
#define GL_EXCLUSION 0x92A0
#define GL_HSL_HUE 0x92AD
#define GL_HSL_SATURATION 0x92AE
#define GL_HSL_COLOR 0x92AF
#define GL_HSL_LUMINOSITY 0x92B0
#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
#define GL_DEBUG_SOURCE_API 0x8246
#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
#define GL_DEBUG_SOURCE_APPLICATION 0x824A
#define GL_DEBUG_SOURCE_OTHER 0x824B
#define GL_DEBUG_TYPE_ERROR 0x824C
#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
#define GL_DEBUG_TYPE_PORTABILITY 0x824F
#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
#define GL_DEBUG_TYPE_OTHER 0x8251
#define GL_DEBUG_TYPE_MARKER 0x8268
#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
#define GL_DEBUG_TYPE_POP_GROUP 0x826A
#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
#define GL_BUFFER 0x82E0
#define GL_SHADER 0x82E1
#define GL_PROGRAM 0x82E2
#define GL_VERTEX_ARRAY 0x8074
#define GL_QUERY 0x82E3
#define GL_PROGRAM_PIPELINE 0x82E4
#define GL_SAMPLER 0x82E6
#define GL_MAX_LABEL_LENGTH 0x82E8
#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
#define GL_DEBUG_LOGGED_MESSAGES 0x9145
#define GL_DEBUG_SEVERITY_HIGH 0x9146
#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
#define GL_DEBUG_SEVERITY_LOW 0x9148
#define GL_DEBUG_OUTPUT 0x92E0
#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
#define GL_STACK_OVERFLOW 0x0503
#define GL_STACK_UNDERFLOW 0x0504
#define GL_GEOMETRY_SHADER 0x8DD9
#define GL_GEOMETRY_SHADER_BIT 0x00000004
#define GL_GEOMETRY_VERTICES_OUT 0x8916
#define GL_GEOMETRY_INPUT_TYPE 0x8917
#define GL_GEOMETRY_OUTPUT_TYPE 0x8918
#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
#define GL_LAYER_PROVOKING_VERTEX 0x825E
#define GL_LINES_ADJACENCY 0x000A
#define GL_LINE_STRIP_ADJACENCY 0x000B
#define GL_TRIANGLES_ADJACENCY 0x000C
#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D
#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C
#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123
#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0
#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5
#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
#define GL_FIRST_VERTEX_CONVENTION 0x8E4D
#define GL_LAST_VERTEX_CONVENTION 0x8E4E
#define GL_UNDEFINED_VERTEX 0x8260
#define GL_PRIMITIVES_GENERATED 0x8C87
#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317
#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
#define GL_PRIMITIVE_BOUNDING_BOX 0x92BE
#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004
#define GL_CONTEXT_FLAGS 0x821E
#define GL_LOSE_CONTEXT_ON_RESET 0x8252
#define GL_GUILTY_CONTEXT_RESET 0x8253
#define GL_INNOCENT_CONTEXT_RESET 0x8254
#define GL_UNKNOWN_CONTEXT_RESET 0x8255
#define GL_RESET_NOTIFICATION_STRATEGY 0x8256
#define GL_NO_RESET_NOTIFICATION 0x8261
#define GL_CONTEXT_LOST 0x0507
#define GL_SAMPLE_SHADING 0x8C36
#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37
#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
#define GL_PATCHES 0x000E
#define GL_PATCH_VERTICES 0x8E72
#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
#define GL_TESS_GEN_MODE 0x8E76
#define GL_TESS_GEN_SPACING 0x8E77
#define GL_TESS_GEN_VERTEX_ORDER 0x8E78
#define GL_TESS_GEN_POINT_MODE 0x8E79
#define GL_ISOLINES 0x8E7A
#define GL_QUADS 0x0007
#define GL_FRACTIONAL_ODD 0x8E7B
#define GL_FRACTIONAL_EVEN 0x8E7C
#define GL_MAX_PATCH_VERTICES 0x8E7D
#define GL_MAX_TESS_GEN_LEVEL 0x8E7E
#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
#define GL_IS_PER_PATCH 0x92E7
#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
#define GL_TESS_CONTROL_SHADER 0x8E88
#define GL_TESS_EVALUATION_SHADER 0x8E87
#define GL_TESS_CONTROL_SHADER_BIT 0x00000008
#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010
#define GL_TEXTURE_BORDER_COLOR 0x1004
#define GL_CLAMP_TO_BORDER 0x812D
#define GL_TEXTURE_BUFFER 0x8C2A
#define GL_TEXTURE_BUFFER_BINDING 0x8C2A
#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B
#define GL_TEXTURE_BINDING_BUFFER 0x8C2C
#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
#define GL_SAMPLER_BUFFER 0x8DC2
#define GL_INT_SAMPLER_BUFFER 0x8DD0
#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8
#define GL_IMAGE_BUFFER 0x9051
#define GL_INT_IMAGE_BUFFER 0x905C
#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067
#define GL_TEXTURE_BUFFER_OFFSET 0x919D
#define GL_TEXTURE_BUFFER_SIZE 0x919E
#define GL_COMPRESSED_RGBA_ASTC_4x4 0x93B0
#define GL_COMPRESSED_RGBA_ASTC_5x4 0x93B1
#define GL_COMPRESSED_RGBA_ASTC_5x5 0x93B2
#define GL_COMPRESSED_RGBA_ASTC_6x5 0x93B3
#define GL_COMPRESSED_RGBA_ASTC_6x6 0x93B4
#define GL_COMPRESSED_RGBA_ASTC_8x5 0x93B5
#define GL_COMPRESSED_RGBA_ASTC_8x6 0x93B6
#define GL_COMPRESSED_RGBA_ASTC_8x8 0x93B7
#define GL_COMPRESSED_RGBA_ASTC_10x5 0x93B8
#define GL_COMPRESSED_RGBA_ASTC_10x6 0x93B9
#define GL_COMPRESSED_RGBA_ASTC_10x8 0x93BA
#define GL_COMPRESSED_RGBA_ASTC_10x10 0x93BB
#define GL_COMPRESSED_RGBA_ASTC_12x10 0x93BC
#define GL_COMPRESSED_RGBA_ASTC_12x12 0x93BD
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4 0x93D0
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4 0x93D1
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5 0x93D2
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5 0x93D3
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6 0x93D4
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5 0x93D5
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6 0x93D6
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8 0x93D7
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5 0x93D8
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6 0x93D9
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8 0x93DA
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10 0x93DB
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10 0x93DC
#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 0x93DD
#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054
#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F
#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102
#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B
#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
#endif
/*
@ -4927,8 +5140,9 @@ typedef unsigned long long EvasGLTime;
* 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
*/
#define EVAS_GL_API_VERSION 5
#define EVAS_GL_API_VERSION 6
/**
* @brief The Evas GL API
@ -5855,6 +6069,63 @@ EvasGLImage *img = glapi->evasglCreateImageForContext
void (*glVertexBindingDivisor) (GLuint bindingindex, GLuint divisor);
/** @} */
/**
* @anchor gles3.2
* @name OpenGL-ES 3.2.
*
* Evas_GL_API version 6.
*
* The following functions are supported in all OpenGL-ES 3.2 contexts.
* @{
*/
/* This defines shows that Evas_GL_API supports GLES3.2 APIs */
void (*glBlendBarrier) (void);
void (*glCopyImageSubData) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
void (*glDebugMessageControl) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
void (*glDebugMessageInsert) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
void (*glDebugMessageCallback) (GLDEBUGPROC callback, const void *userParam);
GLuint (*glGetDebugMessageLog) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
void (*glPushDebugGroup) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
void (*glPopDebugGroup) (void);
void (*glObjectLabel) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
void (*glGetObjectLabel) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
void (*glObjectPtrLabel) (const void *ptr, GLsizei length, const GLchar *label);
void (*glGetObjectPtrLabel) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
//void (*glGetPointerv) (GLenum pname, void **params);
void (*glEnablei) (GLenum target, GLuint index);
void (*glDisablei) (GLenum target, GLuint index);
void (*glBlendEquationi) (GLuint buf, GLenum mode);
void (*glBlendEquationSeparatei) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
void (*glBlendFunci) (GLuint buf, GLenum src, GLenum dst);
void (*glBlendFuncSeparatei) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
void (*glColorMaski) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
GLboolean (*glIsEnabledi) (GLenum target, GLuint index);
void (*glDrawElementsBaseVertex) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
void (*glDrawRangeElementsBaseVertex) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
void (*glDrawElementsInstancedBaseVertex) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
void (*glFramebufferTexture) (GLenum target, GLenum attachment, GLuint texture, GLint level);
void (*glPrimitiveBoundingBox) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
GLenum (*glGetGraphicsResetStatus) (void);
void (*glReadnPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
void (*glGetnUniformfv) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
void (*glGetnUniformiv) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
void (*glGetnUniformuiv) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
void (*glMinSampleShading) (GLfloat value);
void (*glPatchParameteri) (GLenum pname, GLint value);
void (*glTexParameterIiv) (GLenum target, GLenum pname, const GLint *params);
void (*glTexParameterIuiv) (GLenum target, GLenum pname, const GLuint *params);
void (*glGetTexParameterIiv) (GLenum target, GLenum pname, GLint *params);
void (*glGetTexParameterIuiv) (GLenum target, GLenum pname, GLuint *params);
void (*glSamplerParameterIiv) (GLuint sampler, GLenum pname, const GLint *param);
void (*glSamplerParameterIuiv) (GLuint sampler, GLenum pname, const GLuint *param);
void (*glGetSamplerParameterIiv) (GLuint sampler, GLenum pname, GLint *params);
void (*glGetSamplerParameterIuiv) (GLuint sampler, GLenum pname, GLuint *params);
void (*glTexBuffer) (GLenum target, GLenum internalformat, GLuint buffer);
void (*glTexBufferRange) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
void (*glTexStorage3DMultisample) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
/** @} */
/* Future calls will be added down here for expansion, when adding
* new APIs here, please bump the struct version number (together with
* the EFL version bump).

View File

@ -800,6 +800,66 @@ _evgl_glFramebufferParameteri(GLenum target, GLenum pname, GLint param)
_gles3_api.glFramebufferParameteri(target, pname, param);
}
static void
_evgl_glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level)
{
EVGL_Resource *rsc;
EVGL_Context *ctx;
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 (ctx->version == EVAS_GL_GLES_2_X)
{
if (target == GL_FRAMEBUFFER && ctx->current_fbo == 0)
{
SET_GL_ERROR(GL_INVALID_OPERATION);
return;
}
}
else if (ctx->version == EVAS_GL_GLES_3_X)
{
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.glFramebufferTexture(target, attachment, texture, level);
}
static void
_evgl_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
@ -2724,114 +2784,54 @@ _normal_gles3_api_get(Evas_GL_API *funcs, int minor_version)
// GLES 3.0 NEW APIs
#define ORD(name) EVAS_API_OVERRIDE(name, funcs, evgl_gles3_)
ORD(glBeginQuery);
ORD(glBeginTransformFeedback);
ORD(glBindBufferBase);
ORD(glBindBufferRange);
ORD(glBindSampler);
ORD(glBindTransformFeedback);
ORD(glBindVertexArray);
ORD(glBlitFramebuffer);
ORD(glClearBufferfi);
ORD(glClearBufferfv);
ORD(glClearBufferiv);
ORD(glClearBufferuiv);
ORD(glClientWaitSync);
ORD(glCompressedTexImage3D);
ORD(glCompressedTexSubImage3D);
ORD(glCopyBufferSubData);
ORD(glCopyTexSubImage3D);
ORD(glDeleteQueries);
ORD(glDeleteSamplers);
ORD(glDeleteSync);
ORD(glDeleteTransformFeedbacks);
ORD(glDeleteVertexArrays);
ORD(glDrawArraysInstanced);
ORD(glDrawBuffers);
ORD(glDrawElementsInstanced);
ORD(glDrawRangeElements);
ORD(glEndQuery);
ORD(glEndTransformFeedback);
ORD(glFenceSync);
ORD(glFlushMappedBufferRange);
ORD(glFramebufferTextureLayer);
ORD(glGenQueries);
ORD(glGenSamplers);
ORD(glGenTransformFeedbacks);
ORD(glGenVertexArrays);
ORD(glGetActiveUniformBlockiv);
ORD(glGetActiveUniformBlockName);
ORD(glGetActiveUniformsiv);
ORD(glGetBufferParameteri64v);
ORD(glGetBufferPointerv);
ORD(glGetFragDataLocation);
ORD(glGetInteger64i_v);
ORD(glGetInteger64v);
ORD(glGetIntegeri_v);
ORD(glGetInternalformativ);
ORD(glGetProgramBinary);
ORD(glGetQueryiv);
ORD(glGetQueryObjectuiv);
ORD(glGetSamplerParameterfv);
ORD(glGetSamplerParameteriv);
ORD(glGetStringi);
ORD(glGetSynciv);
ORD(glGetTransformFeedbackVarying);
ORD(glGetUniformBlockIndex);
ORD(glGetUniformIndices);
ORD(glGetUniformuiv);
ORD(glGetVertexAttribIiv);
ORD(glGetVertexAttribIuiv);
ORD(glInvalidateFramebuffer);
ORD(glInvalidateSubFramebuffer);
ORD(glIsQuery);
ORD(glIsSampler);
ORD(glIsSync);
ORD(glIsTransformFeedback);
ORD(glIsVertexArray);
ORD(glMapBufferRange);
ORD(glPauseTransformFeedback);
ORD(glProgramBinary);
ORD(glProgramParameteri);
ORD(glReadBuffer);
ORD(glRenderbufferStorageMultisample);
ORD(glResumeTransformFeedback);
ORD(glSamplerParameterf);
ORD(glSamplerParameterfv);
ORD(glSamplerParameteri);
ORD(glSamplerParameteriv);
ORD(glTexImage3D);
ORD(glTexStorage2D);
ORD(glTexStorage3D);
ORD(glTexSubImage3D);
ORD(glTransformFeedbackVaryings);
ORD(glUniform1ui);
ORD(glUniform1uiv);
ORD(glUniform2ui);
ORD(glUniform2uiv);
ORD(glUniform3ui);
ORD(glUniform3uiv);
ORD(glUniform4ui);
ORD(glUniform4uiv);
ORD(glUniformBlockBinding);
ORD(glUniformMatrix2x3fv);
ORD(glUniformMatrix3x2fv);
ORD(glUniformMatrix2x4fv);
ORD(glUniformMatrix4x2fv);
ORD(glUniformMatrix3x4fv);
ORD(glUniformMatrix4x3fv);
ORD(glUnmapBuffer);
ORD(glVertexAttribDivisor);
ORD(glVertexAttribI4i);
ORD(glVertexAttribI4iv);
ORD(glVertexAttribI4ui);
ORD(glVertexAttribI4uiv);
ORD(glVertexAttribIPointer);
ORD(glWaitSync);
if (minor_version > 0)
switch (minor_version)
{
//GLES 3.1
case 2:
ORD(glBlendBarrier);
ORD(glCopyImageSubData);
ORD(glDebugMessageControl);
ORD(glDebugMessageInsert);
ORD(glDebugMessageCallback);
ORD(glGetDebugMessageLog);
ORD(glPushDebugGroup);
ORD(glPopDebugGroup);
ORD(glObjectLabel);
ORD(glGetObjectLabel);
ORD(glObjectPtrLabel);
ORD(glGetObjectPtrLabel);
ORD(glGetPointerv);
ORD(glEnablei);
ORD(glDisablei);
ORD(glBlendEquationi);
ORD(glBlendEquationSeparatei);
ORD(glBlendFunci);
ORD(glBlendFuncSeparatei);
ORD(glColorMaski);
ORD(glIsEnabledi);
ORD(glDrawElementsBaseVertex);
ORD(glDrawRangeElementsBaseVertex);
ORD(glDrawElementsInstancedBaseVertex);
ORD(glFramebufferTexture);
ORD(glPrimitiveBoundingBox);
ORD(glGetGraphicsResetStatus);
ORD(glReadnPixels);
ORD(glGetnUniformfv);
ORD(glGetnUniformiv);
ORD(glGetnUniformuiv);
ORD(glMinSampleShading);
ORD(glPatchParameteri);
ORD(glTexParameterIiv);
ORD(glTexParameterIuiv);
ORD(glGetTexParameterIiv);
ORD(glGetTexParameterIuiv);
ORD(glSamplerParameterIiv);
ORD(glSamplerParameterIuiv);
ORD(glGetSamplerParameterIiv);
ORD(glGetSamplerParameterIuiv);
ORD(glTexBuffer);
ORD(glTexBufferRange);
ORD(glTexStorage3DMultisample);
case 1:
ORD(glDispatchCompute);
ORD(glDispatchComputeIndirect);
ORD(glDrawArraysIndirect);
@ -2900,6 +2900,111 @@ _normal_gles3_api_get(Evas_GL_API *funcs, int minor_version)
ORD(glVertexAttribIFormat);
ORD(glVertexAttribBinding);
ORD(glVertexBindingDivisor);
case 0:
ORD(glBeginQuery);
ORD(glBeginTransformFeedback);
ORD(glBindBufferBase);
ORD(glBindBufferRange);
ORD(glBindSampler);
ORD(glBindTransformFeedback);
ORD(glBindVertexArray);
ORD(glBlitFramebuffer);
ORD(glClearBufferfi);
ORD(glClearBufferfv);
ORD(glClearBufferiv);
ORD(glClearBufferuiv);
ORD(glClientWaitSync);
ORD(glCompressedTexImage3D);
ORD(glCompressedTexSubImage3D);
ORD(glCopyBufferSubData);
ORD(glCopyTexSubImage3D);
ORD(glDeleteQueries);
ORD(glDeleteSamplers);
ORD(glDeleteSync);
ORD(glDeleteTransformFeedbacks);
ORD(glDeleteVertexArrays);
ORD(glDrawArraysInstanced);
ORD(glDrawBuffers);
ORD(glDrawElementsInstanced);
ORD(glDrawRangeElements);
ORD(glEndQuery);
ORD(glEndTransformFeedback);
ORD(glFenceSync);
ORD(glFlushMappedBufferRange);
ORD(glFramebufferTextureLayer);
ORD(glGenQueries);
ORD(glGenSamplers);
ORD(glGenTransformFeedbacks);
ORD(glGenVertexArrays);
ORD(glGetActiveUniformBlockiv);
ORD(glGetActiveUniformBlockName);
ORD(glGetActiveUniformsiv);
ORD(glGetBufferParameteri64v);
ORD(glGetBufferPointerv);
ORD(glGetFragDataLocation);
ORD(glGetInteger64i_v);
ORD(glGetInteger64v);
ORD(glGetIntegeri_v);
ORD(glGetInternalformativ);
ORD(glGetProgramBinary);
ORD(glGetQueryiv);
ORD(glGetQueryObjectuiv);
ORD(glGetSamplerParameterfv);
ORD(glGetSamplerParameteriv);
ORD(glGetStringi);
ORD(glGetSynciv);
ORD(glGetTransformFeedbackVarying);
ORD(glGetUniformBlockIndex);
ORD(glGetUniformIndices);
ORD(glGetUniformuiv);
ORD(glGetVertexAttribIiv);
ORD(glGetVertexAttribIuiv);
ORD(glInvalidateFramebuffer);
ORD(glInvalidateSubFramebuffer);
ORD(glIsQuery);
ORD(glIsSampler);
ORD(glIsSync);
ORD(glIsTransformFeedback);
ORD(glIsVertexArray);
ORD(glMapBufferRange);
ORD(glPauseTransformFeedback);
ORD(glProgramBinary);
ORD(glProgramParameteri);
ORD(glReadBuffer);
ORD(glRenderbufferStorageMultisample);
ORD(glResumeTransformFeedback);
ORD(glSamplerParameterf);
ORD(glSamplerParameterfv);
ORD(glSamplerParameteri);
ORD(glSamplerParameteriv);
ORD(glTexImage3D);
ORD(glTexStorage2D);
ORD(glTexStorage3D);
ORD(glTexSubImage3D);
ORD(glTransformFeedbackVaryings);
ORD(glUniform1ui);
ORD(glUniform1uiv);
ORD(glUniform2ui);
ORD(glUniform2uiv);
ORD(glUniform3ui);
ORD(glUniform3uiv);
ORD(glUniform4ui);
ORD(glUniform4uiv);
ORD(glUniformBlockBinding);
ORD(glUniformMatrix2x3fv);
ORD(glUniformMatrix3x2fv);
ORD(glUniformMatrix2x4fv);
ORD(glUniformMatrix4x2fv);
ORD(glUniformMatrix3x4fv);
ORD(glUniformMatrix4x3fv);
ORD(glUnmapBuffer);
ORD(glVertexAttribDivisor);
ORD(glVertexAttribI4i);
ORD(glVertexAttribI4iv);
ORD(glVertexAttribI4ui);
ORD(glVertexAttribI4uiv);
ORD(glVertexAttribIPointer);
ORD(glWaitSync);
}
#undef ORD
@ -3057,115 +3162,54 @@ _debug_gles3_api_get(Evas_GL_API *funcs, int minor_version)
ORD(glBindFramebuffer);
ORD(glBindRenderbuffer);
// GLES 3.0 new APIs
ORD(glBeginQuery);
ORD(glBeginTransformFeedback);
ORD(glBindBufferBase);
ORD(glBindBufferRange);
ORD(glBindSampler);
ORD(glBindTransformFeedback);
ORD(glBindVertexArray);
ORD(glBlitFramebuffer);
ORD(glClearBufferfi);
ORD(glClearBufferfv);
ORD(glClearBufferiv);
ORD(glClearBufferuiv);
ORD(glClientWaitSync);
ORD(glCompressedTexImage3D);
ORD(glCompressedTexSubImage3D);
ORD(glCopyBufferSubData);
ORD(glCopyTexSubImage3D);
ORD(glDeleteQueries);
ORD(glDeleteSamplers);
ORD(glDeleteSync);
ORD(glDeleteTransformFeedbacks);
ORD(glDeleteVertexArrays);
ORD(glDrawArraysInstanced);
ORD(glDrawBuffers);
ORD(glDrawElementsInstanced);
ORD(glDrawRangeElements);
ORD(glEndQuery);
ORD(glEndTransformFeedback);
ORD(glFenceSync);
ORD(glFlushMappedBufferRange);
ORD(glFramebufferTextureLayer);
ORD(glGenQueries);
ORD(glGenSamplers);
ORD(glGenTransformFeedbacks);
ORD(glGenVertexArrays);
ORD(glGetActiveUniformBlockiv);
ORD(glGetActiveUniformBlockName);
ORD(glGetActiveUniformsiv);
ORD(glGetBufferParameteri64v);
ORD(glGetBufferPointerv);
ORD(glGetFragDataLocation);
ORD(glGetInteger64i_v);
ORD(glGetInteger64v);
ORD(glGetIntegeri_v);
ORD(glGetInternalformativ);
ORD(glGetProgramBinary);
ORD(glGetQueryiv);
ORD(glGetQueryObjectuiv);
ORD(glGetSamplerParameterfv);
ORD(glGetSamplerParameteriv);
ORD(glGetStringi);
ORD(glGetSynciv);
ORD(glGetTransformFeedbackVarying);
ORD(glGetUniformBlockIndex);
ORD(glGetUniformIndices);
ORD(glGetUniformuiv);
ORD(glGetVertexAttribIiv);
ORD(glGetVertexAttribIuiv);
ORD(glInvalidateFramebuffer);
ORD(glInvalidateSubFramebuffer);
ORD(glIsQuery);
ORD(glIsSampler);
ORD(glIsSync);
ORD(glIsTransformFeedback);
ORD(glIsVertexArray);
ORD(glMapBufferRange);
ORD(glPauseTransformFeedback);
ORD(glProgramBinary);
ORD(glProgramParameteri);
ORD(glReadBuffer);
ORD(glRenderbufferStorageMultisample);
ORD(glResumeTransformFeedback);
ORD(glSamplerParameterf);
ORD(glSamplerParameterfv);
ORD(glSamplerParameteri);
ORD(glSamplerParameteriv);
ORD(glTexImage3D);
ORD(glTexStorage2D);
ORD(glTexStorage3D);
ORD(glTexSubImage3D);
ORD(glTransformFeedbackVaryings);
ORD(glUniform1ui);
ORD(glUniform1uiv);
ORD(glUniform2ui);
ORD(glUniform2uiv);
ORD(glUniform3ui);
ORD(glUniform3uiv);
ORD(glUniform4ui);
ORD(glUniform4uiv);
ORD(glUniformBlockBinding);
ORD(glUniformMatrix2x3fv);
ORD(glUniformMatrix3x2fv);
ORD(glUniformMatrix2x4fv);
ORD(glUniformMatrix4x2fv);
ORD(glUniformMatrix3x4fv);
ORD(glUniformMatrix4x3fv);
ORD(glUnmapBuffer);
ORD(glVertexAttribDivisor);
ORD(glVertexAttribI4i);
ORD(glVertexAttribI4iv);
ORD(glVertexAttribI4ui);
ORD(glVertexAttribI4uiv);
ORD(glVertexAttribIPointer);
ORD(glWaitSync);
if (minor_version > 0)
switch (minor_version)
{
//GLES 3.1
case 2:
ORD(glBlendBarrier);
ORD(glCopyImageSubData);
ORD(glDebugMessageControl);
ORD(glDebugMessageInsert);
ORD(glDebugMessageCallback);
ORD(glGetDebugMessageLog);
ORD(glPushDebugGroup);
ORD(glPopDebugGroup);
ORD(glObjectLabel);
ORD(glGetObjectLabel);
ORD(glObjectPtrLabel);
ORD(glGetObjectPtrLabel);
ORD(glGetPointerv);
ORD(glEnablei);
ORD(glDisablei);
ORD(glBlendEquationi);
ORD(glBlendEquationSeparatei);
ORD(glBlendFunci);
ORD(glBlendFuncSeparatei);
ORD(glColorMaski);
ORD(glIsEnabledi);
ORD(glDrawElementsBaseVertex);
ORD(glDrawRangeElementsBaseVertex);
ORD(glDrawElementsInstancedBaseVertex);
ORD(glFramebufferTexture);
ORD(glPrimitiveBoundingBox);
ORD(glGetGraphicsResetStatus);
ORD(glReadnPixels);
ORD(glGetnUniformfv);
ORD(glGetnUniformiv);
ORD(glGetnUniformuiv);
ORD(glMinSampleShading);
ORD(glPatchParameteri);
ORD(glTexParameterIiv);
ORD(glTexParameterIuiv);
ORD(glGetTexParameterIiv);
ORD(glGetTexParameterIuiv);
ORD(glSamplerParameterIiv);
ORD(glSamplerParameterIuiv);
ORD(glGetSamplerParameterIiv);
ORD(glGetSamplerParameterIuiv);
ORD(glTexBuffer);
ORD(glTexBufferRange);
ORD(glTexStorage3DMultisample);
case 1:
ORD(glDispatchCompute);
ORD(glDispatchComputeIndirect);
ORD(glDrawArraysIndirect);
@ -3234,6 +3278,111 @@ _debug_gles3_api_get(Evas_GL_API *funcs, int minor_version)
ORD(glVertexAttribIFormat);
ORD(glVertexAttribBinding);
ORD(glVertexBindingDivisor);
case 0:
ORD(glBeginQuery);
ORD(glBeginTransformFeedback);
ORD(glBindBufferBase);
ORD(glBindBufferRange);
ORD(glBindSampler);
ORD(glBindTransformFeedback);
ORD(glBindVertexArray);
ORD(glBlitFramebuffer);
ORD(glClearBufferfi);
ORD(glClearBufferfv);
ORD(glClearBufferiv);
ORD(glClearBufferuiv);
ORD(glClientWaitSync);
ORD(glCompressedTexImage3D);
ORD(glCompressedTexSubImage3D);
ORD(glCopyBufferSubData);
ORD(glCopyTexSubImage3D);
ORD(glDeleteQueries);
ORD(glDeleteSamplers);
ORD(glDeleteSync);
ORD(glDeleteTransformFeedbacks);
ORD(glDeleteVertexArrays);
ORD(glDrawArraysInstanced);
ORD(glDrawBuffers);
ORD(glDrawElementsInstanced);
ORD(glDrawRangeElements);
ORD(glEndQuery);
ORD(glEndTransformFeedback);
ORD(glFenceSync);
ORD(glFlushMappedBufferRange);
ORD(glFramebufferTextureLayer);
ORD(glGenQueries);
ORD(glGenSamplers);
ORD(glGenTransformFeedbacks);
ORD(glGenVertexArrays);
ORD(glGetActiveUniformBlockiv);
ORD(glGetActiveUniformBlockName);
ORD(glGetActiveUniformsiv);
ORD(glGetBufferParameteri64v);
ORD(glGetBufferPointerv);
ORD(glGetFragDataLocation);
ORD(glGetInteger64i_v);
ORD(glGetInteger64v);
ORD(glGetIntegeri_v);
ORD(glGetInternalformativ);
ORD(glGetProgramBinary);
ORD(glGetQueryiv);
ORD(glGetQueryObjectuiv);
ORD(glGetSamplerParameterfv);
ORD(glGetSamplerParameteriv);
ORD(glGetStringi);
ORD(glGetSynciv);
ORD(glGetTransformFeedbackVarying);
ORD(glGetUniformBlockIndex);
ORD(glGetUniformIndices);
ORD(glGetUniformuiv);
ORD(glGetVertexAttribIiv);
ORD(glGetVertexAttribIuiv);
ORD(glInvalidateFramebuffer);
ORD(glInvalidateSubFramebuffer);
ORD(glIsQuery);
ORD(glIsSampler);
ORD(glIsSync);
ORD(glIsTransformFeedback);
ORD(glIsVertexArray);
ORD(glMapBufferRange);
ORD(glPauseTransformFeedback);
ORD(glProgramBinary);
ORD(glProgramParameteri);
ORD(glReadBuffer);
ORD(glRenderbufferStorageMultisample);
ORD(glResumeTransformFeedback);
ORD(glSamplerParameterf);
ORD(glSamplerParameterfv);
ORD(glSamplerParameteri);
ORD(glSamplerParameteriv);
ORD(glTexImage3D);
ORD(glTexStorage2D);
ORD(glTexStorage3D);
ORD(glTexSubImage3D);
ORD(glTransformFeedbackVaryings);
ORD(glUniform1ui);
ORD(glUniform1uiv);
ORD(glUniform2ui);
ORD(glUniform2uiv);
ORD(glUniform3ui);
ORD(glUniform3uiv);
ORD(glUniform4ui);
ORD(glUniform4uiv);
ORD(glUniformBlockBinding);
ORD(glUniformMatrix2x3fv);
ORD(glUniformMatrix3x2fv);
ORD(glUniformMatrix2x4fv);
ORD(glUniformMatrix4x2fv);
ORD(glUniformMatrix3x4fv);
ORD(glUniformMatrix4x3fv);
ORD(glUnmapBuffer);
ORD(glVertexAttribDivisor);
ORD(glVertexAttribI4i);
ORD(glVertexAttribI4iv);
ORD(glVertexAttribI4ui);
ORD(glVertexAttribI4uiv);
ORD(glVertexAttribIPointer);
ORD(glWaitSync);
}
#undef ORD
@ -3259,118 +3408,54 @@ _evgl_load_gles3_apis(void *dl_handle, Evas_GL_API *funcs, int minor_version,
// Used to update extensions
ORD(glGetString);
// GLES 3.0 new APIs
ORD(glBeginQuery);
ORD(glBeginTransformFeedback);
ORD(glBindBufferBase);
ORD(glBindBufferRange);
ORD(glBindSampler);
ORD(glBindTransformFeedback);
ORD(glBindVertexArray);
ORD(glBlitFramebuffer);
ORD(glClearBufferfi);
ORD(glClearBufferfv);
ORD(glClearBufferiv);
ORD(glClearBufferuiv);
ORD(glClientWaitSync);
ORD(glCompressedTexImage3D);
ORD(glCompressedTexSubImage3D);
ORD(glCopyBufferSubData);
ORD(glCopyTexSubImage3D);
ORD(glDeleteQueries);
ORD(glDeleteSamplers);
ORD(glDeleteSync);
ORD(glDeleteTransformFeedbacks);
ORD(glDeleteVertexArrays);
ORD(glDrawArraysInstanced);
ORD(glDrawBuffers);
ORD(glDrawElementsInstanced);
ORD(glDrawRangeElements);
ORD(glEndQuery);
ORD(glEndTransformFeedback);
ORD(glFenceSync);
ORD(glFlushMappedBufferRange);
ORD(glFramebufferTextureLayer);
ORD(glGenQueries);
ORD(glGenSamplers);
ORD(glGenTransformFeedbacks);
ORD(glGenVertexArrays);
ORD(glGetActiveUniformBlockiv);
ORD(glGetActiveUniformBlockName);
ORD(glGetActiveUniformsiv);
ORD(glGetBufferParameteri64v);
ORD(glGetBufferPointerv);
ORD(glGetFragDataLocation);
ORD(glGetInteger64i_v);
ORD(glGetInteger64v);
ORD(glGetIntegeri_v);
ORD(glGetInternalformativ);
ORD(glGetProgramBinary);
ORD(glGetQueryiv);
ORD(glGetQueryObjectuiv);
ORD(glGetSamplerParameterfv);
ORD(glGetSamplerParameteriv);
ORD(glGetStringi);
ORD(glGetSynciv);
ORD(glGetTransformFeedbackVarying);
ORD(glGetUniformBlockIndex);
ORD(glGetUniformIndices);
ORD(glGetUniformuiv);
ORD(glGetVertexAttribIiv);
ORD(glGetVertexAttribIuiv);
ORD(glInvalidateFramebuffer);
ORD(glInvalidateSubFramebuffer);
ORD(glIsQuery);
ORD(glIsSampler);
ORD(glIsSync);
ORD(glIsTransformFeedback);
ORD(glIsVertexArray);
ORD(glMapBufferRange);
ORD(glPauseTransformFeedback);
ORD(glProgramBinary);
ORD(glProgramParameteri);
ORD(glReadBuffer);
ORD(glRenderbufferStorageMultisample);
ORD(glResumeTransformFeedback);
ORD(glSamplerParameterf);
ORD(glSamplerParameterfv);
ORD(glSamplerParameteri);
ORD(glSamplerParameteriv);
ORD(glTexImage3D);
ORD(glTexStorage2D);
ORD(glTexStorage3D);
ORD(glTexSubImage3D);
ORD(glTransformFeedbackVaryings);
ORD(glUniform1ui);
ORD(glUniform1uiv);
ORD(glUniform2ui);
ORD(glUniform2uiv);
ORD(glUniform3ui);
ORD(glUniform3uiv);
ORD(glUniform4ui);
ORD(glUniform4uiv);
ORD(glUniformBlockBinding);
ORD(glUniformMatrix2x3fv);
ORD(glUniformMatrix3x2fv);
ORD(glUniformMatrix2x4fv);
ORD(glUniformMatrix4x2fv);
ORD(glUniformMatrix3x4fv);
ORD(glUniformMatrix4x3fv);
ORD(glUnmapBuffer);
ORD(glVertexAttribDivisor);
ORD(glVertexAttribI4i);
ORD(glVertexAttribI4iv);
ORD(glVertexAttribI4ui);
ORD(glVertexAttribI4uiv);
ORD(glVertexAttribIPointer);
ORD(glWaitSync);
if (minor_version > 0)
switch (minor_version)
{
// OpenGL ES 3.0 is supported, return true even if 3.1 isn't there
ret_value = EINA_TRUE;
// OpenGL ES 3.1
case 2:
ORD(glBlendBarrier);
ORD(glCopyImageSubData);
ORD(glDebugMessageControl);
ORD(glDebugMessageInsert);
ORD(glDebugMessageCallback);
ORD(glGetDebugMessageLog);
ORD(glPushDebugGroup);
ORD(glPopDebugGroup);
ORD(glObjectLabel);
ORD(glGetObjectLabel);
ORD(glObjectPtrLabel);
ORD(glGetObjectPtrLabel);
ORD(glGetPointerv);
ORD(glEnablei);
ORD(glDisablei);
ORD(glBlendEquationi);
ORD(glBlendEquationSeparatei);
ORD(glBlendFunci);
ORD(glBlendFuncSeparatei);
ORD(glColorMaski);
ORD(glIsEnabledi);
ORD(glDrawElementsBaseVertex);
ORD(glDrawRangeElementsBaseVertex);
ORD(glDrawElementsInstancedBaseVertex);
ORD(glFramebufferTexture);
ORD(glPrimitiveBoundingBox);
ORD(glGetGraphicsResetStatus);
ORD(glReadnPixels);
ORD(glGetnUniformfv);
ORD(glGetnUniformiv);
ORD(glGetnUniformuiv);
ORD(glMinSampleShading);
ORD(glPatchParameteri);
ORD(glTexParameterIiv);
ORD(glTexParameterIuiv);
ORD(glGetTexParameterIiv);
ORD(glGetTexParameterIuiv);
ORD(glSamplerParameterIiv);
ORD(glSamplerParameterIuiv);
ORD(glGetSamplerParameterIiv);
ORD(glGetSamplerParameterIuiv);
ORD(glTexBuffer);
ORD(glTexBufferRange);
ORD(glTexStorage3DMultisample);
case 1:
ORD(glDispatchCompute);
ORD(glDispatchComputeIndirect);
ORD(glDrawArraysIndirect);
@ -3439,6 +3524,111 @@ _evgl_load_gles3_apis(void *dl_handle, Evas_GL_API *funcs, int minor_version,
ORD(glVertexAttribIFormat);
ORD(glVertexAttribBinding);
ORD(glVertexBindingDivisor);
case 0:
ORD(glBeginQuery);
ORD(glBeginTransformFeedback);
ORD(glBindBufferBase);
ORD(glBindBufferRange);
ORD(glBindSampler);
ORD(glBindTransformFeedback);
ORD(glBindVertexArray);
ORD(glBlitFramebuffer);
ORD(glClearBufferfi);
ORD(glClearBufferfv);
ORD(glClearBufferiv);
ORD(glClearBufferuiv);
ORD(glClientWaitSync);
ORD(glCompressedTexImage3D);
ORD(glCompressedTexSubImage3D);
ORD(glCopyBufferSubData);
ORD(glCopyTexSubImage3D);
ORD(glDeleteQueries);
ORD(glDeleteSamplers);
ORD(glDeleteSync);
ORD(glDeleteTransformFeedbacks);
ORD(glDeleteVertexArrays);
ORD(glDrawArraysInstanced);
ORD(glDrawBuffers);
ORD(glDrawElementsInstanced);
ORD(glDrawRangeElements);
ORD(glEndQuery);
ORD(glEndTransformFeedback);
ORD(glFenceSync);
ORD(glFlushMappedBufferRange);
ORD(glFramebufferTextureLayer);
ORD(glGenQueries);
ORD(glGenSamplers);
ORD(glGenTransformFeedbacks);
ORD(glGenVertexArrays);
ORD(glGetActiveUniformBlockiv);
ORD(glGetActiveUniformBlockName);
ORD(glGetActiveUniformsiv);
ORD(glGetBufferParameteri64v);
ORD(glGetBufferPointerv);
ORD(glGetFragDataLocation);
ORD(glGetInteger64i_v);
ORD(glGetInteger64v);
ORD(glGetIntegeri_v);
ORD(glGetInternalformativ);
ORD(glGetProgramBinary);
ORD(glGetQueryiv);
ORD(glGetQueryObjectuiv);
ORD(glGetSamplerParameterfv);
ORD(glGetSamplerParameteriv);
ORD(glGetStringi);
ORD(glGetSynciv);
ORD(glGetTransformFeedbackVarying);
ORD(glGetUniformBlockIndex);
ORD(glGetUniformIndices);
ORD(glGetUniformuiv);
ORD(glGetVertexAttribIiv);
ORD(glGetVertexAttribIuiv);
ORD(glInvalidateFramebuffer);
ORD(glInvalidateSubFramebuffer);
ORD(glIsQuery);
ORD(glIsSampler);
ORD(glIsSync);
ORD(glIsTransformFeedback);
ORD(glIsVertexArray);
ORD(glMapBufferRange);
ORD(glPauseTransformFeedback);
ORD(glProgramBinary);
ORD(glProgramParameteri);
ORD(glReadBuffer);
ORD(glRenderbufferStorageMultisample);
ORD(glResumeTransformFeedback);
ORD(glSamplerParameterf);
ORD(glSamplerParameterfv);
ORD(glSamplerParameteri);
ORD(glSamplerParameteriv);
ORD(glTexImage3D);
ORD(glTexStorage2D);
ORD(glTexStorage3D);
ORD(glTexSubImage3D);
ORD(glTransformFeedbackVaryings);
ORD(glUniform1ui);
ORD(glUniform1uiv);
ORD(glUniform2ui);
ORD(glUniform2uiv);
ORD(glUniform3ui);
ORD(glUniform3uiv);
ORD(glUniform4ui);
ORD(glUniform4uiv);
ORD(glUniformBlockBinding);
ORD(glUniformMatrix2x3fv);
ORD(glUniformMatrix3x2fv);
ORD(glUniformMatrix2x4fv);
ORD(glUniformMatrix4x2fv);
ORD(glUniformMatrix3x4fv);
ORD(glUniformMatrix4x3fv);
ORD(glUnmapBuffer);
ORD(glVertexAttribDivisor);
ORD(glVertexAttribI4i);
ORD(glVertexAttribI4iv);
ORD(glVertexAttribI4ui);
ORD(glVertexAttribI4uiv);
ORD(glVertexAttribIPointer);
ORD(glWaitSync);
}
#undef ORD

View File

@ -4,6 +4,8 @@ _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))
//GLES 3.2
_EVASGL_FUNCTION_PRIVATE_BEGIN_VOID( glFramebufferTexture, (GLenum target, GLenum attachment, GLuint texture, GLint level), (target, attachment, texture, level))
_EVASGL_FUNCTION_BEGIN_VOID( glBeginQuery, (GLenum target, GLuint id), (target, id))
_EVASGL_FUNCTION_BEGIN_VOID( glBeginTransformFeedback, (GLenum primitiveMode), (primitiveMode))
@ -175,3 +177,48 @@ _EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribFormat, (GLuint attribindex, GLint si
_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))
//GLES 3.2
_EVASGL_FUNCTION_BEGIN_VOID( glBlendBarrier, (void), ())
_EVASGL_FUNCTION_BEGIN_VOID( glCopyImageSubData, (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth), (srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth))
_EVASGL_FUNCTION_BEGIN_VOID( glDebugMessageControl, (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled), (source, type, severity, count, ids, enabled))
_EVASGL_FUNCTION_BEGIN_VOID( glDebugMessageInsert, (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf), (source, type, id, severity, length, buf))
_EVASGL_FUNCTION_BEGIN_VOID( glDebugMessageCallback, (void (*callback)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam), const void *userParam), (callback, userParam))
_EVASGL_FUNCTION_BEGIN (GLuint, glGetDebugMessageLog, (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog), (count, bufSize, sources, types, ids, severities, lengths, messageLog))
_EVASGL_FUNCTION_BEGIN_VOID( glPushDebugGroup, (GLenum source, GLuint id, GLsizei length, const GLchar *message),(source, id, length, message))
_EVASGL_FUNCTION_BEGIN_VOID( glPopDebugGroup, (void), ())
_EVASGL_FUNCTION_BEGIN_VOID( glObjectLabel, (GLenum identifier, GLuint name, GLsizei length, const GLchar *label),(identifier, name, length, label))
_EVASGL_FUNCTION_BEGIN_VOID( glGetObjectLabel, (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label), (identifier, name, bufSize, length, label))
_EVASGL_FUNCTION_BEGIN_VOID( glObjectPtrLabel, (const void *ptr, GLsizei length, const GLchar *label), (ptr, length, label))
_EVASGL_FUNCTION_BEGIN_VOID( glGetObjectPtrLabel, (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label), (ptr, bufSize, length, label))
_EVASGL_FUNCTION_BEGIN_VOID( glGetPointerv, (GLenum pname, void **params), (pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glEnablei, (GLenum target, GLuint index), (target, index))
_EVASGL_FUNCTION_BEGIN_VOID( glDisablei, (GLenum target, GLuint index), (target, index))
_EVASGL_FUNCTION_BEGIN_VOID( glBlendEquationi, (GLuint buf, GLenum mode), (buf, mode))
_EVASGL_FUNCTION_BEGIN_VOID( glBlendEquationSeparatei, (GLuint buf, GLenum modeRGB, GLenum modeAlpha), (buf, modeRGB, modeAlpha))
_EVASGL_FUNCTION_BEGIN_VOID( glBlendFunci, (GLuint buf, GLenum src, GLenum dst), (buf, src, dst))
_EVASGL_FUNCTION_BEGIN_VOID( glBlendFuncSeparatei, (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (buf, srcRGB, dstRGB, srcAlpha, dstAlpha))
_EVASGL_FUNCTION_BEGIN_VOID( glColorMaski, (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a), (index, r, g, b, a))
_EVASGL_FUNCTION_BEGIN(GLboolean, glIsEnabledi, (GLenum target, GLuint index), (target, index))
_EVASGL_FUNCTION_BEGIN_VOID( glDrawElementsBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex), (mode, count, type, indices, basevertex))
_EVASGL_FUNCTION_BEGIN_VOID( glDrawRangeElementsBaseVertex, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex), (mode, start, end, count, type, indices, basevertex))
_EVASGL_FUNCTION_BEGIN_VOID( glDrawElementsInstancedBaseVertex, (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex), (mode, count, type, indices, instancecount, basevertex))
_EVASGL_FUNCTION_BEGIN_VOID( glPrimitiveBoundingBox, (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW), (minX, minY, minZ, minW, maxX, maxY, maxZ, maxW))
_EVASGL_FUNCTION_BEGIN(GLenum, glGetGraphicsResetStatus, (void), ())
_EVASGL_FUNCTION_BEGIN_VOID( glReadnPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data), (x, y, width, height, format, type, bufSize, data))
_EVASGL_FUNCTION_BEGIN_VOID( glGetnUniformfv, (GLuint program, GLint location, GLsizei bufSize, GLfloat *params), (program, location, bufSize, params))
_EVASGL_FUNCTION_BEGIN_VOID( glGetnUniformiv, (GLuint program, GLint location, GLsizei bufSize, GLint *params), (program, location, bufSize, params))
_EVASGL_FUNCTION_BEGIN_VOID( glGetnUniformuiv, (GLuint program, GLint location, GLsizei bufSize, GLuint *params), (program, location, bufSize, params))
_EVASGL_FUNCTION_BEGIN_VOID( glMinSampleShading, (GLfloat value), (value))
_EVASGL_FUNCTION_BEGIN_VOID( glPatchParameteri, (GLenum pname, GLint value), (pname, value))
_EVASGL_FUNCTION_BEGIN_VOID( glTexParameterIiv, (GLenum target, GLenum pname, const GLint *params), (target, pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glTexParameterIuiv, (GLenum target, GLenum pname, const GLuint *params), (target, pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glGetTexParameterIiv, (GLenum target, GLenum pname, GLint *params), (target, pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glGetTexParameterIuiv, (GLenum target, GLenum pname, GLuint *params), (target, pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glSamplerParameterIiv, (GLuint sampler, GLenum pname, const GLint *param), (sampler, pname, param))
_EVASGL_FUNCTION_BEGIN_VOID( glSamplerParameterIuiv, (GLuint sampler, GLenum pname, const GLuint *param), (sampler, pname, param))
_EVASGL_FUNCTION_BEGIN_VOID( glGetSamplerParameterIiv, (GLuint sampler, GLenum pname, GLint *params), (sampler, pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glGetSamplerParameterIuiv, (GLuint sampler, GLenum pname, GLuint *params), (sampler, pname, params))
_EVASGL_FUNCTION_BEGIN_VOID( glTexBuffer, (GLenum target, GLenum internalformat, GLuint buffer), (target, internalformat, buffer))
_EVASGL_FUNCTION_BEGIN_VOID( glTexBufferRange, (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size), (target, internalformat, buffer, offset, size))
_EVASGL_FUNCTION_BEGIN_VOID( glTexStorage3DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations), (target, samples, internalformat, width, height, depth, fixedsamplelocations))