From 59e0faaa5c601ace51608c6d03c57d17498f796b Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 15 Mar 2006 17:48:00 +0000 Subject: sync with texmem branch --- src/mesa/main/dd.h | 2 ++ src/mesa/main/fbobject.c | 13 ++++++++++--- src/mesa/main/fbobject.h | 3 +++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 0df8cfa5b5..6af304fe26 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -801,6 +801,8 @@ struct dd_function_table { /*@{*/ struct gl_framebuffer * (*NewFramebuffer)(GLcontext *ctx, GLuint name); struct gl_renderbuffer * (*NewRenderbuffer)(GLcontext *ctx, GLuint name); + void (*BindFramebuffer)(GLcontext *ctx, GLenum target, + struct gl_framebuffer *fb); void (*FramebufferRenderbuffer)(GLcontext *ctx, struct gl_framebuffer *fb, GLenum attachment, diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 749115a799..8c428f8a25 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -653,11 +653,14 @@ _mesa_GenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers) /** * Given an internal format token for a render buffer, return the * corresponding base format. + * This is very similar to _mesa_base_tex_format() but the set of valid + * internal formats is somewhat different. + * * \return one of GL_RGB, GL_RGBA, GL_STENCIL_INDEX, GL_DEPTH_COMPONENT * GL_DEPTH_STENCIL_EXT or zero if error. */ -static GLenum -base_internal_format(GLcontext *ctx, GLenum internalFormat) +GLenum +_mesa_base_fbo_format(GLcontext *ctx, GLenum internalFormat) { switch (internalFormat) { case GL_RGB: @@ -717,7 +720,7 @@ _mesa_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, return; } - baseFormat = base_internal_format(ctx, internalFormat); + baseFormat = _mesa_base_fbo_format(ctx, internalFormat); if (baseFormat == 0) { _mesa_error(ctx, GL_INVALID_ENUM, "glRenderbufferStorageEXT(internalFormat)"); @@ -973,6 +976,10 @@ _mesa_BindFramebufferEXT(GLenum target, GLuint framebuffer) } ctx->DrawBuffer = newFb; } + + if (ctx->Driver.BindFramebuffer) { + ctx->Driver.BindFramebuffer(ctx, target, newFb); + } } diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h index 71517adfd8..3171aa7b1b 100644 --- a/src/mesa/main/fbobject.h +++ b/src/mesa/main/fbobject.h @@ -54,6 +54,9 @@ _mesa_framebuffer_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb, extern void _mesa_test_framebuffer_completeness(GLcontext *ctx, struct gl_framebuffer *fb); +extern GLenum +_mesa_base_fbo_format(GLcontext *ctx, GLenum internalFormat); + extern GLboolean GLAPIENTRY _mesa_IsRenderbufferEXT(GLuint renderbuffer); -- cgit v1.2.3