st/mesa: Finalize texture on render-to-texture.
authorMichel Dänzer <michel.daenzer@amd.com>
Thu, 22 Sep 2011 15:01:18 +0000 (17:01 +0200)
committerMichel Dänzer <michel@daenzer.net>
Thu, 22 Sep 2011 15:01:18 +0000 (17:01 +0200)
This makes sure that stObj->pt exists and is up to date.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=39193 and piglit
fbo-incomplete-texture-03.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
NOTE: This is a candidate for the 7.11 branch.

src/mesa/state_tracker/st_cb_fbo.c

index d43f67ac98f6ab15db7bfd0e8ff348cff462e94c..05139ec5aabf15311e18fffb5b8ac251681853a1 100644 (file)
@@ -47,6 +47,7 @@
 #include "st_context.h"
 #include "st_cb_fbo.h"
 #include "st_cb_flush.h"
+#include "st_cb_texture.h"
 #include "st_format.h"
 #include "st_texture.h"
 #include "st_manager.h"
@@ -340,15 +341,17 @@ st_render_texture(struct gl_context *ctx,
    struct pipe_context *pipe = st->pipe;
    struct st_renderbuffer *strb;
    struct gl_renderbuffer *rb;
-   struct pipe_resource *pt = st_get_texobj_resource(att->Texture);
+   struct pipe_resource *pt;
    struct st_texture_object *stObj;
    const struct gl_texture_image *texImage;
    struct pipe_surface surf_tmpl;
 
-   /* When would this fail?  Perhaps assert? */
-   if (!pt) 
+   if (!st_finalize_texture(ctx, pipe, att->Texture))
       return;
 
+   pt = st_get_texobj_resource(att->Texture);
+   assert(pt);
+
    /* get pointer to texture image we're rendeing to */
    texImage = _mesa_get_attachment_teximage(att);