On Wed, 13 Apr 2011 12:23:22 +0900 "Sung W. Park" <sung...@gmail.com> said:

that patch seems wrong. if you are changing target window... and you have a
previous window.. it flushes the gl render queue for the previous window target
(or if the flush/use of the window) is flushed. you move the flush to AFTER
setting the new context info (like new surfaces for read/write). that seems
wrong.

> Hi all,
> 
> I've been toying around with creating a simple GLView smart object that
> allows users do GL rendering simply.  Eventually, I would like to see this
> as an Elementary widget called GLView.  The idea behind this is that
> if evas_gl provides the low level stuff, GLView gives the simplified
> user-version.
> I'll start another email thread later on this topic.
> 
> The reason why I'm mentioning the above is because while working on GLView,
> I've noticed an interesting behavior.  (You can see this by
> compiling/running the
> program that I'm attaching.)  I'm drawing a simple blended Triangle in
> the middle
> of the GLView object and what i'm getting is a smaller inverted red triangle
> on the top left corner of the GLView object.  Obviously, something was messing
> with the state of my GL code.
> 
> I've tracked this issue down to eng_window_use() in evas_x_main.c under gl_x11
> module.  In the code,
> _________________
> void
> eng_window_use(Evas_GL_X11_Window *gw)
> {
>    if ((_evas_gl_x11_window != gw) || (force_use))
>      {
>         if (_evas_gl_x11_window)
>           {
>              evas_gl_common_context_use(_evas_gl_x11_window->gl_context);
>              evas_gl_common_context_flush(_evas_gl_x11_window->gl_context);
>           }
>       _evas_gl_x11_window = gw;
>        if (gw)
>          {
>        ....
>        // Make Current Stuff..
> _________________
> 
> I've noticed that evas_gl_common_context_flush() gets called before it does
> MakeCurrent().  When the evas_gl_common_context_flush() gets called, it resets
> some shader stuff and does GL calls that tell the context to use the
> particular shaders.  This explains why my GLView was picking on what seemed
> to be the MVP matrix states that Evas was using.
> 
> Instead, what I think should happen is that the flush should be called after
> MakeCurrent happens.  Otherwise, you're not guaranteeing that your GL calls
> are being applied to the proper context. I've tried that and it seems to
> address the
> problem.
> 
> You can try running the glview program that I'm attaching before you apply
> the patch and also try running it after you apply the patch.
> 
> Let me know if this seems reasonable or I'm missing something somewhere.
> 
> Thanks!
> 
> cheers,
> Sung


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


------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to