[mutter] backends/native: Add some KMS debug logging



commit 22a91f23aded6acbf19b1b8a2602aa10943da694
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Fri Apr 26 09:53:25 2019 +0200

    backends/native: Add some KMS debug logging
    
    Using the g_debug() macro. Set G_DEBUG_MESSAGES to "mutter" to activate
    log.
    
    https://gitlab.gnome.org/GNOME/mutter/issues/548
    https://gitlab.gnome.org/GNOME/mutter/merge_requests/525

 src/backends/native/meta-crtc-kms.c            | 12 ++++-
 src/backends/native/meta-monitor-manager-kms.c | 74 +++++++++++++++++++++++++-
 src/backends/native/meta-output-kms.c          | 12 +++++
 3 files changed, 95 insertions(+), 3 deletions(-)
---
diff --git a/src/backends/native/meta-crtc-kms.c b/src/backends/native/meta-crtc-kms.c
index 10d344e62..de49d6180 100644
--- a/src/backends/native/meta-crtc-kms.c
+++ b/src/backends/native/meta-crtc-kms.c
@@ -154,9 +154,17 @@ meta_crtc_kms_set_mode (MetaCrtc      *crtc,
   connectors = generate_crtc_connector_list (gpu, crtc);
 
   if (connectors)
-    mode = crtc->current_mode->driver_private;
+    {
+      mode = crtc->current_mode->driver_private;
+
+      g_debug ("Setting CRTC (%ld) mode to %s", crtc->crtc_id, mode->name);
+    }
   else
-    mode = NULL;
+    {
+      mode = NULL;
+
+      g_debug ("Unsetting CRTC (%ld) mode", crtc->crtc_id);
+    }
 
   meta_kms_update_mode_set (kms_update,
                             meta_crtc_kms_get_kms_crtc (crtc),
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
index 58fd93fcc..7f094ab42 100644
--- a/src/backends/native/meta-monitor-manager-kms.c
+++ b/src/backends/native/meta-monitor-manager-kms.c
@@ -383,6 +383,68 @@ meta_monitor_manager_kms_get_crtc_gamma (MetaMonitorManager  *manager,
   drmModeFreeCrtc (kms_crtc);
 }
 
+static char *
+generate_gamma_ramp_string (size_t          size,
+                            unsigned short *red,
+                            unsigned short *green,
+                            unsigned short *blue)
+{
+  GString *string;
+  int color;
+
+  string = g_string_new ("[");
+  for (color = 0; color < 3; color++)
+    {
+      unsigned short **color_ptr;
+      char color_char;
+      size_t i;
+
+      switch (color)
+        {
+        case 0:
+          color_ptr = &red;
+          color_char = 'r';
+          break;
+        case 1:
+          color_ptr = &green;
+          color_char = 'g';
+          break;
+        case 2:
+          color_ptr = &blue;
+          color_char = 'b';
+          break;
+        }
+
+      g_string_append_printf (string, " %c: ", color_char);
+      for (i = 0; i < MIN (4, size); i++)
+        {
+          int j;
+
+          if (size > 4)
+            {
+              if (i == 2)
+                g_string_append (string, ",...");
+
+              if (i >= 2)
+                j = i + (size - 4);
+              else
+                j = i;
+            }
+          else
+            {
+              j = i;
+            }
+          g_string_append_printf (string, "%s%hu",
+                                  j == 0 ? "" : ",",
+                                  (*color_ptr)[i]);
+        }
+    }
+
+  g_string_append (string, " ]");
+
+  return g_string_free (string, FALSE);
+}
+
 static void
 meta_monitor_manager_kms_set_crtc_gamma (MetaMonitorManager *manager,
                                          MetaCrtc           *crtc,
@@ -393,8 +455,18 @@ meta_monitor_manager_kms_set_crtc_gamma (MetaMonitorManager *manager,
 {
   MetaGpu *gpu = meta_crtc_get_gpu (crtc);
   int kms_fd = meta_gpu_kms_get_fd (META_GPU_KMS (gpu));
+  g_autofree char *gamma_ramp_string = NULL;
+  int ret;
 
-  drmModeCrtcSetGamma (kms_fd, crtc->crtc_id, size, red, green, blue);
+  gamma_ramp_string = generate_gamma_ramp_string (size, red, green, blue);
+  g_debug ("Setting CRTC (%ld) gamma to %s", crtc->crtc_id, gamma_ramp_string);
+
+  ret = drmModeCrtcSetGamma (kms_fd, crtc->crtc_id, size, red, green, blue);
+  if (ret != 0)
+    {
+      g_warning ("Failed to set CRTC (%ld) Gamma: %s",
+                 crtc->crtc_id, g_strerror (-ret));
+    }
 }
 
 static void
diff --git a/src/backends/native/meta-output-kms.c b/src/backends/native/meta-output-kms.c
index 42633702c..1ec17b9f9 100644
--- a/src/backends/native/meta-output-kms.c
+++ b/src/backends/native/meta-output-kms.c
@@ -69,6 +69,11 @@ meta_output_kms_set_underscan (MetaOutput    *output,
       crtc = meta_output_get_assigned_crtc (output);
       hborder = MIN (128, (uint64_t) round (crtc->current_mode->width * 0.05));
       vborder = MIN (128, (uint64_t) round (crtc->current_mode->height * 0.05));
+
+      g_debug ("Setting underscan of connector %s to %lu x %lu",
+               meta_kms_connector_get_name (output_kms->kms_connector),
+               hborder, vborder);
+
       meta_kms_connector_set_underscanning (output_kms->kms_connector,
                                             kms_update,
                                             hborder,
@@ -76,6 +81,9 @@ meta_output_kms_set_underscan (MetaOutput    *output,
     }
   else
     {
+      g_debug ("Unsetting underscan of connector %s",
+               meta_kms_connector_get_name (output_kms->kms_connector));
+
       meta_kms_connector_unset_underscanning (output_kms->kms_connector,
                                               kms_update);
     }
@@ -96,6 +104,10 @@ meta_output_kms_set_power_save_mode (MetaOutput    *output,
 {
   MetaOutputKms *output_kms = output->driver_private;
 
+  g_debug ("Setting DPMS state of connector %s to %lu",
+           meta_kms_connector_get_name (output_kms->kms_connector),
+           dpms_state);
+
   meta_kms_connector_update_set_dpms_state (output_kms->kms_connector,
                                             kms_update,
                                             dpms_state);


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