Pick a config instead of hard coding one.
diff --git a/egl-compositor.c b/egl-compositor.c
index 0cf77f6..04f6d00 100644
--- a/egl-compositor.c
+++ b/egl-compositor.c
@@ -578,9 +578,6 @@
 	if (es->surface != EGL_NO_SURFACE)
 		eglDestroySurface(ec->display, es->surface);
 
-	/* FIXME: We need to use a single buffer config without depth
-	 * or stencil buffers here to keep egl from creating auxillary
-	 * buffers for the pixmap here. */
 	es->surface = eglCreateSurfaceForName(ec->display, ec->config,
 					      name, width, height, stride, NULL);
 
@@ -803,14 +800,65 @@
 	return flink.name;
 }
 
+static int
+pick_config(struct egl_compositor *ec)
+{
+	EGLConfig configs[100];
+	EGLint value, count;
+	int i;
+
+	if (!eglGetConfigs(ec->display, configs, ARRAY_LENGTH(configs), &count)) {
+		fprintf(stderr, "failed to get configs\n");
+		return -1;
+	}
+
+	ec->config = EGL_NO_CONFIG;
+	for (i = 0; i < count; i++) {
+		eglGetConfigAttrib(ec->display,
+				   configs[i],
+				   EGL_DEPTH_SIZE,
+				   &value);
+		if (value > 0) {
+			fprintf(stderr, "config %d has depth size %d\n", i, value);
+			continue;
+		}
+
+		eglGetConfigAttrib(ec->display,
+				   configs[i],
+				   EGL_STENCIL_SIZE,
+				   &value);
+		if (value > 0) {
+			fprintf(stderr, "config %d has stencil size %d\n", i, value);
+			continue;
+		}
+
+		eglGetConfigAttrib(ec->display,
+				   configs[i],
+				   EGL_CONFIG_CAVEAT,
+				   &value);
+		if (value != EGL_NONE) {
+			fprintf(stderr, "config %d has caveat %d\n", i, value);
+			continue;
+		}
+
+		ec->config = configs[i];
+		break;
+	}
+
+	if (ec->config == EGL_NO_CONFIG) {
+		fprintf(stderr, "found no config without depth or stencil buffers\n");
+		return -1;
+	}
+
+	return 0;
+}
 
 static const char gem_device[] = "/dev/dri/card0";
 
 WL_EXPORT struct wl_compositor *
 wl_compositor_create(struct wl_display *display)
 {
-	EGLConfig configs[64];
-	EGLint major, minor, count;
+	EGLint major, minor;
 	struct egl_compositor *ec;
 	const char *filename;
 	struct screenshooter *shooter;
@@ -837,12 +885,9 @@
 		return NULL;
 	}
 
-	if (!eglGetConfigs(ec->display, configs, ARRAY_LENGTH(configs), &count)) {
-		fprintf(stderr, "failed to get configs\n");
+	if (pick_config(ec))
 		return NULL;
-	}
  
-	ec->config = configs[24];
 	fb_name = create_frontbuffer(eglGetDisplayFD(ec->display),
 				     &ec->width, &ec->height, &stride);
 	ec->surface = eglCreateSurfaceForName(ec->display, ec->config,