From: Brian Paul Date: Thu, 8 Sep 2005 13:55:05 +0000 (+0000) Subject: fix precision problem in depth clearing (bug 4395) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f36954ec3c25b673fc275877938e2dea48ec5682;p=mesa.git fix precision problem in depth clearing (bug 4395) --- diff --git a/src/mesa/swrast/s_depth.c b/src/mesa/swrast/s_depth.c index 9f17bb17aa3..a80b8ec1209 100644 --- a/src/mesa/swrast/s_depth.c +++ b/src/mesa/swrast/s_depth.c @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.3 + * Version: 6.5 * * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. * @@ -1273,13 +1273,11 @@ _swrast_read_depth_span_float( GLcontext *ctx, struct gl_renderbuffer *rb, /** * Clear the depth buffer. - * XXX this is no longer a swrast function!!! */ void _swrast_clear_depth_buffer( GLcontext *ctx, struct gl_renderbuffer *rb ) { - const GLuint clearValue - = (GLuint) (ctx->Depth.Clear * ctx->DrawBuffer->_DepthMaxF); + GLuint clearValue; GLint x, y, width, height; if (!rb || !ctx->Depth.Mask) { @@ -1287,6 +1285,14 @@ _swrast_clear_depth_buffer( GLcontext *ctx, struct gl_renderbuffer *rb ) return; } + /* compute integer clearing value */ + if (ctx->Depth.Clear == 1.0) { + clearValue = ctx->DrawBuffer->_DepthMax; + } + else { + clearValue = (GLuint) (ctx->Depth.Clear * ctx->DrawBuffer->_DepthMaxF); + } + assert(rb->_BaseFormat == GL_DEPTH_COMPONENT); /* compute region to clear */