Mesa (7.8): st/mesa: fix ReadPixels crashes when reading depth/ stencil from a FBO

Brian Paul brianp at kemper.freedesktop.org
Tue Aug 24 14:31:54 UTC 2010


Module: Mesa
Branch: 7.8
Commit: 6628188a871b3ee354c2b0e2c6276af582035656
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6628188a871b3ee354c2b0e2c6276af582035656

Author: Brian Paul <brianp at vmware.com>
Date:   Sun Aug 22 19:04:47 2010 -0600

st/mesa: fix ReadPixels crashes when reading depth/stencil from a FBO

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 |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c
index 952d9ce..7ff10d4 100644
--- a/src/mesa/state_tracker/st_cb_readpixels.c
+++ b/src/mesa/state_tracker/st_cb_readpixels.c
@@ -69,6 +69,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;
    }
@@ -366,6 +370,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 */




More information about the mesa-commit mailing list