summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backends/native/meta-crtc-kms.c12
-rw-r--r--src/backends/native/meta-monitor-manager-kms.c74
-rw-r--r--src/backends/native/meta-output-kms.c12
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);