On 10/11/2013 03:10 PM, Ian Romanick wrote: > From: Ian Romanick <ian.d.roman...@intel.com> > > Signed-off-by: Ian Romanick <ian.d.roman...@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 */ > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev