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 <harishkrupo@gmail.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This commit is contained in:
Pekka Paalanen 2020-12-02 14:45:58 +02:00
parent 7ef26886f5
commit 81ef6d0ab3
2 changed files with 45 additions and 0 deletions

View file

@ -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);
}

View file

@ -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"