Evas GL:Add evasgl extension macro '_EVASGL_EXT_DRVNAME_PRIVATE'.

Summary:
To distinguish supported extension name from not supported.
This patch can be solution to the problem, glGetString() returns non-supported extention name.

Test Plan: Local tests

Reviewers: raster, jpeg, Hermet, cedric

Subscribers: cedric, spacegrapher, wonsik

Differential Revision: https://phab.enlightenment.org/D1981

Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
This commit is contained in:
Minkyoung Kim 2015-02-23 21:31:41 +09:00 committed by Jean-Philippe Andre
parent 9057f42453
commit 65775c2e04
3 changed files with 70 additions and 13 deletions

View File

@ -28,6 +28,7 @@ typedef _getproc_fn (*fp_getproc)(const char *);
#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, param) \
ret (*gl_ext_sym_##name) param = NULL; \
@ -45,6 +46,7 @@ typedef _getproc_fn (*fp_getproc)(const char *);
#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
@ -64,6 +66,9 @@ typedef _getproc_fn (*fp_getproc)(const char *);
int _gles1_ext_support_##name = 0;
#define _EVASGL_EXT_END()
#define _EVASGL_EXT_DRVNAME(name)
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) \
int _gl_ext_support_func_##name = 0; \
int _gles1_ext_support_func_##name = 0;
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param)
#define _EVASGL_EXT_FUNCTION_END()
@ -79,6 +84,7 @@ typedef _getproc_fn (*fp_getproc)(const char *);
#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
@ -357,6 +363,9 @@ re->info->info.screen);
#define _EVASGL_EXT_DRVNAME(name) \
if (_EVASGL_EXT_CHECK_SUPPORT(#name)) *ext_support = 1;
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) \
if (_EVASGL_EXT_CHECK_SUPPORT(#name)) { *ext_support = 1; _gl_ext_support_func_##name = 1; }
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname) \
if (_EVASGL_EXT_CHECK_SUPPORT(deskname)) *ext_support = 1;
@ -398,6 +407,7 @@ re->info->info.screen);
#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
@ -407,6 +417,10 @@ re->info->info.screen);
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
#undef GETPROCADDR
/////////////////////////////////////////////////////////////////////////////////////////////////////
_gl_ext_string[0] = 0x00; //NULL;
_gl_ext_string_official[0] = 0x00;
/////////////////////////////////////////////////////////////////////////////////////////////////////
// Extension HEADER
@ -422,12 +436,18 @@ re->info->info.screen);
#define _EVASGL_EXT_END()
#define _EVASGL_EXT_CHECK_SUPPORT(name)
#define _EVASGL_EXT_DISCARD_SUPPORT()
#define _EVASGL_EXT_DRVNAME_PRINT(name) \
{ \
strncat(_gl_ext_string, name" ", MAX_EXTENSION_STRING_BUFFER); \
if ((strncmp(name, "GL", 2) == 0) && (strstr(_gl_ext_string_official, name) == NULL)) \
strncat(_gl_ext_string_official, name" ", MAX_EXTENSION_STRING_BUFFER); \
}
#define _EVASGL_EXT_DRVNAME(name) \
if (_curext_supported) \
{ \
strncat(_gl_ext_string, #name" ", MAX_EXTENSION_STRING_BUFFER); \
strncat(_gl_ext_string_official, #name" ", MAX_EXTENSION_STRING_BUFFER); \
}
if (_curext_supported) \
_EVASGL_EXT_DRVNAME_PRINT(#name)
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) \
if (_curext_supported && _gl_ext_support_func_##name) \
_EVASGL_EXT_DRVNAME_PRINT(#name)
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param)
#define _EVASGL_EXT_FUNCTION_END()
@ -442,8 +462,10 @@ re->info->info.screen);
#undef _EVASGL_EXT_DISCARD_SUPPORT
#undef _EVASGL_EXT_BEGIN
#undef _EVASGL_EXT_END
#undef _EVASGL_EXT_DRVNAME_PRINT
#undef _EVASGL_EXT_DRVNAME
#undef _EVASGL_EXT_DRVNAME_DESKTOP
#undef _EVASGL_EXT_DRVNAME_PRIVATE
#undef _EVASGL_EXT_FUNCTION_BEGIN
#undef _EVASGL_EXT_FUNCTION_END
#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN
@ -481,6 +503,7 @@ evgl_api_ext_get(Evas_GL_API *gl_funcs)
#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, param) \
ORD(name);
@ -503,6 +526,7 @@ evgl_api_ext_get(Evas_GL_API *gl_funcs)
#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
@ -606,6 +630,8 @@ _evgl_api_gles1_ext_init(void)
#define _EVASGL_EXT_DRVNAME(name) \
if (_EVASGL_EXT_CHECK_SUPPORT(#name)) *ext_support = 1;
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) \
if (_EVASGL_EXT_CHECK_SUPPORT(#name)) { *ext_support = 1; _gles1_ext_support_func_##name = 1; }
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname) \
if (_EVASGL_EXT_CHECK_SUPPORT(deskname)) *ext_support = 1;
@ -652,6 +678,7 @@ _evgl_api_gles1_ext_init(void)
#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
@ -672,7 +699,17 @@ _evgl_api_gles1_ext_init(void)
#define _EVASGL_EXT_END()
#define _EVASGL_EXT_CHECK_SUPPORT(name)
#define _EVASGL_EXT_DISCARD_SUPPORT()
#define _EVASGL_EXT_DRVNAME(name) if (_curext_supported) strcat(_gles1_ext_string, #name" ");
#define _EVASGL_EXT_DRVNAME_PRINT(name) \
{ \
if ((strncmp(name, "GL", 2) == 0) && (strstr(_gles1_ext_string, name) == NULL)) \
strcat(_gles1_ext_string, name" "); \
}
#define _EVASGL_EXT_DRVNAME(name) \
if (_curext_supported) \
_EVASGL_EXT_DRVNAME_PRINT(#name)
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) \
if (_curext_supported && _gles1_ext_support_func_##name) \
_EVASGL_EXT_DRVNAME_PRINT(#name)
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param)
#define _EVASGL_EXT_FUNCTION_END()
@ -687,7 +724,9 @@ _evgl_api_gles1_ext_init(void)
#undef _EVASGL_EXT_DISCARD_SUPPORT
#undef _EVASGL_EXT_BEGIN
#undef _EVASGL_EXT_END
#undef _EVASGL_EXT_DRVNAME_PRINT
#undef _EVASGL_EXT_DRVNAME
#undef _EVASGL_EXT_DRVNAME_PRIVATE
#undef _EVASGL_EXT_DRVNAME_DESKTOP
#undef _EVASGL_EXT_FUNCTION_BEGIN
#undef _EVASGL_EXT_FUNCTION_END
@ -740,6 +779,7 @@ evgl_api_gles1_ext_get(Evas_GL_API *gl_funcs)
#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, param) \
ORD(name);
@ -761,6 +801,7 @@ evgl_api_gles1_ext_get(Evas_GL_API *gl_funcs)
#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

View File

@ -24,6 +24,7 @@
#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, param) extern ret (*gl_ext_sym_##name) param;
#define _EVASGL_EXT_FUNCTION_END()
@ -39,6 +40,7 @@
#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
@ -58,6 +60,7 @@
#define _EVASGL_EXT_BEGIN(name) extern int _gl_ext_support_##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, param)
#define _EVASGL_EXT_FUNCTION_END()
@ -73,6 +76,7 @@
#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

View File

@ -14,6 +14,7 @@
// Driver extensions to wrap (name : SPEC extension name)
#define _EVASGL_EXT_DRVNAME(name)
#define _EVASGL_EXT_DRVNAME_PRIVATE(name)
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
// These functions will be exported to 'EVAS extension function'.
@ -44,6 +45,11 @@
#endif
//////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef _EVASGL_EXT_DRVNAME_PRIVATE
#define _EVASGL_EXT_DRVNAME_PRIVATE(name) _EVASGL_EXT_DRVNAME(name)
#define _EVASGL_EXT_DRVNAME_PRIVATE_DEFINED
#endif
#ifndef _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN
#define _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN(ret, name, param) _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param)
#define _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN_DEFINED
@ -301,8 +307,8 @@ _EVASGL_EXT_BEGIN(EXT_multisampled_render_to_texture)
_EVASGL_EXT_END()
_EVASGL_EXT_BEGIN(multisampled_render_to_texture)
_EVASGL_EXT_DRVNAME(GL_IMG_multisampled_render_to_texture)
_EVASGL_EXT_DRVNAME(GL_EXT_multisampled_render_to_texture)
_EVASGL_EXT_DRVNAME_PRIVATE(GL_IMG_multisampled_render_to_texture)
_EVASGL_EXT_DRVNAME_PRIVATE(GL_EXT_multisampled_render_to_texture)
_EVASGL_EXT_FUNCTION_PRIVATE_BEGIN(void, glRenderbufferStorageMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height))
_EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR("glRenderbufferStorageMultisample")
@ -1354,8 +1360,8 @@ _EVASGL_EXT_END()
// ----------------------------------------------------------
_EVASGL_EXT_BEGIN(framebuffer_blit)
_EVASGL_EXT_DRVNAME(GL_NV_framebuffer_blit)
_EVASGL_EXT_DRVNAME(GL_ANGLE_framebuffer_blit)
_EVASGL_EXT_DRVNAME_PRIVATE(GL_NV_framebuffer_blit)
_EVASGL_EXT_DRVNAME_PRIVATE(GL_ANGLE_framebuffer_blit)
_EVASGL_EXT_FUNCTION_WHITELIST("glBlitFramebuffer")
_EVASGL_EXT_FUNCTION_WHITELIST("glBlitFramebufferNV")
@ -1548,9 +1554,9 @@ _EVASGL_EXT_END()
_EVASGL_EXT_BEGIN(EGL_KHR_fence_sync)
/* 3 aliasses for EGL_KHR_fence_sync */
_EVASGL_EXT_DRVNAME(EGL_KHR_fence_sync)
_EVASGL_EXT_DRVNAME(GL_OES_EGL_sync)
_EVASGL_EXT_DRVNAME(VG_KHR_EGL_sync)
_EVASGL_EXT_DRVNAME_PRIVATE(EGL_KHR_fence_sync)
_EVASGL_EXT_DRVNAME_PRIVATE(GL_OES_EGL_sync)
_EVASGL_EXT_DRVNAME_PRIVATE(VG_KHR_EGL_sync)
_EVASGL_EXT_FUNCTION_PRIVATE_BEGIN(void *, eglCreateSyncKHR, (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list))
_EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR("eglCreateSyncKHR")
@ -1715,12 +1721,18 @@ _EVASGL_EXT_END()
#undef _EVASGL_EXT_FUNCTION_PRIVATE_END_DEFINED
#endif
#ifdef _EVASGL_EXT_DRVNAME_PRIVATE_DEFINED
#undef _EVASGL_EXT_DRVNAME_PRIVATE
#undef _EVASGL_EXT_DRVNAME_PRIVATE_DEFINED
#endif
#ifdef _EVASGL_EXT_USE_DEFAULT_DEFINE
#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_FUNCTION_BEGIN
#undef _EVASGL_EXT_FUNCTION_END
#undef _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN