From f36954ec3c25b673fc275877938e2dea48ec5682 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 8 Sep 2005 13:55:05 +0000 Subject: fix precision problem in depth clearing (bug 4395) --- src/mesa/swrast/s_depth.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/mesa/swrast/s_depth.c b/src/mesa/swrast/s_depth.c index 9f17bb17aa..a80b8ec120 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 */ -- cgit v1.2.3