remove unused _swrast_read_depth_span()
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 16 Sep 2005 21:10:27 +0000 (21:10 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 16 Sep 2005 21:10:27 +0000 (21:10 +0000)
src/mesa/swrast/s_depth.c

index a80b8ec1209c089972b1030d4f5662869f27bbe1..54aa040d576b3a07ca7a6daf2e64d4bcf3919d82 100644 (file)
@@ -1190,22 +1190,29 @@ _swrast_depth_bounds_test( GLcontext *ctx, struct sw_span *span )
 
 
 /**
- * Read a span of depth values from the depth buffer.
- * This function does clipping before calling the device driver function.
- *
- * XXXX this is no longer a swrast function!!!
- *
+ * Read a span of depth values from the given depth renderbuffer, returning
+ * the values as GLfloats.
+ * This function does clipping to prevent reading outside the depth buffer's
+ * bounds.  Though the clipping is redundant when we're called from
+ * _swrast_ReadPixels.
  */
 void
-_swrast_read_depth_span( GLcontext *ctx, struct gl_renderbuffer *rb,
-                         GLint n, GLint x, GLint y, GLuint depth[] )
+_swrast_read_depth_span_float( GLcontext *ctx, struct gl_renderbuffer *rb,
+                               GLint n, GLint x, GLint y, GLfloat depth[] )
 {
+   const GLfloat scale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
+
+   if (!rb) {
+      /* really only doing this to prevent FP exceptions later */
+      _mesa_bzero(depth, n * sizeof(GLfloat));
+   }
+
+   ASSERT(rb->_BaseFormat == GL_DEPTH_COMPONENT);
+
    if (y < 0 || y >= (GLint) rb->Height ||
        x + (GLint) n <= 0 || x >= (GLint) rb->Width) {
       /* span is completely outside framebuffer */
-      GLint i;
-      for (i = 0; i < n; i++)
-         depth[i] = 0;
+      _mesa_bzero(depth, n * sizeof(GLfloat));
       return;
    }
 
@@ -1213,7 +1220,7 @@ _swrast_read_depth_span( GLcontext *ctx, struct gl_renderbuffer *rb,
       GLint dx = -x;
       GLint i;
       for (i = 0; i < dx; i++)
-         depth[i] = 0;
+         depth[i] = 0.0;
       x = 0;
       n -= dx;
       depth += dx;
@@ -1222,57 +1229,37 @@ _swrast_read_depth_span( GLcontext *ctx, struct gl_renderbuffer *rb,
       GLint dx = x + n - (GLint) rb->Width;
       GLint i;
       for (i = 0; i < dx; i++)
-         depth[n - i - 1] = 0;
+         depth[n - i - 1] = 0.0;
       n -= dx;
    }
    if (n <= 0) {
       return;
    }
 
-   /* we'll always return 32-bit values to our caller */
-   if (!rb) {
-      _mesa_bzero(depth, n * sizeof(GLuint));
-   }
-   else if (rb->DataType == GL_UNSIGNED_INT) {
-      rb->GetRow(ctx, rb, n, x, y, depth);
+   if (rb->DataType == GL_UNSIGNED_INT) {
+      GLuint temp[MAX_WIDTH];
+      GLint i;
+      rb->GetRow(ctx, rb, n, x, y, temp);
+      for (i = 0; i < n; i++) {
+         depth[i] = temp[i] * scale;
+      }
    }
-   else {
+   else if (rb->DataType == GL_UNSIGNED_SHORT) {
       GLushort temp[MAX_WIDTH];
-      GLuint i;
-      ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
+      GLint i;
       rb->GetRow(ctx, rb, n, x, y, temp);
       for (i = 0; i < n; i++) {
          depth[i] = temp[i];
       }
    }
-}
-
-
-/**
- * Return a span of depth values from the depth buffer as floats in [0,1].
- * Input:  n - how many pixels
- *         x,y - location of first pixel
- * Output:  depth - the array of depth values
- */
-void
-_swrast_read_depth_span_float( GLcontext *ctx, struct gl_renderbuffer *rb,
-                               GLint n, GLint x, GLint y, GLfloat depth[] )
-{
-   const GLfloat scale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
-   GLuint temp[MAX_WIDTH];
-   GLint i;
-
-   assert(n <= MAX_WIDTH);
-
-   _swrast_read_depth_span(ctx, rb, n, x, y, temp);
-   for (i = 0; i < n; i++) {
-      depth[i] = temp[i] * scale;
+   else {
+      _mesa_problem(ctx, "Invalid depth renderbuffer internal format");
    }
 }
 
 
 /**
- * Clear the depth buffer.
+ * Clear the given z/depth renderbuffer.
  */
 void
 _swrast_clear_depth_buffer( GLcontext *ctx, struct gl_renderbuffer *rb )