mesa: Change "BRIAN PAUL" to "THE AUTHORS" in license text.
[mesa.git] / src / mesa / tnl / t_vb_points.c
index 0ad36079170bb61dec8547472bc2d511a2bf6cb5..2cfa013c6f14daa49b2cea206948f8e9f7bd924b 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.5
+ * Version:  7.0
  *
- * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -17,7 +17,7 @@
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  *    Brian Paul
  */
 
-#include "mtypes.h"
-#include "imports.h"
+#include "main/glheader.h"
+#include "main/mtypes.h"
+#include "main/dd.h"
+#include "main/imports.h"
 #include "t_context.h"
 #include "t_pipeline.h"
 
@@ -45,15 +47,13 @@ struct point_stage_data {
  * disabled.
  */
 static GLboolean
-run_point_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage)
+run_point_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
 {
-   if (ctx->ShaderObjects._VertexShaderPresent)
-      return GL_TRUE;
-
-   if (ctx->Point._Attenuated && !ctx->VertexProgram._Enabled) {
+   if (ctx->Point._Attenuated && !ctx->VertexProgram._Current) {
       struct point_stage_data *store = POINT_STAGE_DATA(stage);
       struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
-      const GLfloat (*eye)[4] = (const GLfloat (*)[4]) VB->EyePtr->data;
+      const GLfloat *eyeCoord = (GLfloat *) VB->EyePtr->data + 2;
+      const GLint eyeCoordStride = VB->EyePtr->stride / sizeof(GLfloat);
       const GLfloat p0 = ctx->Point.Params[0];
       const GLfloat p1 = ctx->Point.Params[1];
       const GLfloat p2 = ctx->Point.Params[2];
@@ -62,13 +62,13 @@ run_point_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage)
       GLuint i;
 
       for (i = 0; i < VB->Count; i++) {
-         const GLfloat dist = FABSF(eye[i][2]);
+         const GLfloat dist = FABSF(*eyeCoord);
          const GLfloat q = p0 + dist * (p1 + dist * p2);
-         const GLfloat atten = (q != 0.0) ? SQRTF(1.0 / q) : 1.0;
+         const GLfloat atten = (q != 0.0F) ? INV_SQRTF(q) : 1.0F;
          size[i][0] = pointSize * atten; /* clamping done in rasterization */
+         eyeCoord += eyeCoordStride;
       }
 
-      VB->PointSizePtr = &store->PointSize;
       VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->PointSize;
    }
 
@@ -77,11 +77,11 @@ run_point_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage)
 
 
 static GLboolean
-alloc_point_data(GLcontext *ctx, struct tnl_pipeline_stage *stage)
+alloc_point_data(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
 {
    struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
    struct point_stage_data *store;
-   stage->privatePtr = _mesa_malloc(sizeof(*store));
+   stage->privatePtr = malloc(sizeof(*store));
    store = POINT_STAGE_DATA(stage);
    if (!store)
       return GL_FALSE;
@@ -97,7 +97,7 @@ free_point_data(struct tnl_pipeline_stage *stage)
    struct point_stage_data *store = POINT_STAGE_DATA(stage);
    if (store) {
       _mesa_vector4f_free( &store->PointSize );
-      _mesa_free( store );
+      free( store );
       stage->privatePtr = NULL;
    }
 }