diff options
| -rw-r--r-- | src/mesa/state_tracker/st_cb_fbo.c | 19 | 
1 files changed, 8 insertions, 11 deletions
diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c index 99c00916f4..64ec802216 100644 --- a/src/mesa/state_tracker/st_cb_fbo.c +++ b/src/mesa/state_tracker/st_cb_fbo.c @@ -283,26 +283,23 @@ st_render_texture(GLcontext *ctx,                    struct gl_renderbuffer_attachment *att)  {     struct st_context *st = ctx->st; +   struct st_renderbuffer *strb = st_renderbuffer(att->Renderbuffer);     struct pipe_context *pipe = st->pipe;     struct pipe_framebuffer_state framebuffer; -   struct pipe_surface *texsurface;     struct pipe_mipmap_tree *mt;     mt = st_get_texobj_mipmap_tree(att->Texture); -   texsurface = pipe->get_tex_surface(pipe, mt, -                                      att->CubeMapFace, -                                      att->TextureLevel, -                                      att->Zoffset); +   /* the renderbuffer's surface is inside the mipmap_tree: */ +   strb->surface = pipe->get_tex_surface(pipe, mt, +                                         att->CubeMapFace, +                                         att->TextureLevel, +                                         att->Zoffset); -   /* -    * XXX basically like this... set the current color (or depth) -    * drawing surface to be the given texture renderbuffer. -    */ +   /* update pipe's framebuffer state */     memset(&framebuffer, 0, sizeof(framebuffer));     framebuffer.num_cbufs = 1; -   framebuffer.cbufs[0] = texsurface; - +   framebuffer.cbufs[0] = strb->surface;     if (memcmp(&framebuffer, &st->state.framebuffer, sizeof(framebuffer)) != 0) {        st->state.framebuffer = framebuffer;        st->pipe->set_framebuffer_state( st->pipe, &framebuffer );  | 
