From 81ef6d0ab362fbdaaed2bc5edfce069b25ab10eb Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Wed, 2 Dec 2020 14:45:58 +0200 Subject: [PATCH] compositor: add weston.ini option use-renderer-shadow This adds an output section option use-renderer-shadow in weston.ini. This option is only recognized with headless and DRM backends, because it requires GL-renderer and does not support resizing outputs. The option is called use-renderer-shadow because this is what it does right now. In the future the same setting will be used to turn on more complex image processing when operational pieces required for color management land. Once color management is implemented, this option is expected to be removed. This option allows developer testing of features to be used to implement color management. This is a rewrite of "weston.ini: introduce use-shadow-fbo in output config" by Harish Krupo. The main.c code is structured differently, the weston.ini option is renamed, and the man page paragraph is moved to weston.ini.man with different content. Cc: Harish Krupo Signed-off-by: Pekka Paalanen --- compositor/main.c | 32 ++++++++++++++++++++++++++++++++ man/weston.ini.man | 13 +++++++++++++ 2 files changed, 45 insertions(+) diff --git a/compositor/main.c b/compositor/main.c index 58b52d0d..58ecdb68 100644 --- a/compositor/main.c +++ b/compositor/main.c @@ -1251,6 +1251,29 @@ wet_output_set_transform(struct weston_output *output, return 0; } +static int +wet_output_set_renderer_shadow(struct weston_output *output, + struct weston_config_section *section) +{ + bool use_shadow = false; + + if (section) { + weston_config_section_get_bool(section, + "use-renderer-shadow", + &use_shadow, false); + } + + if (use_shadow) { + if (!weston_output_set_renderer_shadow_buffer(output)) { + weston_log("Output \"%s\" does not support use-renderer-shadow.\n", + output->name); + return -1; + } + } + + return 0; +} + static void allow_content_protection(struct weston_output *output, struct weston_config_section *section) @@ -1768,6 +1791,9 @@ drm_backend_output_configure(struct weston_output *output, allow_content_protection(output, section); + if (wet_output_set_renderer_shadow(output, section) < 0) + return -1; + return 0; } @@ -2578,6 +2604,12 @@ headless_backend_output_configure(struct weston_output *output) .scale = 1, .transform = WL_OUTPUT_TRANSFORM_NORMAL }; + struct weston_config *wc = wet_get_config(output->compositor); + struct weston_config_section *section; + + section = weston_config_get_section(wc, "output", "name", output->name); + if (wet_output_set_renderer_shadow(output, section) < 0) + return -1; return wet_configure_windowed_output_from_config(output, &defaults); } diff --git a/man/weston.ini.man b/man/weston.ini.man index 202d6c57..423448ad 100644 --- a/man/weston.ini.man +++ b/man/weston.ini.man @@ -551,6 +551,19 @@ A comma separated list of the IDs of applications to place on this output. These IDs should match the application IDs as set with the xdg_shell.set_app_id request. Currently, this option is supported by kiosk-shell. .RE +.TP 7 +.BI "use-renderer-shadow=" boolean +Use a shadow framebuffer enabling two-pass composition for possible color +mangling operations. This is an experimental feature that is only available +on GL-renderer combined with headless or DRM backend. Setting this to true may +turn on various composite rendering effects and/or stop composite-bypass in +DRM-backend. + +.I Only for developer testing. + +Defaults to +.BR false . +.RE .SH "INPUT-METHOD SECTION" .TP 7 .BI "path=" "@weston_libexecdir@/weston-keyboard"