mesa: consolidate error handling in set_tex_parameteri()
authorBrian Paul <brianp@vmware.com>
Wed, 26 Jan 2011 01:27:44 +0000 (18:27 -0700)
committerBrian Paul <brianp@vmware.com>
Wed, 26 Jan 2011 01:53:00 +0000 (18:53 -0700)
src/mesa/main/texparam.c

index 62922f3ac99a3b900e0d3007ec4da51a72749727..1272ac4157a3435069a4c126b14584bed63464ef 100644 (file)
@@ -33,6 +33,7 @@
 #include "main/glheader.h"
 #include "main/colormac.h"
 #include "main/context.h"
+#include "main/enums.h"
 #include "main/formats.h"
 #include "main/macros.h"
 #include "main/mfeatures.h"
@@ -233,8 +234,7 @@ set_tex_parameteri(struct gl_context *ctx,
          }
          /* fall-through */
       default:
-         _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(param=0x%x)",
-                      params[0] );
+         goto invalid_param;
       }
       return GL_FALSE;
 
@@ -248,8 +248,7 @@ set_tex_parameteri(struct gl_context *ctx,
          texObj->MagFilter = params[0];
          return GL_TRUE;
       default:
-         _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(param=0x%x)",
-                      params[0]);
+         goto invalid_param;
       }
       return GL_FALSE;
 
@@ -317,21 +316,18 @@ set_tex_parameteri(struct gl_context *ctx,
       return GL_FALSE;
 
    case GL_TEXTURE_COMPARE_MODE_ARB:
-      if (ctx->Extensions.ARB_shadow &&
-          (params[0] == GL_NONE ||
-           params[0] == GL_COMPARE_R_TO_TEXTURE_ARB)) {
-         if (texObj->CompareMode != params[0]) {
+      if (ctx->Extensions.ARB_shadow) {
+         if (texObj->CompareMode == params[0])
+            return GL_FALSE;
+         if (params[0] == GL_NONE ||
+             params[0] == GL_COMPARE_R_TO_TEXTURE_ARB) {
             flush(ctx);
             texObj->CompareMode = params[0];
             return GL_TRUE;
          }
-         return GL_FALSE;
+         goto invalid_param;
       }
-      else {
-         _mesa_error(ctx, GL_INVALID_ENUM,
-                     "glTexParameter(GL_TEXTURE_COMPARE_MODE_ARB)");
-      }
-      return GL_FALSE;
+      goto invalid_pname;
 
    case GL_TEXTURE_COMPARE_FUNC_ARB:
       if (ctx->Extensions.ARB_shadow) {
@@ -356,32 +352,26 @@ set_tex_parameteri(struct gl_context *ctx,
             }
             /* fall-through */
          default:
-            _mesa_error(ctx, GL_INVALID_ENUM,
-                        "glTexParameter(GL_TEXTURE_COMPARE_FUNC_ARB)");
+            goto invalid_param;
          }
       }
-      else {
-         _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=0x%x)", pname);
-      }
-      return GL_FALSE;
+      goto invalid_pname;
 
    case GL_DEPTH_TEXTURE_MODE_ARB:
-      if (ctx->Extensions.ARB_depth_texture &&
-          (params[0] == GL_LUMINANCE ||
-           params[0] == GL_INTENSITY ||
-           params[0] == GL_ALPHA ||
-          (ctx->Extensions.ARB_texture_rg && params[0] == GL_RED))) {
-         if (texObj->DepthMode != params[0]) {
+      if (ctx->Extensions.ARB_depth_texture) {
+         if (texObj->DepthMode == params[0])
+            return GL_FALSE;
+         if (params[0] == GL_LUMINANCE ||
+             params[0] == GL_INTENSITY ||
+             params[0] == GL_ALPHA ||
+             (ctx->Extensions.ARB_texture_rg && params[0] == GL_RED)) {
             flush(ctx);
             texObj->DepthMode = params[0];
             return GL_TRUE;
          }
+         goto invalid_param;
       }
-      else {
-         _mesa_error(ctx, GL_INVALID_ENUM,
-                     "glTexParameter(GL_DEPTH_TEXTURE_MODE_ARB)");
-      }
-      return GL_FALSE;
+      goto invalid_pname;
 
 #if FEATURE_OES_draw_texture
    case GL_TEXTURE_CROP_RECT_OES:
@@ -412,8 +402,7 @@ set_tex_parameteri(struct gl_context *ctx,
             return GL_TRUE;
          }
       }
-      _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=0x%x)", pname);
-      return GL_FALSE;
+      goto invalid_pname;
 
    case GL_TEXTURE_SWIZZLE_RGBA_EXT:
       if (ctx->Extensions.EXT_texture_swizzle) {
@@ -433,8 +422,8 @@ set_tex_parameteri(struct gl_context *ctx,
          }
          return GL_TRUE;
       }
-      _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=0x%x)", pname);
-      return GL_FALSE;
+      goto invalid_pname;
+
    case GL_TEXTURE_SRGB_DECODE_EXT:
       if (ctx->Extensions.EXT_texture_sRGB_decode) {
         GLenum decode = params[0];
@@ -447,11 +436,20 @@ set_tex_parameteri(struct gl_context *ctx,
            return GL_TRUE;
         }
       }
-      _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=0x%x)", pname);
-      return GL_FALSE;
+      goto invalid_pname;
+
    default:
-      _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=0x%x)", pname);
+      goto invalid_pname;
    }
+
+invalid_pname:
+   _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=%s)",
+               _mesa_lookup_enum_by_nr(pname));
+   return GL_FALSE;
+
+invalid_param:
+   _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(param=%s)",
+               _mesa_lookup_enum_by_nr(params[0]));
    return GL_FALSE;
 }