diff options
Diffstat (limited to 'src/mesa/swrast')
-rw-r--r-- | src/mesa/swrast/s_depth.c | 2 | ||||
-rw-r--r-- | src/mesa/swrast/s_drawpix.c | 8 | ||||
-rw-r--r-- | src/mesa/swrast/s_readpix.c | 10 |
3 files changed, 10 insertions, 10 deletions
diff --git a/src/mesa/swrast/s_depth.c b/src/mesa/swrast/s_depth.c index 4011b037e30..800e7f29fdd 100644 --- a/src/mesa/swrast/s_depth.c +++ b/src/mesa/swrast/s_depth.c @@ -1213,7 +1213,7 @@ _swrast_read_depth_span_float( GLcontext *ctx, struct gl_renderbuffer *rb, ASSERT(rb->_BaseFormat == GL_DEPTH_COMPONENT); if (y < 0 || y >= (GLint) rb->Height || - x + (GLint) n <= 0 || x >= (GLint) rb->Width) { + x + n <= 0 || x >= (GLint) rb->Width) { /* span is completely outside framebuffer */ _mesa_bzero(depth, n * sizeof(GLfloat)); return; diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c index 16404591875..7c799101d12 100644 --- a/src/mesa/swrast/s_drawpix.c +++ b/src/mesa/swrast/s_drawpix.c @@ -834,6 +834,8 @@ draw_depth_stencil_pixels(GLcontext *ctx, GLint x, GLint y, const GLvoid *pixels) { const GLint imgX = x, imgY = y; + const GLboolean scaleOrBias = + ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0; const GLfloat depthScale = ctx->DrawBuffer->_DepthMaxF; const GLuint stencilMask = ctx->Stencil.WriteMask[0]; const GLuint stencilType = (STENCIL_BITS == 8) ? @@ -865,8 +867,7 @@ draw_depth_stencil_pixels(GLcontext *ctx, GLint x, GLint y, GL_DEPTH_STENCIL_EXT, type, i, 0); if (ctx->Depth.Mask) { - if (ctx->Pixel.DepthScale == 1.0F && ctx->Pixel.DepthBias == 0.0F - && depthRb->DepthBits == 24) { + if (!scaleOrBias && depthRb->DepthBits == 24) { /* fast path 24-bit zbuffer */ GLuint zValues[MAX_WIDTH]; GLint j; @@ -880,8 +881,7 @@ draw_depth_stencil_pixels(GLcontext *ctx, GLint x, GLint y, else depthRb->PutRow(ctx, depthRb, width, x, y + i, zValues, NULL); } - else if (ctx->Pixel.DepthScale == 1.0F && ctx->Pixel.DepthBias == 0.0F - && depthRb->DepthBits == 16) { + else if (!scaleOrBias && depthRb->DepthBits == 16) { /* fast path 16-bit zbuffer */ GLushort zValues[MAX_WIDTH]; GLint j; diff --git a/src/mesa/swrast/s_readpix.c b/src/mesa/swrast/s_readpix.c index cae89724c07..3096d7a27c7 100644 --- a/src/mesa/swrast/s_readpix.c +++ b/src/mesa/swrast/s_readpix.c @@ -415,6 +415,8 @@ read_depth_stencil_pixels(GLcontext *ctx, GLenum type, GLvoid *pixels, const struct gl_pixelstore_attrib *packing ) { + const GLboolean scaleOrBias = + ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0; struct gl_renderbuffer *depthRb, *stencilRb; GLint i; @@ -434,9 +436,7 @@ read_depth_stencil_pixels(GLcontext *ctx, GL_DEPTH_STENCIL_EXT, type, i, 0); /* get depth values */ - if (ctx->Pixel.DepthScale == 1.0 - && ctx->Pixel.DepthBias == 0.0 - && depthRb->DepthBits == 24) { + if (!scaleOrBias && depthRb->DepthBits == 24) { /* ideal case */ ASSERT(depthRb->DataType == GL_UNSIGNED_INT); /* note, we've already been clipped */ @@ -447,12 +447,12 @@ read_depth_stencil_pixels(GLcontext *ctx, GLfloat depthVals[MAX_WIDTH]; _swrast_read_depth_span_float(ctx, depthRb, width, x, y + i, depthVals); - if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) { + if (scaleOrBias) { _mesa_scale_and_bias_depth(ctx, width, depthVals); } /* convert to 24-bit GLuints */ for (j = 0; j < width; j++) { - zVals[j] = FLOAT_TO_UINT(depthVals[j]) >> 8; + zVals[j] = (GLuint) (depthVals[j] * (GLfloat) 0xffffff); } } |