On Wed, 13 Apr 2011 12:23:22 +0900 "Sung W. Park" <[email protected]> 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) [email protected]
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel