tests: Only run buffer-count test if we have at least mesa 10
authorKristian Høgsberg <krh@bitplanet.net>
Thu, 2 Jan 2014 01:38:04 +0000 (17:38 -0800)
committerKristian Høgsberg <krh@bitplanet.net>
Thu, 2 Jan 2014 01:38:04 +0000 (17:38 -0800)
https://bugs.freedesktop.org/show_bug.cgi?id=72835

tests/buffer-count-test.c
tests/weston-test-client-helper.c
tests/weston-test-client-helper.h

index ad2bcee..3b66e31 100644 (file)
@@ -45,6 +45,7 @@ init_egl(struct test_data *test_data)
 {
        struct wl_egl_window *native_window;
        struct surface *surface = test_data->client->surface;
+       const char *str, *mesa;
 
        static const EGLint context_attribs[] = {
                EGL_CONTEXT_CLIENT_VERSION, 2,
@@ -95,6 +96,18 @@ init_egl(struct test_data *test_data)
        ret = eglMakeCurrent(test_data->egl_dpy, test_data->egl_surface,
                             test_data->egl_surface, test_data->egl_ctx);
        assert(ret == EGL_TRUE);
+
+       /* This test is specific to mesa 10.0 and later, which is the
+        * first release that doesn't accidentally triple-buffer. */
+       str = (const char *) glGetString(GL_VERSION);
+       mesa = strstr(str, "Mesa ");
+       if (mesa == NULL)
+               skip("unknown EGL implementation (%s)\n", str);
+       if (sscanf(mesa + 5, "%d.%d", &major, &minor) != 2)
+               skip("unrecognized mesa version (%s)\n", str);
+       if (major < 10)
+               skip("mesa version too old (%s)\n", str);
+
 }
 
 TEST(test_buffer_count)
index fd265f2..399aa44 100644 (file)
@@ -496,6 +496,20 @@ static const struct wl_registry_listener registry_listener = {
        handle_global
 };
 
+void
+skip(const char *fmt, ...)
+{
+       va_list argp;
+
+       va_start(argp, fmt);
+       vfprintf(stderr, fmt, argp);
+       va_end(argp);
+
+       /* automake tests uses exit code 77, but we don't have a good
+        * way to make weston exit with that from here. */
+       exit(0);
+}
+
 static void
 log_handler(const char *fmt, va_list args)
 {
index c78fc28..6670ab3 100644 (file)
@@ -124,4 +124,7 @@ frame_callback_wait(struct client *client, int *done);
 int
 get_n_egl_buffers(struct client *client);
 
+void
+skip(const char *fmt, ...);
+
 #endif