set table size to 1023 and use new HASH_FUNC() macro
[mesa.git] / src / mesa / main / points.c
index 466be5712bfeaa6548a3d604b8db7e077327a681..2ffb1a421253f133192c8d72854739cc2839e90c 100644 (file)
@@ -5,9 +5,9 @@
 
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.2
  *
- * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2004  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"),
@@ -49,7 +49,7 @@
  * size is different from one. Notifies the driver via
  * the dd_function_table::PointSize callback.
  */
-void
+void GLAPIENTRY
 _mesa_PointSize( GLfloat size )
 {
    GET_CURRENT_CONTEXT(ctx);
@@ -84,7 +84,7 @@ _mesa_PointSize( GLfloat size )
 /*
  * Added by GL_NV_point_sprite
  */
-void
+void GLAPIENTRY
 _mesa_PointParameteriNV( GLenum pname, GLint param )
 {
    const GLfloat value = (GLfloat) param;
@@ -95,7 +95,7 @@ _mesa_PointParameteriNV( GLenum pname, GLint param )
 /*
  * Added by GL_NV_point_sprite
  */
-void
+void GLAPIENTRY
 _mesa_PointParameterivNV( GLenum pname, const GLint *params )
 {
    const GLfloat value = (GLfloat) params[0];
@@ -107,7 +107,7 @@ _mesa_PointParameterivNV( GLenum pname, const GLint *params )
 /*
  * Same for both GL_EXT_point_parameters and GL_ARB_point_parameters.
  */
-void
+void GLAPIENTRY
 _mesa_PointParameterfEXT( GLenum pname, GLfloat param)
 {
    _mesa_PointParameterfvEXT(pname, &param);
@@ -118,7 +118,7 @@ _mesa_PointParameterfEXT( GLenum pname, GLfloat param)
 /*
  * Same for both GL_EXT_point_parameters and GL_ARB_point_parameters.
  */
-void
+void GLAPIENTRY
 _mesa_PointParameterfvEXT( GLenum pname, const GLfloat *params)
 {
    GET_CURRENT_CONTEXT(ctx);
@@ -229,6 +229,25 @@ _mesa_PointParameterfvEXT( GLenum pname, const GLfloat *params)
             return;
          }
          break;
+      case GL_POINT_SPRITE_COORD_ORIGIN:
+         if (ctx->Extensions.ARB_point_sprite) {
+            GLenum value = (GLenum) params[0];
+            if (value != GL_LOWER_LEFT && value != GL_UPPER_LEFT) {
+               _mesa_error(ctx, GL_INVALID_VALUE,
+                           "glPointParameterf[v]{EXT,ARB}(param)");
+               return;
+            }
+            if (ctx->Point.SpriteOrigin == value)
+               return;
+            FLUSH_VERTICES(ctx, _NEW_POINT);
+            ctx->Point.SpriteOrigin = value;
+         }
+         else {
+            _mesa_error(ctx, GL_INVALID_ENUM,
+                        "glPointParameterf[v]{EXT,ARB}(pname)");
+            return;
+         }
+         break;
       default:
          _mesa_error( ctx, GL_INVALID_ENUM,
                       "glPointParameterf[v]{EXT,ARB}(pname)" );
@@ -266,6 +285,7 @@ void _mesa_init_point( GLcontext * ctx )
    ctx->Point.Threshold = 1.0;
    ctx->Point.PointSprite = GL_FALSE; /* GL_ARB_point_sprite / GL_NV_point_sprite */
    ctx->Point.SpriteRMode = GL_ZERO; /* GL_NV_point_sprite (only!) */
+   ctx->Point.SpriteOrigin = GL_UPPER_LEFT; /* GL_ARB_point_sprite */
    for (i = 0; i < MAX_TEXTURE_UNITS; i++) {
       ctx->Point.CoordReplace[i] = GL_FALSE; /* GL_ARB_point_sprite / GL_NV_point_sprite */
    }