Instead of hardcoding yinvert=1 we should query for
EGL_NOK_texture_from_pixmap extension and if it's present
use EGL_Y_INVERTED_NOK value
---
src/modules/evas/engines/gl_x11/evas_engine.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c
b/src/modules/evas/engines/gl_x11/evas_engine.c
index d25610f..4e5c22c 100644
--- a/src/modules/evas/engines/gl_x11/evas_engine.c
+++ b/src/modules/evas/engines/gl_x11/evas_engine.c
@@ -71,6 +71,7 @@ struct _Render_Engine
static int initted = 0;
static int gl_wins = 0;
static int extn_have_buffer_age = 1;
+static int extn_have_y_inverted = 0;
typedef void (*_eng_fn) (void);
typedef _eng_fn (*glsym_func_eng_fn) ();
@@ -90,6 +91,9 @@ static Eina_Bool eng_preload_make_current(void *data, void
*doit);
#ifndef EGL_BUFFER_AGE_EXT
# define EGL_BUFFER_AGE_EXT 0x313d
#endif
+#ifndef EGL_Y_INVERTED_NOK
+# define EGL_Y_INVERTED_NOK 0x307F
+#endif
_eng_fn (*glsym_eglGetProcAddress) (const char *a) = NULL;
void *(*glsym_eglCreateImage) (EGLDisplay a, EGLContext b,
EGLenum c, EGLClientBuffer d, const int *e) = NULL;
@@ -711,6 +715,10 @@ gl_extn_veto(Render_Engine *re)
{
extn_have_buffer_age = 0;
}
+ if (strstr(str, "EGL_NOK_texture_from_pixmap"))
+ {
+ extn_have_y_inverted = 1;
+ }
}
else
{
@@ -2225,6 +2233,7 @@ eng_image_native_set(void *data, void *image, void
*native)
EGLConfig egl_config;
int config_attrs[20];
int num_config, i = 0;
+ int yinvert = 1;
eina_hash_add(re->win->gl_context->shared->native_pm_hash,
&pmid, im);
@@ -2250,6 +2259,15 @@ eng_image_native_set(void *data, void *image, void
*native)
if (!eglChooseConfig(re->win->egl_disp, config_attrs,
&egl_config, 1, &num_config))
ERR("eglChooseConfig() failed for pixmap 0x%x, num_config =
%i", (unsigned int)pm, num_config);
+ else
+ {
+ int val;
+ if (extn_have_y_inverted &&
+ eglGetConfigAttrib(re->win->egl_disp, egl_config,
+ EGL_Y_INVERTED_NOK, &val))
+ yinvert = val;
+ }
+
memcpy(&(n->ns), ns, sizeof(Evas_Native_Surface));
n->pixmap = pm;
n->visual = vis;
@@ -2263,7 +2281,7 @@ eng_image_native_set(void *data, void *image, void
*native)
ERR("Try eglCreateImage on EGL with no support");
if (!n->egl_surface)
ERR("eglCreatePixmapSurface() for 0x%x failed", (unsigned
int)pm);
- im->native.yinvert = 1;
+ im->native.yinvert = yinvert;
im->native.loose = 0;
im->native.data = n;
im->native.func.data = re;
--
1.7.9.5
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel