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

Reply via email to