st/mesa: Finalize texture on render-to-texture.

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.
(cherry picked from commit de414f4915)
This commit is contained in:
Michel Dänzer 2011-09-22 17:01:18 +02:00 committed by Marek Olšák
parent 726ce042f8
commit bb38f931a8

View 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"
@ -342,15 +343,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);