[Mesa-dev] [PATCH 1/2] mesa: use more descriptive error messages for glUniform errors

Kenneth Graunke kenneth at whitecape.org
Thu Mar 19 16:11:00 PDT 2015


On Thursday, March 19, 2015 12:55:48 PM Brian Paul wrote:
> On 03/19/2015 12:03 PM, Ian Romanick wrote:
> > On 03/19/2015 07:56 AM, Brian Paul wrote:
> >> On 03/19/2015 08:53 AM, Brian Paul wrote:
> >>> Different errors for type mismatches, size mismatches and matrix/
> >>> non-matrix mismatches.  Use a common format of "uniformName"@location
> >>> in the messags.
> >>> ---
> >>>    src/mesa/main/uniform_query.cpp | 69
> >>> ++++++++++++++++++++++++++++++++++++++---
> >>>    1 file changed, 65 insertions(+), 4 deletions(-)
> >>>
> >>> diff --git a/src/mesa/main/uniform_query.cpp
> >>> b/src/mesa/main/uniform_query.cpp
> >>> index 9f82de9..2ab5528 100644
> >>> --- a/src/mesa/main/uniform_query.cpp
> >>> +++ b/src/mesa/main/uniform_query.cpp
> >>> @@ -260,8 +260,8 @@ validate_uniform_parameters(struct gl_context *ctx,
> >>>       if (uni->array_elements == 0) {
> >>>          if (count > 1) {
> >>>             _mesa_error(ctx, GL_INVALID_OPERATION,
> >>> -                     "%s(count > 1 for non-array, location=%d)",
> >>> -                     caller, location);
> >>> +                     "%s(count = %u for non-array \"%s\"@%d)",
> >>> +                     caller, count, uni->name, location);
> >>>             return NULL;
> >>>          }
> >>>
> >>> @@ -601,6 +601,46 @@ _mesa_propagate_uniforms_to_driver_storage(struct
> >>> gl_uniform_storage *uni,
> >>>       }
> >>>    }
> >>>
> >>> +
> >>> +/**
> >>> + * Return printable string for a given GLSL_TYPE_x
> >>> + */
> >>> +static const char *
> >>> +glsl_type_name(enum glsl_base_type type)
> >>> +{
> >>> +   switch (type) {
> >>> +   case GLSL_TYPE_UINT:
> >>> +      return "uint";
> >>> +   case GLSL_TYPE_INT:
> >>> +      return "int";
> >>> +   case GLSL_TYPE_FLOAT:
> >>> +      return "float";
> >>> +   case GLSL_TYPE_DOUBLE:
> >>> +      return "double";
> >>> +   case GLSL_TYPE_BOOL:
> >>> +      return "bool";
> >>> +   case GLSL_TYPE_SAMPLER:
> >>> +      return "sampler";
> >>> +   case GLSL_TYPE_IMAGE:
> >>> +      return "image";
> >>> +   case GLSL_TYPE_ATOMIC_UINT:
> >>> +      return "atomic_uint";
> >>> +   case GLSL_TYPE_STRUCT:
> >>> +      return "struct";
> >>> +   case GLSL_TYPE_INTERFACE:
> >>> +      return "interface";
> >>> +   case GLSL_TYPE_ARRAY:
> >>> +      return "array";
> >>> +   case GLSL_TYPE_VOID:
> >>> +      return "void";
> >>> +   case GLSL_TYPE_ERROR:
> >>> +      return "error";
> >>> +   default:
> >>> +      return "other";
> >>> +   }
> >>> +}
> >>
> >> BTW, I looked around a bit, but I didn't see a glsl_base_type->string
> >> function like this in src/glsl/, but I certainly could have missed it.
> >
> > Right... most places just use glsl_type::name.  That can't be used here
> > because you only have the glsl_base_type enum, or is there some other
> > reason?
> 
> No, that's it.
> 
> BTW, if we someday need this function elsewhere, it should probably be 
> moved to somewhere under src/glsl/
> 
> -Brian

Putting it in src/glsl/glsl_types.{cpp,h} would make a lot of sense.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150319/c09d2fe2/attachment.sig>


More information about the mesa-dev mailing list