[Mesa-dev] [PATCH 1/3] mesa: Require that drivers supporting point sprites support point parameters

Ian Romanick idr at freedesktop.org
Fri Aug 24 08:47:42 PDT 2012


From: Ian Romanick <ian.d.romanick at intel.com>

All drivers in Mesa do.  This allows a lot of extension checking code to be
gutted from the function.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
---
 src/mesa/main/points.c |  106 +++++++++++++++++++++---------------------------
 1 files changed, 46 insertions(+), 60 deletions(-)

diff --git a/src/mesa/main/points.c b/src/mesa/main/points.c
index 87bfae2..cb6ac39 100644
--- a/src/mesa/main/points.c
+++ b/src/mesa/main/points.c
@@ -104,81 +104,67 @@ _mesa_PointParameterfv( GLenum pname, const GLfloat *params)
    GET_CURRENT_CONTEXT(ctx);
    ASSERT_OUTSIDE_BEGIN_END(ctx);
 
+   /* Drivers that support point sprites must also support point parameters.
+    * If point parameters aren't supported, then this function shouldn't even
+    * exist.
+    */
+   ASSERT(!(ctx->Extensions.ARB_point_sprite
+            || ctx->Extensions.NV_point_sprite)
+          || ctx->Extensions.EXT_point_parameters);
+
+   if (!ctx->Extensions.EXT_point_parameters) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "unsupported function called (unsupported extension)");
+      return;
+   }
+
    switch (pname) {
       case GL_DISTANCE_ATTENUATION_EXT:
-         if (ctx->Extensions.EXT_point_parameters) {
-            if (TEST_EQ_3V(ctx->Point.Params, params))
-	       return;
-	    FLUSH_VERTICES(ctx, _NEW_POINT);
-            COPY_3V(ctx->Point.Params, params);
-            ctx->Point._Attenuated = (ctx->Point.Params[0] != 1.0 ||
-                                      ctx->Point.Params[1] != 0.0 ||
-                                      ctx->Point.Params[2] != 0.0);
-
-            if (ctx->Point._Attenuated)
-               ctx->_TriangleCaps |= DD_POINT_ATTEN;
-            else
-               ctx->_TriangleCaps &= ~DD_POINT_ATTEN;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM,
-                        "glPointParameterf[v]{EXT,ARB}(pname)");
+         if (TEST_EQ_3V(ctx->Point.Params, params))
             return;
-         }
+         FLUSH_VERTICES(ctx, _NEW_POINT);
+         COPY_3V(ctx->Point.Params, params);
+         ctx->Point._Attenuated = (ctx->Point.Params[0] != 1.0 ||
+                                   ctx->Point.Params[1] != 0.0 ||
+                                   ctx->Point.Params[2] != 0.0);
+
+         if (ctx->Point._Attenuated)
+            ctx->_TriangleCaps |= DD_POINT_ATTEN;
+         else
+            ctx->_TriangleCaps &= ~DD_POINT_ATTEN;
          break;
       case GL_POINT_SIZE_MIN_EXT:
-         if (ctx->Extensions.EXT_point_parameters) {
-            if (params[0] < 0.0F) {
-               _mesa_error( ctx, GL_INVALID_VALUE,
-                            "glPointParameterf[v]{EXT,ARB}(param)" );
-               return;
-            }
-            if (ctx->Point.MinSize == params[0])
-               return;
-            FLUSH_VERTICES(ctx, _NEW_POINT);
-            ctx->Point.MinSize = params[0];
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM,
-                        "glPointParameterf[v]{EXT,ARB}(pname)");
+         if (params[0] < 0.0F) {
+            _mesa_error( ctx, GL_INVALID_VALUE,
+                         "glPointParameterf[v]{EXT,ARB}(param)" );
             return;
          }
+         if (ctx->Point.MinSize == params[0])
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POINT);
+         ctx->Point.MinSize = params[0];
          break;
       case GL_POINT_SIZE_MAX_EXT:
-         if (ctx->Extensions.EXT_point_parameters) {
-            if (params[0] < 0.0F) {
-               _mesa_error( ctx, GL_INVALID_VALUE,
-                            "glPointParameterf[v]{EXT,ARB}(param)" );
-               return;
-            }
-            if (ctx->Point.MaxSize == params[0])
-               return;
-            FLUSH_VERTICES(ctx, _NEW_POINT);
-            ctx->Point.MaxSize = params[0];
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM,
-                        "glPointParameterf[v]{EXT,ARB}(pname)");
+         if (params[0] < 0.0F) {
+            _mesa_error( ctx, GL_INVALID_VALUE,
+                         "glPointParameterf[v]{EXT,ARB}(param)" );
             return;
          }
+         if (ctx->Point.MaxSize == params[0])
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POINT);
+         ctx->Point.MaxSize = params[0];
          break;
       case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
-         if (ctx->Extensions.EXT_point_parameters) {
-            if (params[0] < 0.0F) {
-               _mesa_error( ctx, GL_INVALID_VALUE,
-                            "glPointParameterf[v]{EXT,ARB}(param)" );
-               return;
-            }
-            if (ctx->Point.Threshold == params[0])
-               return;
-            FLUSH_VERTICES(ctx, _NEW_POINT);
-            ctx->Point.Threshold = params[0];
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM,
-                        "glPointParameterf[v]{EXT,ARB}(pname)");
+         if (params[0] < 0.0F) {
+            _mesa_error( ctx, GL_INVALID_VALUE,
+                         "glPointParameterf[v]{EXT,ARB}(param)" );
             return;
          }
+         if (ctx->Point.Threshold == params[0])
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POINT);
+         ctx->Point.Threshold = params[0];
          break;
       case GL_POINT_SPRITE_R_MODE_NV:
          /* This is one area where ARB_point_sprite and NV_point_sprite
-- 
1.7.6.5



More information about the mesa-dev mailing list