[Mesa-dev] [Bug 38312] Swrast doesn't really know whether a Framebuffer object is bound

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Wed Jun 15 07:02:33 PDT 2011


https://bugs.freedesktop.org/show_bug.cgi?id=38312

--- Comment #17 from Brian Paul <brian.e.paul at gmail.com> 2011-06-15 07:02:31 PDT ---
(In reply to comment #15)
> (In reply to comment #14)
> > Between the call to glBindFramebuffer() and
> > glGetIntegerv(GL_FRAMEBUFFER_BINDING) are you calling glXMakeCurrent()?
> 
> As far as I can see, no, we don't call glXMakeCurrent between these two points.

OK.


> > That
> > would change the context's framebuffer binding.  We might have that wrong,
> > actually...
> 
> Why would glXMakeCurrent change GL state?

glXMakeCurrent creates a binding between a rendering context and a surface for
drawing.  The surface (an X Window or GLXPixmaps) is internally represented by
an FBO.  Window system FBOs like that and user-created FBOs are pretty much the
same with only minor differences in how they're handled.  In any case, the
context has "current FBO" pointers that are set in glXMakeCurrent().  That's a
potential state change.

The GL_ARB/EXT_framebuffer_object extensions say that calling glXMakeCurrent()
should not change the current read/draw FBO bindings if the context is
currently pointing at user-created FBOs.  I needed to check Mesa to be sure
that we weren't inadvertently binding the X window FBO at in this situation. 
It looks like we're doing the right thing.  I just wrote a new piglit test to
verify this fact.

Anyway, I don't think this is the issue.  Perhaps you could sprinkle more
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &x) calls between the glBindFramebuffer()
call and the failure point.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the mesa-dev mailing list