On 11/16/2011 09:54 AM, Vadim Girlin wrote:
On Wed, 2011-11-16 at 20:41 +0400, Vadim Girlin wrote:
On Wed, 2011-11-16 at 07:53 -0700, Brian Paul wrote:
In slow_read_depth_stencil_pixels_separate() we might have separate
depth and stencil buffers or a combined buffer.  In the later case,
don't map the buffer twice.  This function is used when the depth
scale/bias pixel transfer values are not the defaults.

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=42963
---
  src/mesa/main/readpix.c |   14 +++++++++++---
  1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index 8550618..0b41de6 100644
--- a/src/mesa/main/readpix.c
+++ b/src/mesa/main/readpix.c
@@ -402,10 +402,16 @@ slow_read_depth_stencil_pixels_separate(struct gl_context 
*ctx,
     GLubyte *depthMap, *stencilMap;
     int depthStride, stencilStride, j;

+   /* The depth and stencil buffers might be separate, or a single buffer.
+    * If one buffer, only map it once.
+    */
     ctx->Driver.MapRenderbuffer(ctx, depthRb, x, y, width, height,
                               GL_MAP_READ_BIT,&depthMap,&depthStride);
-   ctx->Driver.MapRenderbuffer(ctx, stencilRb, x, y, width, height,
-                              GL_MAP_READ_BIT,&stencilMap,&stencilStride);
+   if (stencilRb != depthRb) {
+      ctx->Driver.MapRenderbuffer(ctx, stencilRb, x, y, width, height,
+                                  GL_MAP_READ_BIT,&stencilMap,
+&stencilStride);
+   }


Probably we want the following here:

    else
       stencilMap = depthMap;



And I also forgot stencilStride.

Vadim

Thanks for catching that.  I'll post a new patch.

-Brian

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to