On Thu, 28 Nov 2013 13:33:42 +0400 Stanislav Vorobiov <s.vorob...@samsung.com> said:
> Yes, I think it's more of a bugfix. After all, there's no EGL standard that > strictly defines how should textures that are derived from pixmaps behave, > thus, application code shouldn't assume anything either. BUT... it requires an extension to figure it out... which means that technically the original standard is broken... UNLESS we ASSUME its yinverted always... :) so either the original is broken (standard bug)... or... the assumption is a requirement. :) > On 11/28/2013 01:20 PM, Carsten Haitzler (The Rasterman) wrote: > > On Thu, 28 Nov 2013 12:02:36 +0400 Stanislav Vorobiov > > <s.vorob...@samsung.com> said: > > > > and that looks great! well done! :) now the question is... is this a new > > feature.. or a bug fix... hmm i guess it's a bug fix as it makes something > > work given specific drivers and setup that didn't work before, BUT needs an > > extension to do it. > > > >> 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 enlightenment-devel@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > >> > > > > > > > ------------------------------------------------------------------------------ > 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 > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ras...@rasterman.com ------------------------------------------------------------------------------ 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 enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel