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.

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

Reply via email to