On Tue, 8 Nov 2011 11:06:14 +0900 "Sung W. Park" <sung...@gmail.com> said:

> Hi Carsten,
> 
> That's really weird.  I've tested elementary_test before I submitted the
> patch.
> I'm wondering if there were changes that I made that would require
> elementary recompile...  i can't think of one at the moment.
> 
> Just curious, are you using evas with NEWGL enabled?  If that's the case, it
> explains the breakage.  My understanding was that NEWGL was broken and it
> wasn't turned on by default so I didn't bother with it for now.

nup. NEWGL off. :( yes it's broken - even though it SHOULD work... theres some
odd things around there but it's off here. :) and this was just running
elementary_test - didnt even just evas_gl... so basic stuff didnt work :(

> I'll try to track down the issue.
> 
> cheers,
> Sung
> 
> 
> On Sun, Nov 6, 2011 at 2:48 PM, Carsten Haitzler <ras...@rasterman.com>wrote:
> 
> > On Wed, 26 Oct 2011 14:08:47 +0900 "Sung W. Park" <sung...@gmail.com>
> > said:
> >
> > > Hi all,
> > >
> > > I'm attaching a patch for the initial version of the GL Fastpath
> > addition to
> > > evas gl backend.
> > >
> > > Working on different mobile devices, we've noticed that the cost of
> > context
> > > switch (MakeCurrent) in GL can be very expensive depending on the driver
> > > implementation.  To minimize the poorly written driver's context switch
> > > overhead, I've implemented a state tracking layer on top of the driver
> > > implemented GL.
> > >
> > > Essentially, this layer wraps all the GL/Glue(GLX/EGL) APIs and manages
> > its
> > > own state changes.  Internally, only one real GL context is created and
> > > logical contexts are created every time a user requests context creation.
> > > The logical contexts keep track of its states and sets only the necessary
> > > states (the ones that are different than the current ones)
> > > when there is a MakeCurrent request.  The real MakeCurrent gets called
> > when
> > > there is a Surface/Window change request.
> > >
> > > The GL library is dlopened and all the APIs are dlsym'ed and wrapped
> > > accordingly.  All the GL functions are in evas_gl_core.{h,c}.
> > >
> > > Here's a very simply flow of the code.
> > >    - all the APIs are exported as function pointers (*glsym_glBegin),
> > >      (*glsm_eglCreatContext), and etc.
> > >    - all the native GL/Glue(GLX/EGL) APIs are dlsym'ed as _sym_glBegin,
> > >      _sym_eglCreateContext, and etc.
> > >    - all the fastpath APIs are implmemnted as fpgl_glBegin,
> > >      fpgl_eglCreateContext, and etc.
> > >    - if faspath is seletected, the exported APIs are set accordingly
> > >      ie. glsym_glBegin = fpgl_glBegin;
> > >    - default mode is the regular gl symbols are directly set.
> > >      ie. glsym_glBegin = _sym_glBegin;
> > >
> > > I have an Environment variable where you can set it to three different
> > Modes
> > >
> > > EVAS_GL_FASTPATH = 0    // Default mode. Regular GL symbols are directly
> > > loaded EVAS_GL_FASTPATH = 1    // Fastpath mode. Takes the path described
> > > above. EVAS_GL_FASTPATH = 2    // Wrapped mode.  All the regular GL
> > functions
> > > are wrapped once.  This can be used for various purposes
> > >
> > > Since all the GL symbols are now loaded in this library, I took out all
> > > the gl symbol loading parts in the evas gl backend as you'll see in the
> > patch.
> > > The changes to the engine and the backend itself is pretty minor.
> > >
> > > There are still some known issues to hammer out but I thought we're at a
> > good
> > > place for an initial version so that my source doesn't diverge too much.
> > >
> > > Known Issues and To Do's
> > > * Current GL Fastpath version doesn't support multiple threads.  Instead
> > of
> > >   having one global real context, I would need to do it for each thread.
> > I'll
> > >   get on this soon.
> >
> > this is.. unfortunately... important :( not currently, but in future it
> > will be.
> >
> > > * Issues running Evas GL on certain conditions.  When running the
> > elementary
> > >   test (with gl engine), if you run ELMGLview test that runs in ON_DEMAND
> > > mode, everything works fine. BUT, when you run the ELMGLView test in
> > ALWAYS
> > >   mode, the subsequent elm tests shows blank screen. When you destroy the
> > >   GLView window, everything else comes on fine.
> >
> > smells of a context tracking bug to me.
> >
> > > * Resource protection code.  This actually applies to Evas GL code in
> > general
> > >   as well. Since all the resources are shared among all the contexts
> > that get
> > >   created, I would like to eventually have a resource protecting
> > mechanism
> > > that prevents access to resources outside of its context unless
> > specifically
> > >   specified.
> >
> > how do you know which context a resource belongs to? eg a texture. afre you
> > going to forbid 2 ctx's to set the same texture id as src texture for ops?
> > sounds silly.
> >
> > > I'm attaching three files
> > >    - evas_gl_core.h, evas_gl_core.c, fastpath.patch
> > >
> > > To get the code running...
> > >    - copy evas_gl_core.{c,h} to src/modules/engine/gl_common/
> > >    - apply the fastpath.patch
> > >    - compile/install evas
> > >    - to run with fastpath GL (ie. % EVAS_GL_FASTPATH=1 ./evasgl_sample1)
> > >
> > >
> > > Let me know if you have questions or comments.
> >
> > big problem. it breaks the gl engine as-is:
> >
> >  2:46PM ~ > ELM_ENGINE=gl elementary_test
> > Initializing OpenGL APIs...
> > API OPT: 0 Default API path enabled...
> > ERR<16397>:evas-gl_x11 evas_x_main.c:802 eng_best_visual_get()
> > glsym_glXChooseFBConfig returned no configs ERR<16397>:evas-gl_x11
> > evas_x_main.c:802 eng_best_visual_get() glsym_glXChooseFBConfig returned no
> > configs ERR<16397>:evas-gl_x11 evas_x_main.c:802 eng_best_visual_get()
> > glsym_glXChooseFBConfig returned no configs ERR<16397>:ecore_evas
> > ecore_evas_x.c:176 _ecore_evas_x_gl_window_new() evas_engine_info_set() for
> > engine 'opengl_x11' failed. ERR<16397>:ecore_evas ecore_evas_x.c:3197
> > ecore_evas_gl_x11_options_new() evas_engine_info_set() init engine
> > 'opengl_x11'
> > failed. CRI<16397>:elementary elm_win.c:1461 elm_win_add() OpenGL engine
> > creation failed. Trying default.
> >
> > :(
> >
> >
> > --
> > ------------- Codito, ergo sum - "I code, therefore I am" --------------
> > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> >
> >


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to