diff --git a/cogl/driver/gl/gl/cogl-driver-gl.c b/cogl/driver/gl/gl/cogl-driver-gl.c
index b3da2e7d8..3bf4de9bc 100644
--- a/cogl/driver/gl/gl/cogl-driver-gl.c
+++ b/cogl/driver/gl/gl/cogl-driver-gl.c
@@ -243,17 +243,13 @@ _cogl_driver_pixel_format_to_gl (CoglContext *context,
 }
 
 static CoglBool
-_cogl_get_gl_version (CoglContext *ctx,
-                      int *major_out,
-                      int *minor_out)
+parse_gl_version (const char *version_string,
+                  int *major_out,
+                  int *minor_out)
 {
-  const char *version_string, *major_end, *minor_end;
+  const char *major_end, *minor_end;
   int major = 0, minor = 0;
 
-  /* Get the OpenGL version number */
-  if ((version_string = _cogl_context_get_gl_version (ctx)) == NULL)
-    return FALSE;
-
   /* Extract the major number */
   for (major_end = version_string; *major_end >= '0'
 	 && *major_end <= '9'; major_end++)
@@ -279,6 +275,20 @@ _cogl_get_gl_version (CoglContext *ctx,
   return TRUE;
 }
 
+static CoglBool
+_cogl_get_gl_version (CoglContext *ctx,
+                      int *major_out,
+                      int *minor_out)
+{
+  const char *version_string;
+
+  /* Get the OpenGL version number */
+  if ((version_string = _cogl_context_get_gl_version (ctx)) == NULL)
+    return FALSE;
+
+  return parse_gl_version (version_string, major_out, minor_out);
+}
+
 static CoglBool
 check_gl_version (CoglContext *ctx,
                   CoglError **error)