[mutter/gbsneto/sharing-is-good: 1/2] cogl/gl: Move shared functions to shared file



commit 95642d05a6c69460e9be6ccf68e5c0e746fbdba0
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Mar 26 18:13:51 2020 -0300

    cogl/gl: Move shared functions to shared file
    
    Cogl shares some GL functions between the GLES and the big
    GL drivers. Namely, it shares _cogl_driver_gl_context_init
    and _cogl_driver_gl_context_deinit between these two drivers.
    
    The plot twist is: even though these functions are shared and
    their prototypes are in cogl-util-gl-private.h, they're actually
    implemented inside cogl-driver-gl.c, which is strictly only
    about the big GL driver.
    
    This is problematic when building Mutter on ARM v7, where we
    need to disable OpenGL, but keep GLES enabled.
    
    Fix this by moving the shared GL functions to a shared GL file.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1151

 cogl/cogl/driver/gl/cogl-util-gl.c      | 22 ++++++++++++++++++++++
 cogl/cogl/driver/gl/gl/cogl-driver-gl.c | 22 +++++-----------------
 2 files changed, 27 insertions(+), 17 deletions(-)
---
diff --git a/cogl/cogl/driver/gl/cogl-util-gl.c b/cogl/cogl/driver/gl/cogl-util-gl.c
index 7939deabc..abfab26a3 100644
--- a/cogl/cogl/driver/gl/cogl-util-gl.c
+++ b/cogl/cogl/driver/gl/cogl-util-gl.c
@@ -34,6 +34,7 @@
 
 #include "cogl-types.h"
 #include "cogl-context-private.h"
+#include "driver/gl/cogl-pipeline-opengl-private.h"
 #include "driver/gl/cogl-util-gl-private.h"
 
 #ifdef COGL_GL_DEBUG
@@ -74,6 +75,27 @@ _cogl_gl_error_to_string (GLenum error_code)
 }
 #endif /* COGL_GL_DEBUG */
 
+gboolean
+_cogl_driver_gl_context_init (CoglContext *context,
+                              GError **error)
+{
+  context->texture_units =
+    g_array_new (FALSE, FALSE, sizeof (CoglTextureUnit));
+
+  /* See cogl-pipeline.c for more details about why we leave texture unit 1
+   * active by default... */
+  context->active_texture_unit = 1;
+  GE (context, glActiveTexture (GL_TEXTURE1));
+
+  return TRUE;
+}
+
+void
+_cogl_driver_gl_context_deinit (CoglContext *context)
+{
+  _cogl_destroy_texture_units (context);
+}
+
 GLenum
 _cogl_gl_util_get_error (CoglContext *ctx)
 {
diff --git a/cogl/cogl/driver/gl/gl/cogl-driver-gl.c b/cogl/cogl/driver/gl/gl/cogl-driver-gl.c
index f1b748118..041ca2041 100644
--- a/cogl/cogl/driver/gl/gl/cogl-driver-gl.c
+++ b/cogl/cogl/driver/gl/gl/cogl-driver-gl.c
@@ -42,19 +42,13 @@
 #include "driver/gl/cogl-attribute-gl-private.h"
 #include "driver/gl/cogl-clip-stack-gl-private.h"
 #include "driver/gl/cogl-buffer-gl-private.h"
-#include "driver/gl/cogl-pipeline-opengl-private.h"
 
-gboolean
-_cogl_driver_gl_context_init (CoglContext *context,
-                              GError **error)
+static gboolean
+_cogl_driver_gl_real_context_init (CoglContext  *context,
+                                   GError      **error)
 {
-  context->texture_units =
-    g_array_new (FALSE, FALSE, sizeof (CoglTextureUnit));
 
-  /* See cogl-pipeline.c for more details about why we leave texture unit 1
-   * active by default... */
-  context->active_texture_unit = 1;
-  GE (context, glActiveTexture (GL_TEXTURE1));
+  _cogl_driver_gl_context_init (context, error);
 
   if ((context->driver == COGL_DRIVER_GL3))
     {
@@ -88,12 +82,6 @@ _cogl_driver_gl_context_init (CoglContext *context,
   return TRUE;
 }
 
-void
-_cogl_driver_gl_context_deinit (CoglContext *context)
-{
-  _cogl_destroy_texture_units (context);
-}
-
 static gboolean
 _cogl_driver_pixel_format_from_gl_internal (CoglContext *context,
                                             GLenum gl_int_format,
@@ -543,7 +531,7 @@ _cogl_driver_update_features (CoglContext *ctx,
 const CoglDriverVtable
 _cogl_driver_gl =
   {
-    _cogl_driver_gl_context_init,
+    _cogl_driver_gl_real_context_init,
     _cogl_driver_gl_context_deinit,
     _cogl_driver_pixel_format_from_gl_internal,
     _cogl_driver_pixel_format_to_gl,


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