diff --git a/tests/conform/test-cogl-materials.c b/tests/conform/test-cogl-materials.c
index 70ae5a620..fcf840e60 100644
--- a/tests/conform/test-cogl-materials.c
+++ b/tests/conform/test-cogl-materials.c
@@ -126,6 +126,15 @@ test_invalid_texture_layers (TestState *state, int x, int y)
   test_material_with_primitives (state, x, y, 0xffffffff);
 }
 
+static gboolean
+using_gles2_driver (void)
+{
+  /* FIXME: This should probably be replaced with some way to query
+     the driver from Cogl */
+  return g_str_has_prefix ((const char *) glGetString (GL_VERSION),
+                           "OpenGL ES 2");
+}
+
 static void
 test_using_all_layers (TestState *state, int x, int y)
 {
@@ -154,22 +163,28 @@ test_using_all_layers (TestState *state, int x, int y)
   /* FIXME: Cogl doesn't provide a way to query the maximum number of
      texture layers so for now we'll just ask GL directly. */
 #ifdef COGL_HAS_GLES2
-  {
-    GLint n_image_units, n_attribs;
-    /* GLES 2 doesn't have GL_MAX_TEXTURE_UNITS and it uses
-       GL_MAX_TEXTURE_IMAGE_UNITS instead */
-    glGetIntegerv (GL_MAX_TEXTURE_IMAGE_UNITS, &n_image_units);
-    /* Cogl needs a vertex attrib for each layer to upload the texture
-       coordinates */
-    glGetIntegerv (GL_MAX_VERTEX_ATTRIBS, &n_attribs);
-    /* We can't use two of the attribs because they are used by the
-       position and color */
-    n_attribs -= 2;
-    n_layers = MIN (n_attribs, n_image_units);
-  }
-#else
-  glGetIntegerv (GL_MAX_TEXTURE_UNITS, &n_layers);
+  if (using_gles2_driver ())
+    {
+      GLint n_image_units, n_attribs;
+      /* GLES 2 doesn't have GL_MAX_TEXTURE_UNITS and it uses
+         GL_MAX_TEXTURE_IMAGE_UNITS instead */
+      glGetIntegerv (GL_MAX_TEXTURE_IMAGE_UNITS, &n_image_units);
+      /* Cogl needs a vertex attrib for each layer to upload the texture
+         coordinates */
+      glGetIntegerv (GL_MAX_VERTEX_ATTRIBS, &n_attribs);
+      /* We can't use two of the attribs because they are used by the
+         position and color */
+      n_attribs -= 2;
+      n_layers = MIN (n_attribs, n_image_units);
+    }
+  else
 #endif
+    {
+#if defined(COGL_HAS_GLES1) || defined(COGL_HAS_GL)
+      glGetIntegerv (GL_MAX_TEXTURE_UNITS, &n_layers);
+#endif
+    }
+
   /* FIXME: is this still true? */
   /* Cogl currently can't cope with more than 32 layers so we'll also
      limit the maximum to that. */