tests: Only run buffer-count test if we have at least mesa 10

https://bugs.freedesktop.org/show_bug.cgi?id=72835
This commit is contained in:
Kristian Høgsberg 2014-01-01 17:38:04 -08:00
parent 4598f965fa
commit 42284f5f9e
3 changed files with 30 additions and 0 deletions

View file

@ -45,6 +45,7 @@ init_egl(struct test_data *test_data)
{ {
struct wl_egl_window *native_window; struct wl_egl_window *native_window;
struct surface *surface = test_data->client->surface; struct surface *surface = test_data->client->surface;
const char *str, *mesa;
static const EGLint context_attribs[] = { static const EGLint context_attribs[] = {
EGL_CONTEXT_CLIENT_VERSION, 2, 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, ret = eglMakeCurrent(test_data->egl_dpy, test_data->egl_surface,
test_data->egl_surface, test_data->egl_ctx); test_data->egl_surface, test_data->egl_ctx);
assert(ret == EGL_TRUE); 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) TEST(test_buffer_count)

View file

@ -496,6 +496,20 @@ static const struct wl_registry_listener registry_listener = {
handle_global 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 static void
log_handler(const char *fmt, va_list args) log_handler(const char *fmt, va_list args)
{ {

View file

@ -124,4 +124,7 @@ frame_callback_wait(struct client *client, int *done);
int int
get_n_egl_buffers(struct client *client); get_n_egl_buffers(struct client *client);
void
skip(const char *fmt, ...);
#endif #endif