tests: Only run buffer-count test if we have at least mesa 10
https://bugs.freedesktop.org/show_bug.cgi?id=72835
diff --git a/tests/buffer-count-test.c b/tests/buffer-count-test.c
index ad2bcee..3b66e31 100644
--- a/tests/buffer-count-test.c
+++ b/tests/buffer-count-test.c
@@ -45,6 +45,7 @@
{
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 @@
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)
diff --git a/tests/weston-test-client-helper.c b/tests/weston-test-client-helper.c
index fd265f2..399aa44 100644
--- a/tests/weston-test-client-helper.c
+++ b/tests/weston-test-client-helper.c
@@ -496,6 +496,20 @@
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)
{
diff --git a/tests/weston-test-client-helper.h b/tests/weston-test-client-helper.h
index c78fc28..6670ab3 100644
--- a/tests/weston-test-client-helper.h
+++ b/tests/weston-test-client-helper.h
@@ -124,4 +124,7 @@
int
get_n_egl_buffers(struct client *client);
+void
+skip(const char *fmt, ...);
+
#endif