[Mesa-dev] [PATCH 06/18] dri: Add function to implement queries common to all Mesa drivers

Kenneth Graunke kenneth at whitecape.org
Thu Nov 7 10:53:59 PST 2013


On 10/11/2013 03:10 PM, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
> 
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
>  src/mesa/drivers/dri/common/utils.c | 62 +++++++++++++++++++++++++++++++++++++
>  src/mesa/drivers/dri/common/utils.h |  3 ++
>  2 files changed, 65 insertions(+)
> 
> diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c
> index c9fc218..2361dbe 100644
> --- a/src/mesa/drivers/dri/common/utils.c
> +++ b/src/mesa/drivers/dri/common/utils.c
> @@ -37,6 +37,7 @@
>  #include "main/cpuinfo.h"
>  #include "main/extensions.h"
>  #include "utils.h"
> +#include "dri_util.h"
>  
>  
>  unsigned
> @@ -467,3 +468,64 @@ driIndexConfigAttrib(const __DRIconfig *config, int index,
>  
>      return GL_FALSE;
>  }
> +
> +/**
> + * Implement queries for values that are common across all Mesa drivers
> + *
> + * Currently only the following queries are supported by this function:
> + *
> + *     - \c __DRI2_RENDERER_VERSION
> + *     - \c __DRI2_RENDERER_OPENGL_CORE_PROFILE_VERSION
> + *     - \c __DRI2_RENDERER_OPENGL_COMPATIBLITY_PROFILE_VERSION
> + *     - \c __DRI2_RENDERER_ES_PROFILE_VERSION
> + *     - \c __DRI2_RENDERER_ES2_PROFILE_VERSION
> + *
> + * \returns
> + * Zero if a recognized value of \c param is supplied, -1 otherwise.
> + */
> +int
> +driQueryRendererIntegerCommon(__DRIscreen *psp, int param, int *value)
> +{
> +   switch (param) {
> +   case __DRI2_RENDERER_VERSION: {
> +      static const char *const ver = PACKAGE_VERSION;
> +      char *endptr;
> +      int v[3];
> +
> +      v[0] = strtol(ver, &endptr, 10);
> +      if (endptr[0] != '.')
> +         return -1;
> +
> +      v[1] = strtol(endptr + 1, &endptr, 10);
> +      if (endptr[0] != '.')
> +         return -1;

Returning -1 here seems strange, since it means "I didn't recognize the
parameter"...but we did recognize it.  If PACKAGE_VERSION doesn't have
the form X.Y.Z or X.Y.Z-devel, then that's just wrong.  Maybe change
these to assertions?

> +
> +      v[2] = strtol(endptr + 1, &endptr, 10);
> +
> +      value[0] = v[0];
> +      value[1] = v[1];
> +      value[2] = v[2];
> +      return 0;
> +   }
> +   case __DRI2_RENDERER_OPENGL_CORE_PROFILE_VERSION:
> +      value[0] = psp->max_gl_core_version / 10;
> +      value[1] = psp->max_gl_core_version % 10;
> +      return 0;
> +   case __DRI2_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION:
> +      value[0] = psp->max_gl_compat_version / 10;
> +      value[1] = psp->max_gl_compat_version % 10;
> +      return 0;
> +   case __DRI2_RENDERER_OPENGL_ES_PROFILE_VERSION:
> +      value[0] = psp->max_gl_es1_version / 10;
> +      value[1] = psp->max_gl_es1_version % 10;
> +      return 0;
> +   case __DRI2_RENDERER_OPENGL_ES2_PROFILE_VERSION:
> +      value[0] = psp->max_gl_es2_version / 10;
> +      value[1] = psp->max_gl_es2_version % 10;
> +      return 0;
> +   default:
> +      break;
> +   }
> +
> +   return -1;
> +}
> diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h
> index e3b3940..5d6ef87 100644
> --- a/src/mesa/drivers/dri/common/utils.h
> +++ b/src/mesa/drivers/dri/common/utils.h
> @@ -65,4 +65,7 @@ int
>  driIndexConfigAttrib(const __DRIconfig *config, int index,
>  		     unsigned int *attrib, unsigned int *value);
>  
> +int
> +driQueryRendererIntegerCommon(__DRIscreen *psp, int param, int *value);
> +
>  #endif /* DRI_DEBUG_H */
> 



More information about the mesa-dev mailing list