[mutter] cogl: Move GL context/version details into the driver



commit 1285619bcf18f3ad4502108e43abb842961146ab
Author: Adam Jackson <ajax redhat com>
Date:   Tue Jan 28 15:15:44 2020 -0500

    cogl: Move GL context/version details into the driver
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1194

 cogl/cogl/cogl-context-private.h           | 14 -----
 cogl/cogl/cogl-context.c                   | 92 ------------------------------
 cogl/cogl/driver/gl/cogl-util-gl-private.h | 14 +++++
 cogl/cogl/driver/gl/cogl-util-gl.c         | 88 ++++++++++++++++++++++++++++
 4 files changed, 102 insertions(+), 106 deletions(-)
---
diff --git a/cogl/cogl/cogl-context-private.h b/cogl/cogl/cogl-context-private.h
index 4151f3bf7f..a2ed950d0c 100644
--- a/cogl/cogl/cogl-context-private.h
+++ b/cogl/cogl/cogl-context-private.h
@@ -310,18 +310,4 @@ void
 _cogl_context_set_current_modelview_entry (CoglContext *context,
                                            CoglMatrixEntry *entry);
 
-/*
- * _cogl_context_get_gl_extensions:
- * @context: A CoglContext
- *
- * Return value: a NULL-terminated array of strings representing the
- *   supported extensions by the current driver. This array is owned
- *   by the caller and should be freed with g_strfreev().
- */
-char **
-_cogl_context_get_gl_extensions (CoglContext *context);
-
-const char *
-_cogl_context_get_gl_version (CoglContext *context);
-
 #endif /* __COGL_CONTEXT_PRIVATE_H */
diff --git a/cogl/cogl/cogl-context.c b/cogl/cogl/cogl-context.c
index 1d84cf544f..908738f295 100644
--- a/cogl/cogl/cogl-context.c
+++ b/cogl/cogl/cogl-context.c
@@ -56,10 +56,6 @@
 #define GL_POINT_SPRITE 0x8861
 #endif
 
-#ifndef GL_NUM_EXTENSIONS
-#define GL_NUM_EXTENSIONS 0x821D
-#endif
-
 /* This is a relatively new extension */
 #ifndef GL_PURGED_CONTEXT_RESET_NV
 #define GL_PURGED_CONTEXT_RESET_NV 0x92BB
@@ -469,94 +465,6 @@ _cogl_context_set_current_modelview_entry (CoglContext *context,
   context->current_modelview_entry = entry;
 }
 
