summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2017-07-19 12:24:19 -0500
committerDerek Foreman <derekf@osg.samsung.com>2017-07-19 12:24:19 -0500
commit0255f14dc2189c71776408b00307b8488bfa4dc5 (patch)
tree2d36a7bf2798cc60ee716d7fe5b1e15efb0ae247
parentd31f5038e2f72c35b0cf270148df4b81d249a206 (diff)
downloadefl-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.c17
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);