IMHO it's a standard bug, but nobody cares :)

On 11/28/2013 02:53 PM, Carsten Haitzler (The Rasterman) wrote:
> 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
>>
> 
> 


------------------------------------------------------------------------------
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