diff options
author | Hans de Goede <jwrdegoede@fedoraproject.org> | 2020-09-16 16:57:41 +0000 |
---|---|---|
committer | Hans de Goede <jwrdegoede@fedoraproject.org> | 2020-09-16 16:57:41 +0000 |
commit | 15d80bd115414148759aa81672a42438ac33ea13 (patch) | |
tree | 703a7e311f32e397005274182f64315600684da7 | |
parent | 8dba434b2d9631d67cf3ef6d7c00e4c25b4b9e7a (diff) | |
parent | 18f87e81aa32cbc3ef753a667ab5ee074f2ff49b (diff) |
Merge branch 'drm-usermode' into 'master'
drm: Honor modes selected by the user through video= kernel cmdline argument
See merge request plymouth/plymouth!84
-rw-r--r-- | src/plugins/renderers/drm/plugin.c | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c index 4dbf8da8..1f222af9 100644 --- a/src/plugins/renderers/drm/plugin.c +++ b/src/plugins/renderers/drm/plugin.c @@ -157,7 +157,6 @@ struct _ply_renderer_backend uint32_t is_active : 1; uint32_t requires_explicit_flushing : 1; - uint32_t use_preferred_mode : 1; int panel_width; int panel_height; @@ -171,23 +170,6 @@ static bool open_input_source (ply_renderer_backend_t *backend, static void flush_head (ply_renderer_backend_t *backend, ply_renderer_head_t *head); -/* A small helper to determine if we should try to keep the current mode - * or pick the best mode ourselves, we keep the current mode only if the - * user specified a specific mode using video= on the commandline. - */ -static bool -should_use_preferred_mode (void) -{ - bool use_preferred_mode = true; - - if (ply_kernel_command_line_get_string_after_prefix ("video=")) - use_preferred_mode = false; - - ply_trace ("should_use_preferred_mode: %d", use_preferred_mode); - - return use_preferred_mode; -} - static bool ply_renderer_buffer_map (ply_renderer_backend_t *backend, ply_renderer_buffer_t *buffer) @@ -903,7 +885,6 @@ create_backend (const char *device_name, backend->output_buffers = ply_hashtable_new (ply_hashtable_direct_hash, ply_hashtable_direct_compare); backend->heads_by_controller_id = ply_hashtable_new (NULL, NULL); - backend->use_preferred_mode = should_use_preferred_mode (); return backend; } @@ -1134,6 +1115,14 @@ get_preferred_mode (drmModeConnector *connector) int i; for (i = 0; i < connector->count_modes; i++) + if (connector->modes[i].type & DRM_MODE_TYPE_USERDEF) { + ply_trace ("Found user set mode %dx%d at index %d", + connector->modes[i].hdisplay, + connector->modes[i].vdisplay, i); + return &connector->modes[i]; + } + + for (i = 0; i < connector->count_modes; i++) if (connector->modes[i].type & DRM_MODE_TYPE_PREFERRED) { ply_trace ("Found preferred mode %dx%d at index %d", connector->modes[i].hdisplay, @@ -1190,7 +1179,7 @@ get_output_info (ply_renderer_backend_t *backend, output_get_controller_info (backend, connector, output); ply_renderer_connector_get_rotation_and_tiled (backend, connector, output); - if (!output->tiled && backend->use_preferred_mode) + if (!output->tiled) mode = get_preferred_mode (connector); if (!mode && output->controller_id) |