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

Ian Romanick idr at freedesktop.org
Thu Mar 19 11:03:41 PDT 2015


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?

I have a patch series somewhere that re-works a lot of this code to be a
little faster on Atom CPUs.  I guess I should finish that.  I don't
think your patches will cause me any undue rebase woes.

> -Brian
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev



More information about the mesa-dev mailing list