diff options
author | Brian Paul <brianp@vmware.com> | 2014-07-03 08:19:04 -0600 |
---|---|---|
committer | Andreas Boll <andreas.boll.dev@gmail.com> | 2014-07-05 10:17:06 +0200 |
commit | 741e6dfc6ef8725f57580c5bcb61c299def57e0b (patch) | |
tree | 7f836acc91eed90eee2d87fa6c495fe099378341 | |
parent | b7723f05c91aa29f0d877701affdf8ce0af4d098 (diff) |
glxinfo: add query for OpenGL 4.4 GL_MAX_VERTEX_ATTRIB_STRIDE
And add support for qualifying a limit query with an OpenGL version
instead of an extension string.
Reviewed-by: Andreas Boll <andreas.boll.dev@gmail.com>
-rw-r--r-- | src/xdemos/glinfo_common.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/xdemos/glinfo_common.c b/src/xdemos/glinfo_common.c index 4360e531..248b9376 100644 --- a/src/xdemos/glinfo_common.c +++ b/src/xdemos/glinfo_common.c @@ -20,6 +20,7 @@ */ #include <assert.h> +#include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -331,6 +332,29 @@ extension_supported(const char *ext, const char *extensionsList) } +/** + * Is verNum >= verString? + * \param verString such as "2.1", "3.0", etc. + * \param verNum such as 20, 21, 30, 31, 32, etc. + */ +static GLboolean +version_supported(const char *verString, int verNum) +{ + int v; + + if (!verString || + !isdigit(verString[0]) || + verString[1] != '.' || + !isdigit(verString[2])) { + return GL_FALSE; + } + + v = (verString[0] - '0') * 10 + (verString[2] - '0'); + + return verNum >= v; +} + + struct token_name { GLenum token; @@ -486,7 +510,7 @@ print_limits(const char *extensions, const char *oglstring, int version, GLuint count; GLenum token; const char *name; - const char *extension; + const char *extension; /* NULL or GL extension name or version string */ }; static const struct token_name limits[] = { { 1, GL_MAX_ATTRIB_STACK_DEPTH, "GL_MAX_ATTRIB_STACK_DEPTH", NULL }, @@ -565,6 +589,9 @@ print_limits(const char *extensions, const char *oglstring, int version, { 1, GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, "GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET", "GL_ARB_vertex_attrib_binding" }, { 1, GL_MAX_VERTEX_ATTRIB_BINDINGS, "GL_MAX_VERTEX_ATTRIB_BINDINGS", "GL_ARB_vertex_attrib_binding" }, #endif +#if defined(GL_VERSION_4_4) + { 1, GL_MAX_VERTEX_ATTRIB_STRIDE, "GL_MAX_VERTEX_ATTRIB_STRIDE", "4.4" }, +#endif { 0, (GLenum) 0, NULL, NULL } }; GLint i, max[2]; @@ -572,6 +599,7 @@ print_limits(const char *extensions, const char *oglstring, int version, printf("%s limits:\n", oglstring); for (i = 0; limits[i].count; i++) { if (!limits[i].extension || + version_supported(limits[i].extension, version) || extension_supported(limits[i].extension, extensions)) { glGetIntegerv(limits[i].token, max); if (glGetError() == GL_NO_ERROR) { |