[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 05:59:51 PDT 2011


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

--- Comment #10 from Benoit Jacob <bjacob at mozilla.com> 2011-06-15 05:59:49 PDT ---
(In reply to comment #6)
> I wonder if apitrace (http://zrusin.blogspot.com/2011/04/apitrace.html) could
> capture a trace for Mesa developers to replay...

I heard about it but how easy is that for me to deploy in a custom debugging
build for a user to run? Meanwhile, I have logs with a verbose GL debug mode
that we have. While (as I mention above) it doesn't have some GL calls made
from the debugging layer itself, the bug is known to exist already without the
debugging layer, so that shouldn't matter. Relevant part of the log below. the
gl:0x197d3f0 part is the pointer to the GLContext object, it means all these
calls are on the same GL context (this is really checked). The > is before the
GL call, the < is after. The [0x0000] is the GL error code, so that means
GL_NO_ERROR. For some GL functions, the parameters values are printed. It's
enough to reconstruct what we've been doing here: I've added comments.

/* Create and bind a texture, name=1 */

[gl:0x197d3f0] > void mozilla::gl::GLContext::fGenTextures(GLsizei, GLuint*)
[gl:0x197d3f0] < void mozilla::gl::GLContext::fGenTextures(GLsizei, GLuint*)
[0x0000]
[gl:0x197d3f0] > void mozilla::gl::GLContext::fBindTexture(GLenum, GLuint)
parameters:
  target = 0x0de1
  texture = 1
[gl:0x197d3f0] < void mozilla::gl::GLContext::fBindTexture(GLenum, GLuint)
[0x0000]

/* Set some texparameters */

[gl:0x197d3f0] > void mozilla::gl::GLContext::fTexParameteri(GLenum, GLenum,
GLint)
[gl:0x197d3f0] < void mozilla::gl::GLContext::fTexParameteri(GLenum, GLenum,
GLint) [0x0000]
[gl:0x197d3f0] > void mozilla::gl::GLContext::fTexParameteri(GLenum, GLenum,
GLint)
[gl:0x197d3f0] < void mozilla::gl::GLContext::fTexParameteri(GLenum, GLenum,
GLint) [0x0000]

/* Create and bind a framebuffer. Note that FramebufferTexture2D call below
succeeds, meaning that we really have a non-default framebuffer bound. */

[gl:0x197d3f0] > void mozilla::gl::GLContext::fGenFramebuffers(GLsizei,
GLuint*)
[gl:0x197d3f0] < void mozilla::gl::GLContext::fGenFramebuffers(GLsizei,
GLuint*) [0x0000]
[gl:0x197d3f0] > void mozilla::gl::GLContext::fBindFramebuffer(GLenum, GLuint)
[gl:0x197d3f0] < void mozilla::gl::GLContext::fBindFramebuffer(GLenum, GLuint)
[0x0000]

/* Create a renderbuffer */

[gl:0x197d3f0] > void mozilla::gl::GLContext::fGenRenderbuffers(GLsizei,
GLuint*)
[gl:0x197d3f0] < void mozilla::gl::GLContext::fGenRenderbuffers(GLsizei,
GLuint*) [0x0000]

/* Upload an image to our texture. If you're wondering about the 16x16 size,
that's because this is a dummy GL context only used to get driver info to print
in the about:support page */

[gl:0x197d3f0] > void mozilla::gl::GLContext::fTexImage2D(GLenum, GLint, GLint,
GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*)
parameters:
  target = 0x0de1
  level = 0
  width = 16
 height = 16
  format = 0x1908
, type = 0x1401
[gl:0x197d3f0] < void mozilla::gl::GLContext::fTexImage2D(GLenum, GLint, GLint,
GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*) [0x0000]

/* Bind our renderbuffer and allocate it as a depth buffer
 * GL_DEPTH_COMPONENT24 == 0x81A6
 */

[gl:0x197d3f0] > void mozilla::gl::GLContext::fBindRenderbuffer(GLenum, GLuint)
parameters:
  target = 0x8d41
  renderbuffer = 1
[gl:0x197d3f0] < void mozilla::gl::GLContext::fBindRenderbuffer(GLenum, GLuint)
[0x0000]
[gl:0x197d3f0] > void mozilla::gl::GLContext::fRenderbufferStorage(GLenum,
GLenum, GLsizei, GLsizei)
parameters:
  target = 0x8d41
  internalFormat = 0x81a6
  width = 16
  height = 16
[gl:0x197d3f0] < void mozilla::gl::GLContext::fRenderbufferStorage(GLenum,
GLenum, GLsizei, GLsizei) [0x0000]

/* Attach our texture to the color attachment point, and our renderbuffer to
 * the depth attachment point
 * GL_COLOR_ATTACHMENT0 == 0x8CE0
 * GL_DEPTH_ATTACHMENT == 0x8D00
 */

[gl:0x197d3f0] > void mozilla::gl::GLContext::fFramebufferTexture2D(GLenum,
GLenum, GLenum, GLuint, GLint)
parameters:
  attachmentPoint = 0x8ce0
  texture = 1
  level = 0
[gl:0x197d3f0] < void mozilla::gl::GLContext::fFramebufferTexture2D(GLenum,
GLenum, GLenum, GLuint, GLint) [0x0000]
[gl:0x197d3f0] > void mozilla::gl::GLContext::fFramebufferRenderbuffer(GLenum,
GLenum, GLenum, GLuint)
parameters:
  attachmentPoint = 0x8d00
  renderbuffer = 1
[gl:0x197d3f0] < void mozilla::gl::GLContext::fFramebufferRenderbuffer(GLenum,
GLenum, GLenum, GLuint) [0x0000]

/* Check FB status and FB binding */

[gl:0x197d3f0] > GLenum mozilla::gl::GLContext::fCheckFramebufferStatus(GLenum)
[gl:0x197d3f0] < GLenum mozilla::gl::GLContext::fCheckFramebufferStatus(GLenum)
[0x0000]
framebuffer info:
[gl:0x197d3f0] > void mozilla::gl::GLContext::fGetIntegerv(GLenum, GLint*)
[gl:0x197d3f0] < void mozilla::gl::GLContext::fGetIntegerv(GLenum, GLint*)
[0x0000]

/* Boom: getIntegerv(GL_FRAMEBUFFER_BINDING, &result) explicitly set the
 * result to 0, despite above FramebufferRenderbuffer call succeeding
 */

  default framebuffer. No FBO is currently bound.
WARNING: Error resizing offscreen framebuffer -- framebuffer not complete: file
/builds/slave/try-lnx64-dbg/build/gfx/thebes/GLContext.cpp, line 877

-- 
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