Mesa (master): mesa: Attempt to pair up Driver. RenderTexture and FinishRenderTexture()

Eric Anholt anholt at kemper.freedesktop.org
Fri Nov 6 19:42:57 UTC 2009


Module: Mesa
Branch: master
Commit: 6b68482e6869bdc03339ef5380d7273e14a61a56
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6b68482e6869bdc03339ef5380d7273e14a61a56

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Nov  4 14:31:30 2009 -0800

mesa: Attempt to pair up Driver.RenderTexture and FinishRenderTexture()

This is probably not 100% complete (bind vs unbind may still not pair up
exactly), but it should help out drivers which are relying on
FinishRenderTexture to be called when we're done rendering to a particular
texture level, not just when we're done rendering to the object at all.
This is the case for the one consumer of FinishRenderTexture() so far: the
gallium state tracker.  Noticed when trying to make use of FRT() in the intel
driver.

---

 src/mesa/main/fbobject.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 319d0f2..c445455 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -233,9 +233,13 @@ _mesa_set_texture_attachment(GLcontext *ctx,
    if (att->Texture == texObj) {
       /* re-attaching same texture */
       ASSERT(att->Type == GL_TEXTURE);
+      if (ctx->Driver.FinishRenderTexture)
+	 ctx->Driver.FinishRenderTexture(ctx, att);
    }
    else {
       /* new attachment */
+      if (ctx->Driver.FinishRenderTexture && att->Texture)
+	 ctx->Driver.FinishRenderTexture(ctx, att);
       _mesa_remove_attachment(ctx, att);
       att->Type = GL_TEXTURE;
       assert(!att->Texture);




More information about the mesa-commit mailing list