-char **
-_cogl_context_get_gl_extensions (CoglContext *context)
-{
-  const char *env_disabled_extensions;
-  char **ret;
-
-  /* In GL 3, querying GL_EXTENSIONS is deprecated so we have to build
-   * the array using glGetStringi instead */
-#ifdef HAVE_COGL_GL
-  if (context->driver == COGL_DRIVER_GL3)
-    {
-      int num_extensions, i;
-
-      context->glGetIntegerv (GL_NUM_EXTENSIONS, &num_extensions);
-
-      ret = g_malloc (sizeof (char *) * (num_extensions + 1));
-
-      for (i = 0; i < num_extensions; i++)
-        {
-          const char *ext =
-            (const char *) context->glGetStringi (GL_EXTENSIONS, i);
-          ret[i] = g_strdup (ext);
-        }
-
-      ret[num_extensions] = NULL;
-    }
-  else
-#endif
-    {
-      const char *all_extensions =
-        (const char *) context->glGetString (GL_EXTENSIONS);
-
-      ret = g_strsplit (all_extensions, " ", 0 /* max tokens */);
-    }
-
-  if ((env_disabled_extensions = g_getenv ("COGL_DISABLE_GL_EXTENSIONS")))
-    {
-      char **split_env_disabled_extensions;
-      char **src, **dst;
-
-      if (env_disabled_extensions)
-        split_env_disabled_extensions =
-          g_strsplit (env_disabled_extensions,
-                      ",",
-                      0 /* no max tokens */);
-      else
-        split_env_disabled_extensions = NULL;
-
-      for (dst = ret, src = ret;
-           *src;
-           src++)
-        {
-          char **d;
-
-          if (split_env_disabled_extensions)
-            for (d = split_env_disabled_extensions; *d; d++)
-              if (!strcmp (*src, *d))
-                goto disabled;
-
-          *(dst++) = *src;
-          continue;
-
-        disabled:
-          g_free (*src);
-          continue;
-        }
-
-      *dst = NULL;
-
-      if (split_env_disabled_extensions)
-        g_strfreev (split_env_disabled_extensions);
-    }
-
-  return ret;
-}
-
-const char *
-_cogl_context_get_gl_version (CoglContext *context)
-{
-  const char *version_override;
-
-  if ((version_override = g_getenv ("COGL_OVERRIDE_GL_VERSION")))
-    return version_override;
-  else
-    return (const char *) context->glGetString (GL_VERSION);
-
-}
-
 int64_t
 cogl_get_clock_time (CoglContext *context)
 {
diff --git a/cogl/cogl/driver/gl/cogl-util-gl-private.h b/cogl/cogl/driver/gl/cogl-util-gl-private.h
index c434ebde01..369baab874 100644
--- a/cogl/cogl/driver/gl/cogl-util-gl-private.h
+++ b/cogl/cogl/driver/gl/cogl-util-gl-private.h
@@ -94,6 +94,20 @@ _cogl_gl_util_catch_out_of_memory (CoglContext *ctx, GError **error);
 gboolean
 _cogl_driver_gl_is_hardware_accelerated (CoglContext *context);
 
+/*
+ * _cogl_context_get_gl_extensions:
+ * @context: A CoglContext
+ *
+ * Return value: a NULL-terminated array of strings representing the
+ *   supported extensions by the current driver. This array is owned
+ *   by the caller and should be freed with g_strfreev().
+ */
+char **
+_cogl_context_get_gl_extensions (CoglContext *context);
+
+const char *
+_cogl_context_get_gl_version (CoglContext *context);
+
 /* Parses a GL version number stored in a string. @version_string must
  * point to the beginning of the version number (ie, it can't point to
  * the "OpenGL ES" part on GLES). The version number can be followed
diff --git a/cogl/cogl/driver/gl/cogl-util-gl.c b/cogl/cogl/driver/gl/cogl-util-gl.c
index d21ee01248..52ad54076f 100644
--- a/cogl/cogl/driver/gl/cogl-util-gl.c
+++ b/cogl/cogl/driver/gl/cogl-util-gl.c
@@ -147,6 +147,94 @@ _cogl_gl_util_catch_out_of_memory (CoglContext *ctx, GError **error)
   return FALSE;
 }
 
+char **
+_cogl_context_get_gl_extensions (CoglContext *context)
+{
+  const char *env_disabled_extensions;
+  char **ret;
+
+  /* In GL 3, querying GL_EXTENSIONS is deprecated so we have to build
+   * the array using glGetStringi instead */
+#ifdef HAVE_COGL_GL
+  if (context->driver == COGL_DRIVER_GL3)
+    {
+      int num_extensions, i;
+
+      context->glGetIntegerv (GL_NUM_EXTENSIONS, &num_extensions);
+
+      ret = g_malloc (sizeof (char *) * (num_extensions + 1));
+
+      for (i = 0; i < num_extensions; i++)
+        {
+          const char *ext =
+            (const char *) context->glGetStringi (GL_EXTENSIONS, i);
+          ret[i] = g_strdup (ext);
+        }
+
+      ret[num_extensions] = NULL;
+    }
+  else
+#endif
+    {
+      const char *all_extensions =
+        (const char *) context->glGetString (GL_EXTENSIONS);
+
+      ret = g_strsplit (all_extensions, " ", 0 /* max tokens */);
+    }
+
+  if ((env_disabled_extensions = g_getenv ("COGL_DISABLE_GL_EXTENSIONS")))
+    {
+      char **split_env_disabled_extensions;
+      char **src, **dst;
+
+      if (env_disabled_extensions)
+        split_env_disabled_extensions =
+          g_strsplit (env_disabled_extensions,
+                      ",",
+                      0 /* no max tokens */);
+      else
+        split_env_disabled_extensions = NULL;
+
+      for (dst = ret, src = ret;
+           *src;
+           src++)
+        {
+          char **d;
+
+          if (split_env_disabled_extensions)
+            for (d = split_env_disabled_extensions; *d; d++)
+              if (!strcmp (*src, *d))
+                goto disabled;
+
+          *(dst++) = *src;
+          continue;
+
+        disabled:
+          g_free (*src);
+          continue;
+        }
+
+      *dst = NULL;
+
+      if (split_env_disabled_extensions)
+        g_strfreev (split_env_disabled_extensions);
+    }
+
+  return ret;
+}
+
+const char *
+_cogl_context_get_gl_version (CoglContext *context)
+{
+  const char *version_override;
+
+  if ((version_override = g_getenv ("COGL_OVERRIDE_GL_VERSION")))
+    return version_override;
+  else
+    return (const char *) context->glGetString (GL_VERSION);
+
+}
+
 gboolean
 _cogl_gl_util_parse_gl_version (const char *version_string,
                                 int *major_out,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]