[mutter/gnome-42] renderer-native: Fall back to ARGB if XRGB is not supported



commit ccdd2d32771bb0e871f4475fab5d39cbd0324348
Author: Daniel van Vugt <daniel van vugt canonical com>
Date:   Wed Jul 20 09:09:45 2022 +0000

    renderer-native: Fall back to ARGB if XRGB is not supported
    
    This fixes mutter failing to start on some ARM/Mali boards.
    
    Related: https://gitlab.gnome.org/GNOME/mutter/-/issues/2354
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2519>
    
    (cherry picked from commit 7c8ffe7efebaf9a962484132a7dbfb4ce086c15a)

 src/backends/native/meta-renderer-native.c | 28 ++++++++++++++++++++++------
 1 file changed, 22 insertions(+), 6 deletions(-)
---
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index d538cc25a4..f5f22c7b1e 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -416,12 +416,28 @@ meta_renderer_native_choose_egl_config (CoglDisplay  *cogl_display,
   switch (renderer_gpu_data->mode)
     {
     case META_RENDERER_NATIVE_MODE_GBM:
-      return choose_egl_config_from_gbm_format (egl,
-                                                egl_display,
-                                                attributes,
-                                                GBM_FORMAT_XRGB8888,
-                                                out_config,
-                                                error);
+      {
+        static const uint32_t formats[] = {
+          GBM_FORMAT_XRGB8888,
+          GBM_FORMAT_ARGB8888,
+        };
+        int i;
+
+        for (i = 0; i < G_N_ELEMENTS (formats); i++)
+          {
+            g_clear_error (error);
+
+            if (choose_egl_config_from_gbm_format (egl,
+                                                   egl_display,
+                                                   attributes,
+                                                   formats[i],
+                                                   out_config,
+                                                   error))
+              return TRUE;
+          }
+
+        return FALSE;
+      }
     case META_RENDERER_NATIVE_MODE_SURFACELESS:
       *out_config = EGL_NO_CONFIG_KHR;
       return TRUE;


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