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
This commit is contained in:
Jonas Ådahl 2019-04-26 09:53:25 +02:00 committed by Georges Basile Stavracas Neto
parent 6aa1026600
commit 22a91f23ad
3 changed files with 95 additions and 3 deletions

View File

@ -154,10 +154,18 @@ meta_crtc_kms_set_mode (MetaCrtc *crtc,
connectors = generate_crtc_connector_list (gpu, crtc); connectors = generate_crtc_connector_list (gpu, crtc);
if (connectors) 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 else
{
mode = NULL; mode = NULL;
g_debug ("Unsetting CRTC (%ld) mode", crtc->crtc_id);
}
meta_kms_update_mode_set (kms_update, meta_kms_update_mode_set (kms_update,
meta_crtc_kms_get_kms_crtc (crtc), meta_crtc_kms_get_kms_crtc (crtc),
g_steal_pointer (&connectors), g_steal_pointer (&connectors),

View File

@ -383,6 +383,68 @@ meta_monitor_manager_kms_get_crtc_gamma (MetaMonitorManager *manager,
drmModeFreeCrtc (kms_crtc); 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 static void
meta_monitor_manager_kms_set_crtc_gamma (MetaMonitorManager *manager, meta_monitor_manager_kms_set_crtc_gamma (MetaMonitorManager *manager,
MetaCrtc *crtc, MetaCrtc *crtc,
@ -393,8 +455,18 @@ meta_monitor_manager_kms_set_crtc_gamma (MetaMonitorManager *manager,
{ {
MetaGpu *gpu = meta_crtc_get_gpu (crtc); MetaGpu *gpu = meta_crtc_get_gpu (crtc);
int kms_fd = meta_gpu_kms_get_fd (META_GPU_KMS (gpu)); 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 static void

View File

@ -69,6 +69,11 @@ meta_output_kms_set_underscan (MetaOutput *output,
crtc = meta_output_get_assigned_crtc (output); crtc = meta_output_get_assigned_crtc (output);
hborder = MIN (128, (uint64_t) round (crtc->current_mode->width * 0.05)); hborder = MIN (128, (uint64_t) round (crtc->current_mode->width * 0.05));
vborder = MIN (128, (uint64_t) round (crtc->current_mode->height * 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, meta_kms_connector_set_underscanning (output_kms->kms_connector,
kms_update, kms_update,
hborder, hborder,
@ -76,6 +81,9 @@ meta_output_kms_set_underscan (MetaOutput *output,
} }
else 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, meta_kms_connector_unset_underscanning (output_kms->kms_connector,
kms_update); kms_update);
} }
@ -96,6 +104,10 @@ meta_output_kms_set_power_save_mode (MetaOutput *output,
{ {
MetaOutputKms *output_kms = output->driver_private; 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, meta_kms_connector_update_set_dpms_state (output_kms->kms_connector,
kms_update, kms_update,
dpms_state); dpms_state);