st/mesa: fix ReadPixels crashes when reading depth/stencil from a FBO
authorBrian Paul <brianp@vmware.com>
Mon, 23 Aug 2010 01:04:47 +0000 (19:04 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 23 Aug 2010 01:04:49 +0000 (19:04 -0600)
This is based on a patch from Marek Olšák.

NOTE: This is a candidate for the Mesa 7.8 branch.

src/mesa/state_tracker/st_cb_readpixels.c

index d5f5d42..6ab03ec 100644 (file)
@@ -68,6 +68,10 @@ st_read_stencil_pixels(GLcontext *ctx, GLint x, GLint y,
    ubyte *stmap;
    GLint j;
 
+   if (strb->Base.Wrapped) {
+      strb = st_renderbuffer(strb->Base.Wrapped);
+   }
+
    if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP) {
       y = ctx->DrawBuffer->Height - y - height;
    }
@@ -359,6 +363,9 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
    }
    else if (format == GL_DEPTH_COMPONENT) {
       strb = st_renderbuffer(ctx->ReadBuffer->_DepthBuffer);
+      if (strb->Base.Wrapped) {
+         strb = st_renderbuffer(strb->Base.Wrapped);
+      }
    }
    else {
       /* Read color buffer */