[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