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

Marek Olšák mareko at kemper.freedesktop.org
Sun Aug 15 06:15:51 UTC 2010


Module: Mesa
Branch: f52e03d00174229ff
Commit: 1cc222058f20ae9b575fcf1782786dfb83295a1f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1cc222058f20ae9b575fcf1782786dfb83295a1f

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sat Aug 14 08:42:17 2010 +0200

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

NOTE: This is a candidate for the 7.8 branch.

---

 src/mesa/state_tracker/st_cb_readpixels.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c
index b8493da..3cfb262 100644
--- a/src/mesa/state_tracker/st_cb_readpixels.c
+++ b/src/mesa/state_tracker/st_cb_readpixels.c
@@ -63,11 +63,16 @@ st_read_stencil_pixels(GLcontext *ctx, GLint x, GLint y,
 {
    struct gl_framebuffer *fb = ctx->ReadBuffer;
    struct pipe_context *pipe = st_context(ctx)->pipe;
-   struct st_renderbuffer *strb = st_renderbuffer(fb->_StencilBuffer);
+   struct st_renderbuffer *strb;
    struct pipe_transfer *pt;
    ubyte *stmap;
    GLint j;
 
+   if (fb->_StencilBuffer->Wrapped)
+      strb = st_renderbuffer(fb->_StencilBuffer->Wrapped);
+   else
+      strb = st_renderbuffer(fb->_StencilBuffer);
+
    if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP) {
       y = ctx->DrawBuffer->Height - y - height;
    }
@@ -358,7 +363,11 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
       return;
    }
    else if (format == GL_DEPTH_COMPONENT) {
-      strb = st_renderbuffer(ctx->ReadBuffer->_DepthBuffer);
+      struct gl_renderbuffer *depthRb = ctx->ReadBuffer->_DepthBuffer;
+      if (depthRb->Wrapped)
+         strb = st_renderbuffer(depthRb->Wrapped);
+      else
+         strb = st_renderbuffer(depthRb);
    }
    else {
       /* Read color buffer */




More information about the mesa-commit mailing list