diff options
author | Ian Romanick <[email protected]> | 2012-07-25 07:24:58 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2012-08-24 19:13:12 -0700 |
commit | a33f360e8f8138c5b37b5e33324283e764d0750c (patch) | |
tree | 4c9d0fb36a321f2fcc880da8deef1d632d5bf94b /src/mesa | |
parent | 229868edf7f4232a4d97867a2ccea12db4c8cf57 (diff) |
mesa: Refactor element type checking into its own function
This consolidates the tests and makes the emitted error message
consistent.
v2: Rename _mesa_valid_element_type to valid_elements_type. Log the
enum string instead of the hex value in error messages. Based on review
comments from Brian Paul and Ken Graunke.
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/main/api_validate.c | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c index eaf614bdc5f..b15dfba73a0 100644 --- a/src/mesa/main/api_validate.c +++ b/src/mesa/main/api_validate.c @@ -31,6 +31,7 @@ #include "mtypes.h" #include "enums.h" #include "vbo/vbo.h" +#include <stdbool.h> /** @@ -262,6 +263,26 @@ _mesa_valid_prim_mode(struct gl_context *ctx, GLenum mode, const char *name) return GL_TRUE; } +/** + * Verify that the element type is valid. + * + * Generates \c GL_INVALID_ENUM and returns \c false if it is not. + */ +static bool +valid_elements_type(struct gl_context *ctx, GLenum type, const char *name) +{ + switch (type) { + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_SHORT: + case GL_UNSIGNED_INT: + return true; + + default: + _mesa_error(ctx, GL_INVALID_ENUM, "%s(type = %s)", name, + _mesa_lookup_enum_by_nr(type)); + return false; + } +} /** * Error checking for glDrawElements(). Includes parameter checking @@ -286,13 +307,8 @@ _mesa_validate_DrawElements(struct gl_context *ctx, return GL_FALSE; } - if (type != GL_UNSIGNED_INT && - type != GL_UNSIGNED_BYTE && - type != GL_UNSIGNED_SHORT) - { - _mesa_error(ctx, GL_INVALID_ENUM, "glDrawElements(type)" ); + if (!valid_elements_type(ctx, type, "glDrawElements")) return GL_FALSE; - } if (!check_valid_to_render(ctx, "glDrawElements")) return GL_FALSE; @@ -348,13 +364,8 @@ _mesa_validate_MultiDrawElements(struct gl_context *ctx, return GL_FALSE; } - if (type != GL_UNSIGNED_INT && - type != GL_UNSIGNED_BYTE && - type != GL_UNSIGNED_SHORT) - { - _mesa_error(ctx, GL_INVALID_ENUM, "glMultiDrawElements(type)" ); + if (!valid_elements_type(ctx, type, "glMultiDrawElements")) return GL_FALSE; - } if (!check_valid_to_render(ctx, "glMultiDrawElements")) return GL_FALSE; @@ -419,12 +430,8 @@ _mesa_validate_DrawRangeElements(struct gl_context *ctx, GLenum mode, return GL_FALSE; } - if (type != GL_UNSIGNED_INT && - type != GL_UNSIGNED_BYTE && - type != GL_UNSIGNED_SHORT) { - _mesa_error(ctx, GL_INVALID_ENUM, "glDrawRangeElements(type)" ); + if (!valid_elements_type(ctx, type, "glDrawRangeElements")) return GL_FALSE; - } if (!check_valid_to_render(ctx, "glDrawRangeElements")) return GL_FALSE; @@ -548,13 +555,8 @@ _mesa_validate_DrawElementsInstanced(struct gl_context *ctx, return GL_FALSE; } - if (type != GL_UNSIGNED_INT && - type != GL_UNSIGNED_BYTE && - type != GL_UNSIGNED_SHORT) { - _mesa_error(ctx, GL_INVALID_ENUM, - "glDrawElementsInstanced(type=0x%x)", type); + if (!valid_elements_type(ctx, type, "glDrawElementsInstanced")) return GL_FALSE; - } if (numInstances <= 0) { if (numInstances < 0) |