diff options
author | Jonas Ã…dahl <jadahl@gmail.com> | 2019-04-26 09:53:25 +0200 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2019-06-20 13:31:56 +0000 |
commit | 22a91f23aded6acbf19b1b8a2602aa10943da694 (patch) | |
tree | 07887ebf6815f4269cb6970f207f5035638ca9d7 | |
parent | 6aa1026600c3b2bd085c96bace7b5855a8ceb325 (diff) | |
download | mutter-22a91f23aded6acbf19b1b8a2602aa10943da694.tar.gz |
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
-rw-r--r-- | src/backends/native/meta-crtc-kms.c | 12 | ||||
-rw-r--r-- | src/backends/native/meta-monitor-manager-kms.c | 74 | ||||
-rw-r--r-- | 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); |