Spotted while attemting to use classic swrast with waffle. Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> --- tests/functional/gl_basic_test.c | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-)
diff --git a/tests/functional/gl_basic_test.c b/tests/functional/gl_basic_test.c index 19b0dac..d6b14d4 100644 --- a/tests/functional/gl_basic_test.c +++ b/tests/functional/gl_basic_test.c @@ -34,6 +34,7 @@ /// 4. Verify the window contents with glReadPixels. /// 5. Tear down all waffle state. +#include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -103,6 +104,7 @@ typedef float GLclampf; /* single precision float in [0,1] */ typedef double GLdouble; /* double precision float */ typedef double GLclampd; /* double precision float in [0,1] */ +#define GL_VERSION 0x1F02 #define GL_UNSIGNED_BYTE 0x1401 #define GL_UNSIGNED_INT 0x1405 #define GL_FLOAT 0x1406 @@ -123,6 +125,7 @@ typedef double GLclampd; /* double precision float in [0,1] */ #endif static GLenum (APIENTRY *glGetError)(void); +static const GLubyte *(APIENTRY *glGetString)(GLenum name); static void (APIENTRY *glGetIntegerv)(GLenum pname, GLint *params); static void (APIENTRY *glClearColor)(GLclampf red, GLclampf green, @@ -301,20 +304,35 @@ gl_basic_draw__(struct gl_basic_draw_args__ args) ASSERT_TRUE(glGetError = waffle_dl_sym(libgl, "glGetError")); ASSERT_TRUE(glGetIntegerv = waffle_dl_sym(libgl, "glGetIntegerv")); ASSERT_TRUE(glReadPixels = waffle_dl_sym(libgl, "glReadPixels")); + ASSERT_TRUE(glGetString = waffle_dl_sym(libgl, "glGetString")); ASSERT_TRUE(waffle_make_current(dpy, window, ctx)); - GLint context_flags = 0; - if (context_forward_compatible || context_debug) { - glGetIntegerv(GL_CONTEXT_FLAGS, &context_flags); - } + const char *version_str; + int major, dummy, count; - if (context_forward_compatible) { - ASSERT_TRUE(context_flags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT); - } + ASSERT_GL(version_str = (const char *) glGetString(GL_VERSION)); + ASSERT_TRUE(version_str != NULL); - if (context_debug) { - ASSERT_TRUE(context_flags & GL_CONTEXT_FLAG_DEBUG_BIT); + while (*version_str != '\0' && !isdigit(*version_str)) + version_str++; + + count = sscanf(version_str, "%d.%d", &major, &dummy); + ASSERT_TRUE(count == 2); + + if (waffle_context_api == WAFFLE_CONTEXT_OPENGL && major >= 3) { + GLint context_flags = 0; + if (context_forward_compatible || context_debug) { + glGetIntegerv(GL_CONTEXT_FLAGS, &context_flags); + } + + if (context_forward_compatible) { + ASSERT_TRUE(context_flags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT); + } + + if (context_debug) { + ASSERT_TRUE(context_flags & GL_CONTEXT_FLAG_DEBUG_BIT); + } } // Draw. -- 2.8.0 _______________________________________________ waffle mailing list waffle@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/waffle