On Wed, Dec 4, 2013 at 9:43 AM, Carsten Haitzler <ras...@rasterman.com> wrote: > On Wed, 04 Dec 2013 15:20:09 +0400 Stanislav Vorobiov <s.vorob...@samsung.com> > said: > >> > now.. i can only conclude here that either the interpretation of the >> > extension is wrong and that the invert value when 0/false == invertad and >> > when 1/true is NOT inverted... (odd and doesn't make sense)... or that your >> > driver has a bug. it implements this extn but gets it wrong. >> It looks like a bug in mesa. They support EGL_Y_INVERTED_NOK, but always >> return 0. Look at mesa/src/egl/main/eglconfig.h:struct _egl_config, >> YInvertedNOK field is always 0 and it's returned in eglGetConfigAttrib via >> eglOffsetOfConfig. > > that was my guess. it smelled of a mesa bug. the code in that patch is totally > correct as best i read it (and there isn't much to read) so as i said.. beyond > blacklisting things in buggy drivers... i'm of the opinion of "don't bother. > file a bug with driver maintainers and let them fix it rather than hiding > their > bug for them" :) >
Figured, I checked the patch and didn't see anything wrong, so pinged here to see if someone more experienced would check the driver for me. It worked, I'm awesome. >> On 12/04/2013 01:13 PM, Carsten Haitzler (The Rasterman) wrote: >> > On Tue, 3 Dec 2013 23:32:13 -0200 Iván Briano <sachi...@gmail.com> said: >> > >> >> Building with EGL and GL-ES, Mesa 9.2.4 on Intel video, >> >> I’m getting windows vertically inverted. Works if I revert >> >> this commit or go back to software compositing. >> > >> > and did you look at the commit? it's right. if you don't have the yinverted >> > extension it's the same behavior as before. it assume yinverted in gles/egl >> > by default (yinvert = 1 ... same as before ... m->native.yinvert = 1). >> > >> > but IF you have the extension - it queries. it checks for the extensions >> > string and if you have it - sets a flag. if this flag is true AND the get >> > config attr succeeds - it sets yinvert to the queried invert value. >> > >> > now.. i can only conclude here that either the interpretation of the >> > extension is wrong and that the invert value when 0/false == invertad and >> > when 1/true is NOT inverted... (odd and doesn't make sense)... or that your >> > driver has a bug. it implements this extn but gets it wrong. >> > >> > the only solutions here would be (assuming the driver is wrong), is to >> > ignore this and just wait for the driver to be fixed, or to add blacklist >> > code into evas to detect the specific broken driver + version and ignore >> > that extension if that driver is found. i don't know what specific driver >> > strings you have there so i can't write a blacklist for you, but i suspect >> > you want to file a bug with mesa/driver/xorg devs :) >> > >> >> On Nov 29, 2013, at 8:08, Stanislav Vorobiov <s.vorob...@samsung.com> >> >> wrote: >> >> >> >>> raster pushed a commit to branch master. >> >>> >> >>> http://git.enlightenment.org/core/efl.git/commit/?id=9e3b778acb851671c2f24454b80bdeafc20d1c65 >> >>> >> >>> commit 9e3b778acb851671c2f24454b80bdeafc20d1c65 >> >>> Author: Stanislav Vorobiov <s.vorob...@samsung.com> >> >>> Date: Thu Nov 28 18:18:16 2013 +0900 >> >>> >> >>> evas - fix gl egl textrue from pixmap support y invert query extension >> >>> >> >>> 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; >> >>> >> >>> -- >> >>> >> >>> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> >> Sponsored by Intel(R) XDK >> >> Develop, test and display web and hybrid apps with a single code base. >> >> Download it for free now! >> >> http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk >> >> _______________________________________________ >> >> enlightenment-devel mailing list >> >> enlightenment-devel@lists.sourceforge.net >> >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel >> >> >> > >> > >> >> >> >> ------------------------------------------------------------------------------ >> Sponsored by Intel(R) XDK >> Develop, test and display web and hybrid apps with a single code base. >> Download it for free now! >> http://pubads.g.doubleclick.net/gampad/clk?id=111408631&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 > > > ------------------------------------------------------------------------------ > Sponsored by Intel(R) XDK > Develop, test and display web and hybrid apps with a single code base. > Download it for free now! > http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel ------------------------------------------------------------------------------ Sponsored by Intel(R) XDK Develop, test and display web and hybrid apps with a single code base. Download it for free now! http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel