diff options
author | Derek Foreman <derekf@osg.samsung.com> | 2017-07-19 12:24:19 -0500 |
---|---|---|
committer | Derek Foreman <derekf@osg.samsung.com> | 2017-07-19 12:24:19 -0500 |
commit | 0255f14dc2189c71776408b00307b8488bfa4dc5 (patch) | |
tree | 2d36a7bf2798cc60ee716d7fe5b1e15efb0ae247 | |
parent | d31f5038e2f72c35b0cf270148df4b81d249a206 (diff) | |
download | efl-0255f14dc2189c71776408b00307b8488bfa4dc5.tar.gz |
gl_common: Prefer unextended eglCreateImage
eglCreateImage is objectively better than eglCreateImageKHR - it allows
attributes large enough to hold pointer values. We should use it when
available and only use the older extension version as fallback.
Also, eglCreateImage is core EGL functionality so don't depend on extensions
to be present to use it. Theoretically we should be testing for
EGL version >= 1.5 but it's probably safe not to.
-rw-r--r-- | src/modules/evas/engines/gl_common/evas_gl_context.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/modules/evas/engines/gl_common/evas_gl_context.c b/src/modules/evas/engines/gl_common/evas_gl_context.c index 922ce62366..2ead3877d4 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_context.c +++ b/src/modules/evas/engines/gl_common/evas_gl_context.c @@ -322,19 +322,14 @@ evas_gl_symbols(void *(*GetProcAddress)(const char *name), const char *extsn EIN // wrong as this is not x11 (output) layer specific like the native surface // stuff. this is generic zero-copy textures for gl - FINDSYMN(eglsym_eglCreateImageKHR, "eglCreateImageKHR", "EGL_KHR_image_base", secsym_func_void_ptr); - FINDSYMN(eglsym_eglCreateImageKHR, "eglCreateImageKHR", "EGL_KHR_image", secsym_func_void_ptr); - if (eglsym_eglCreateImageKHR) + FINDSYMN(eglsym_eglCreateImage, "eglCreateImage", NULL, secsym_func_void_ptr); + FINDSYMN(secsym_eglDestroyImage, "eglDestroyImage", NULL, secsym_func_uint); + if (!eglsym_eglCreateImage || !secsym_eglDestroyImage) { + eglsym_eglCreateImage = NULL; + secsym_eglDestroyImage = NULL; + FINDSYMN(eglsym_eglCreateImageKHR, "eglCreateImageKHR", "EGL_KHR_image_base", secsym_func_void_ptr); FINDSYMN(secsym_eglDestroyImage, "eglDestroyImageKHR", "EGL_KHR_image_base", secsym_func_uint); - FINDSYMN(secsym_eglDestroyImage, "eglDestroyImageKHR", "EGL_KHR_image", secsym_func_uint); - } - else - { - FINDSYMN(eglsym_eglCreateImage, "eglCreateImage", "EGL_KHR_get_all_proc_addresses", secsym_func_void_ptr); - FINDSYMN(eglsym_eglCreateImage, "eglCreateImage", "EGL_KHR_client_get_all_proc_addresses", secsym_func_void_ptr); - FINDSYMN(secsym_eglDestroyImage, "eglDestroyImage", "EGL_KHR_get_all_proc_addresses", secsym_func_uint); - FINDSYMN(secsym_eglDestroyImage, "eglDestroyImage", "EGL_KHR_client_get_all_proc_addresses", secsym_func_uint); } FINDSYM(glsym_glProgramParameteri, "glProgramParameteri", NULL, glsym_func_void); |