Looks good to me. Jose
----- Original Message ----- > Rather than testing the fbo's name against zero. > --- > src/mesa/main/buffers.c | 13 ++++++----- > src/mesa/main/fbobject.c | 47 > ++++++++++++----------------------------- > src/mesa/main/fbobject.h | 22 +++++++++++++++++++ > src/mesa/main/framebuffer.c | 8 +++--- > src/mesa/main/renderbuffer.c | 2 +- > src/mesa/main/teximage.c | 6 ++-- > src/mesa/main/texobj.c | 2 +- > 7 files changed, 52 insertions(+), 48 deletions(-) > > diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c > index 602dd32..216b6ee 100644 > --- a/src/mesa/main/buffers.c > +++ b/src/mesa/main/buffers.c > @@ -35,6 +35,7 @@ > #include "colormac.h" > #include "context.h" > #include "enums.h" > +#include "fbobject.h" > #include "mtypes.h" > > > @@ -56,7 +57,7 @@ supported_buffer_bitmask(const struct gl_context > *ctx, > { > GLbitfield mask = 0x0; > > - if (fb->Name > 0) { > + if (_mesa_is_user_fbo(fb)) { > /* A user-created renderbuffer */ > GLuint i; > ASSERT(ctx->Extensions.EXT_framebuffer_object); > @@ -357,7 +358,7 @@ updated_drawbuffers(struct gl_context *ctx) > struct gl_framebuffer *fb = ctx->DrawBuffer; > > /* Flag the FBO as requiring validation. */ > - if (fb->Name != 0) { > + if (_mesa_is_user_fbo(fb)) { > fb->_Status = 0; > } > } > @@ -452,7 +453,7 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint > n, const GLenum *buffers, > fb->ColorDrawBuffer[buf] = GL_NONE; > } > > - if (fb->Name == 0) { > + if (_mesa_is_winsys_fbo(fb)) { > /* also set context drawbuffer state */ > for (buf = 0; buf < ctx->Const.MaxDrawBuffers; buf++) { > if (ctx->Color.DrawBuffer[buf] != fb->ColorDrawBuffer[buf]) > { > @@ -476,7 +477,7 @@ _mesa_update_draw_buffers(struct gl_context *ctx) > GLuint i; > > /* should be a window system FBO */ > - assert(ctx->DrawBuffer->Name == 0); > + assert(_mesa_is_winsys_fbo(ctx->DrawBuffer)); > > for (i = 0; i < ctx->Const.MaxDrawBuffers; i++) > buffers[i] = ctx->Color.DrawBuffer[i]; > @@ -497,7 +498,7 @@ _mesa_readbuffer(struct gl_context *ctx, GLenum > buffer, GLint bufferIndex) > { > struct gl_framebuffer *fb = ctx->ReadBuffer; > > - if (fb->Name == 0) { > + if (_mesa_is_winsys_fbo(fb)) { > /* Only update the per-context READ_BUFFER state if we're > bound to > * a window-system framebuffer. > */ > @@ -533,7 +534,7 @@ _mesa_ReadBuffer(GLenum buffer) > if (MESA_VERBOSE & VERBOSE_API) > _mesa_debug(ctx, "glReadBuffer %s\n", > _mesa_lookup_enum_by_nr(buffer)); > > - if (fb->Name > 0 && buffer == GL_NONE) { > + if (_mesa_is_user_fbo(fb) && buffer == GL_NONE) { > /* This is legal for user-created framebuffer objects */ > srcBuffer = -1; > } > diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c > index aefcaf3..de94da6 100644 > --- a/src/mesa/main/fbobject.c > +++ b/src/mesa/main/fbobject.c > @@ -79,26 +79,6 @@ static struct gl_renderbuffer DummyRenderbuffer; > static struct gl_framebuffer IncompleteFramebuffer; > > > -/** > - * Is the given FBO a user-created FBO? > - */ > -static inline GLboolean > -is_user_fbo(const struct gl_framebuffer *fb) > -{ > - return fb->Name != 0; > -} > - > - > -/** > - * Is the given FBO a window system FBO (like an X window)? > - */ > -static inline GLboolean > -is_winsys_fbo(const struct gl_framebuffer *fb) > -{ > - return fb->Name == 0; > -} > - > - > static void > delete_dummy_renderbuffer(struct gl_renderbuffer *rb) > { > @@ -214,7 +194,7 @@ _mesa_get_attachment(struct gl_context *ctx, > struct gl_framebuffer *fb, > { > GLuint i; > > - assert(is_user_fbo(fb)); > + assert(_mesa_is_user_fbo(fb)); > > switch (attachment) { > case GL_COLOR_ATTACHMENT0_EXT: > @@ -265,7 +245,7 @@ static struct gl_renderbuffer_attachment * > _mesa_get_fb0_attachment(struct gl_context *ctx, struct > gl_framebuffer *fb, > GLenum attachment) > { > - assert(is_winsys_fbo(fb)); > + assert(_mesa_is_winsys_fbo(fb)); > > switch (attachment) { > case GL_FRONT_LEFT: > @@ -711,7 +691,7 @@ _mesa_test_framebuffer_completeness(struct > gl_context *ctx, > GLint i; > GLuint j; > > - assert(is_user_fbo(fb)); > + assert(_mesa_is_user_fbo(fb)); > > numImages = 0; > fb->Width = 0; > @@ -1009,10 +989,10 @@ _mesa_DeleteRenderbuffersEXT(GLsizei n, const > GLuint *renderbuffers) > _mesa_BindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0); > } > > - if (is_user_fbo(ctx->DrawBuffer)) { > + if (_mesa_is_user_fbo(ctx->DrawBuffer)) { > detach_renderbuffer(ctx, ctx->DrawBuffer, rb); > } > - if (is_user_fbo(ctx->ReadBuffer) > + if (_mesa_is_user_fbo(ctx->ReadBuffer) > && ctx->ReadBuffer != ctx->DrawBuffer) { > detach_renderbuffer(ctx, ctx->ReadBuffer, rb); > } > @@ -1318,7 +1298,7 @@ invalidate_rb(GLuint key, void *data, void > *userData) > struct gl_renderbuffer *rb = (struct gl_renderbuffer *) userData; > > /* If this is a user-created FBO */ > - if (is_user_fbo(fb)) { > + if (_mesa_is_user_fbo(fb)) { > GLuint i; > for (i = 0; i < BUFFER_COUNT; i++) { > struct gl_renderbuffer_attachment *att = fb->Attachment + > i; > @@ -1609,7 +1589,7 @@ check_begin_texture_render(struct gl_context > *ctx, struct gl_framebuffer *fb) > GLuint i; > ASSERT(ctx->Driver.RenderTexture); > > - if (is_winsys_fbo(fb)) > + if (_mesa_is_winsys_fbo(fb)) > return; /* can't render to texture with winsys framebuffers */ > > for (i = 0; i < BUFFER_COUNT; i++) { > @@ -1629,7 +1609,7 @@ check_begin_texture_render(struct gl_context > *ctx, struct gl_framebuffer *fb) > static void > check_end_texture_render(struct gl_context *ctx, struct > gl_framebuffer *fb) > { > - if (is_winsys_fbo(fb)) > + if (_mesa_is_winsys_fbo(fb)) > return; /* can't render to texture with winsys framebuffers */ > > if (ctx->Driver.FinishRenderTexture) { > @@ -1882,7 +1862,7 @@ _mesa_CheckFramebufferStatusEXT(GLenum target) > return 0; > } > > - if (is_winsys_fbo(buffer)) { > + if (_mesa_is_winsys_fbo(buffer)) { > /* The window system / default framebuffer is always complete > */ > return GL_FRAMEBUFFER_COMPLETE_EXT; > } > @@ -1944,7 +1924,7 @@ framebuffer_texture(struct gl_context *ctx, > const char *caller, GLenum target, > } > > /* check framebuffer binding */ > - if (is_winsys_fbo(fb)) { > + if (_mesa_is_winsys_fbo(fb)) { > _mesa_error(ctx, GL_INVALID_OPERATION, > "glFramebufferTexture%sEXT", caller); > return; > @@ -2204,7 +2184,7 @@ _mesa_FramebufferRenderbufferEXT(GLenum target, > GLenum attachment, > return; > } > > - if (is_winsys_fbo(fb)) { > + if (_mesa_is_winsys_fbo(fb)) { > /* Can't attach new renderbuffers to a window system > framebuffer */ > _mesa_error(ctx, GL_INVALID_OPERATION, > "glFramebufferRenderbufferEXT"); > return; > @@ -2285,7 +2265,7 @@ > _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum > attachment, > return; > } > > - if (is_winsys_fbo(buffer)) { > + if (_mesa_is_winsys_fbo(buffer)) { > /* Page 126 (page 136 of the PDF) of the OpenGL ES 2.0.25 spec > * says: > * > @@ -2332,7 +2312,8 @@ > _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum > attachment, > > switch (pname) { > case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT: > - *params = is_winsys_fbo(buffer) ? GL_FRAMEBUFFER_DEFAULT : > att->Type; > + *params = _mesa_is_winsys_fbo(buffer) > + ? GL_FRAMEBUFFER_DEFAULT : att->Type; > return; > case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT: > if (att->Type == GL_RENDERBUFFER_EXT) { > diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h > index 0a70a43..3aee842 100644 > --- a/src/mesa/main/fbobject.h > +++ b/src/mesa/main/fbobject.h > @@ -32,6 +32,28 @@ > struct gl_context; > struct gl_texture_object; > > + > +/** > + * Is the given FBO a user-created FBO? > + */ > +static inline GLboolean > +_mesa_is_user_fbo(const struct gl_framebuffer *fb) > +{ > + return fb->Name != 0; > +} > + > + > +/** > + * Is the given FBO a window system FBO (like an X window)? > + */ > +static inline GLboolean > +_mesa_is_winsys_fbo(const struct gl_framebuffer *fb) > +{ > + return fb->Name == 0; > +} > + > + > + > extern void > _mesa_init_fbobjects(struct gl_context *ctx); > > diff --git a/src/mesa/main/framebuffer.c > b/src/mesa/main/framebuffer.c > index 3ce3955..7c3c4e3 100644 > --- a/src/mesa/main/framebuffer.c > +++ b/src/mesa/main/framebuffer.c > @@ -281,8 +281,8 @@ _mesa_resize_framebuffer(struct gl_context *ctx, > struct gl_framebuffer *fb, > * and return early. > */ > > - /* For window system framebuffers, Name is zero */ > - assert(fb->Name == 0); > + /* Can only resize win-sys framebuffer objects */ > + assert(_mesa_is_winsys_fbo(fb)); > > for (i = 0; i < BUFFER_COUNT; i++) { > struct gl_renderbuffer_attachment *att = &fb->Attachment[i]; > @@ -408,7 +408,7 @@ update_framebuffer_size(struct gl_context *ctx, > struct gl_framebuffer *fb) > GLuint i; > > /* user-created framebuffers only */ > - assert(fb->Name); > + assert(_mesa_is_user_fbo(fb)); > > for (i = 0; i < BUFFER_COUNT; i++) { > struct gl_renderbuffer_attachment *att = &fb->Attachment[i]; > @@ -687,7 +687,7 @@ update_color_read_buffer(struct gl_context *ctx, > struct gl_framebuffer *fb) > static void > update_framebuffer(struct gl_context *ctx, struct gl_framebuffer > *fb) > { > - if (fb->Name == 0) { > + if (_mesa_is_winsys_fbo(fb)) { > /* This is a window-system framebuffer */ > /* Need to update the FB's GL_DRAW_BUFFER state to match the > * context state (GL_READ_BUFFER too). > diff --git a/src/mesa/main/renderbuffer.c > b/src/mesa/main/renderbuffer.c > index bb8f46d..08e6946 100644 > --- a/src/mesa/main/renderbuffer.c > +++ b/src/mesa/main/renderbuffer.c > @@ -132,7 +132,7 @@ _mesa_add_renderbuffer(struct gl_framebuffer *fb, > fb->Attachment[bufferName].Renderbuffer == NULL); > > /* winsys vs. user-created buffer cross check */ > - if (fb->Name) { > + if (_mesa_is_user_fbo(fb)) { > assert(rb->Name); > } > else { > diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c > index 9475e84..ce62248 100644 > --- a/src/mesa/main/teximage.c > +++ b/src/mesa/main/teximage.c > @@ -1900,7 +1900,7 @@ copytexture_error_check( struct gl_context > *ctx, GLuint dimensions, > } > > /* Check that the source buffer is complete */ > - if (ctx->ReadBuffer->Name) { > + if (_mesa_is_user_fbo(ctx->ReadBuffer)) { > if (ctx->ReadBuffer->_Status == 0) { > _mesa_test_framebuffer_completeness(ctx, ctx->ReadBuffer); > } > @@ -1999,7 +1999,7 @@ copytexsubimage_error_check1( struct gl_context > *ctx, GLuint dimensions, > GLenum target, GLint level) > { > /* Check that the source buffer is complete */ > - if (ctx->ReadBuffer->Name) { > + if (_mesa_is_user_fbo(ctx->ReadBuffer)) { > if (ctx->ReadBuffer->_Status == 0) { > _mesa_test_framebuffer_completeness(ctx, ctx->ReadBuffer); > } > @@ -2179,7 +2179,7 @@ check_rtt_cb(GLuint key, void *data, void > *userData) > const GLuint level = info->level, face = info->face; > > /* If this is a user-created FBO */ > - if (fb->Name) { > + if (_mesa_is_user_fbo(fb)) { > GLuint i; > /* check if any of the FBO's attachments point to 'texObj' */ > for (i = 0; i < BUFFER_COUNT; i++) { > diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c > index dc6e309..1b61d3a 100644 > --- a/src/mesa/main/texobj.c > +++ b/src/mesa/main/texobj.c > @@ -893,7 +893,7 @@ unbind_texobj_from_fbo(struct gl_context *ctx, > > for (i = 0; i < n; i++) { > struct gl_framebuffer *fb = (i == 0) ? ctx->DrawBuffer : > ctx->ReadBuffer; > - if (fb->Name) { > + if (_mesa_is_user_fbo(fb)) { > GLuint j; > for (j = 0; j < BUFFER_COUNT; j++) { > if (fb->Attachment[j].Type == GL_TEXTURE && > -- > 1.7.3.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev