mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
dri: Add function to implement queries common to all Mesa drivers
v2: Add assertions that the version string has the expected format. This will catch build errors (or changes to the version string format) in debug build without exposing release builds to buffer over-runs. Suggested by Ken. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
83ffe47be0
commit
9dbc14abcf
2 changed files with 67 additions and 0 deletions
|
|
@ -37,6 +37,7 @@
|
|||
#include "main/cpuinfo.h"
|
||||
#include "main/extensions.h"
|
||||
#include "utils.h"
|
||||
#include "dri_util.h"
|
||||
|
||||
|
||||
unsigned
|
||||
|
|
@ -477,3 +478,66 @@ 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);
|
||||
assert(endptr[0] == '.');
|
||||
if (endptr[0] != '.')
|
||||
return -1;
|
||||
|
||||
v[1] = strtol(endptr + 1, &endptr, 10);
|
||||
assert(endptr[0] == '.');
|
||||
if (endptr[0] != '.')
|
||||
return -1;
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue