On Thu, 28 Nov 2013 15:58:22 +0400 Stanislav Vorobiov <[email protected]>
said:

> Well, yes, if you put it this way, then it's a bug :)
> IMHO that glShaderBinary thing is not something to make "standard" conformant
> GLESv2 impl., it's like a recommendation - "if you don't support glsl and
> have your own tool to compile shaders, then at least provide this function to
> load them". That's of course doesn't solve the problem you're describing - no
> standartized binary representation of a shader

yeah. thats my point. glsl is a standard way to get shaders into your gpu...
but it is the ONLY standard representation. if that is optional... then there
is no defined standard way... :( thank god that particulr gpu+impleentation is
no longer something i have to keep supporting. i removed the support build
infra for that gpu from efl already and i am not in the mood to go put it back
for the next vendor that decides not supporting runtime glsl is a good idea. :)

> On 11/28/2013 03:40 PM, Carsten Haitzler (The Rasterman) wrote:
> > On Thu, 28 Nov 2013 15:34:47 +0400 Stanislav Vorobiov
> > <[email protected]> said:
> > 
> >>> yeah.. i've hit those before. gles2's "runtime glsl compiler is optional"
> >>> thing imho is a major standard bug.
> >> IMHO it's not a bug, since there's glShaderBinary call. We can assume that
> >> there's some performance critical GLESv2 implementation that doesn't allow
> >> one to compile shaders "online", but provides an "offline" compiler and the
> >> user is only allowed to use compiled shaders. However, I don't know if such
> >> implementations/GPUs actually exist.
> > 
> > this means you need tyo use a non-standardized too to generate that binary.
> > it means it is effectively impossible to write portable gles2 code as your
> > shaders do not have a known way to be generated. if this had been defined -
> > then fine, bit it wasn't. it wouldnt need to be online compilation., it
> > simply would be the ability to have the code work without porting the code
> > AND build system from gles2 implementation to gles2 implementation as they
> > may or may not provide a standardized runtime glsl compiler. if they
> > don't.. what's the STANDARD solution? :)
> > 
> > btw.. the reason i consider this a bug is because i have had to support
> > such an implementation before. it required custom build infra just for that
> > implementation, and that build infra had to build by using wine to run a
> > windows-only executable that compiled the glsl.. and this executable was
> > private and proprietary. that means ONLY people with the luck of access to
> > it could fix bugs in the glsl for that platform. you couldn't recompile the
> > shader bins at compile time... (or runtime).
> > 
> >>> anyway - this is in upstream! merged.
> >> Great, thanks! :)
> >>
> >> On 11/28/2013 03:23 PM, Carsten Haitzler (The Rasterman) wrote:
> >>> On Thu, 28 Nov 2013 15:01:02 +0400 Stanislav Vorobiov
> >>> <[email protected]> said:
> >>>
> >>> yeah.. i've hit those before. gles2's "runtime glsl compiler is optional"
> >>> thing imho is a major standard bug.
> >>>
> >>> anyway - this is in upstream! merged. it'll be out in 1.8. my mulling over
> >>> if it was a bug or not was to determine if it goes into the 1.8 release or
> >>> is held for 1.9 development as we only want to fix bugs at this point...
> >>> since release is due this weekend. :)
> >>>
> >>>> 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
> >>>>> <[email protected]> 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
> >>>>>>> <[email protected]> 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 [email protected]
> >>>>>>>> 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 [email protected]
> >>>>>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >>
> > 
> > 
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [email protected]


------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to