Float->uint conversion for PIPE_FORMAT_U_Z32 resulted in overflow in depth_value...
authorBrian <brian.paul@tungstengraphics.com>
Wed, 7 Nov 2007 21:40:38 +0000 (14:40 -0700)
committerBrian <brian.paul@tungstengraphics.com>
Wed, 7 Nov 2007 21:40:38 +0000 (14:40 -0700)
src/mesa/state_tracker/st_cb_clear.c

index 2c79e28..cb7e43f 100644 (file)
@@ -86,7 +86,11 @@ depth_value(GLuint pipeFormat, GLfloat value)
       val = (GLuint) (value * 0xffffff);
       break;
    case PIPE_FORMAT_U_Z32:
-      val = (GLuint) (value * 0xffffffff);
+      /* special-case to avoid overflow */
+      if (value == 1.0)
+         val = 0xffffffff;
+      else
+         val = (GLuint) (value * 0xffffffff);
       break;
    case PIPE_FORMAT_S8_Z24:
    /*case PIPE_FORMAT_Z24_S8:*/