From 0255f14dc2189c71776408b00307b8488bfa4dc5 Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Wed, 19 Jul 2017 12:24:19 -0500 Subject: [PATCH] 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. --- .../evas/engines/gl_common/evas_gl_context.c | 17 ++++++----------- 1 file 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);