compositor-drm: Support configuring the framebuffer format from weston.ini

This patch adds a new weston.ini key, gbm-format, to the [core] section.
This new key can be rgb565, xrgb8888 or xrgb2101010, and makes the
compositor use the corresponding GBM format for the framebuffer.
This commit is contained in:
Kristian Høgsberg 2013-10-16 16:31:42 -07:00
parent d8e9833017
commit 8e6f376ef0
3 changed files with 27 additions and 1 deletions

View File

@ -104,6 +104,13 @@ directory are:
.BR xwayland.so
.fi
.RE
.TP 7
.BI "gbm-format="format
sets the GBM format used for the framebuffer for the GBM backend. Can be
.B xrgb8888,
.B xrgb2101010,
.B rgb565.
By default, xrgb8888 is used.
.RS
.PP

View File

@ -2581,9 +2581,11 @@ drm_compositor_create(struct wl_display *display,
struct weston_config *config)
{
struct drm_compositor *ec;
struct weston_config_section *section;
struct udev_device *drm_device;
struct wl_event_loop *loop;
const char *path;
char *s;
uint32_t key;
weston_log("initializing drm backend\n");
@ -2595,7 +2597,23 @@ drm_compositor_create(struct wl_display *display,
/* KMS support for sprites is not complete yet, so disable the
* functionality for now. */
ec->sprites_are_broken = 1;
ec->format = GBM_FORMAT_XRGB8888;
section = weston_config_get_section(config, "core", NULL, NULL);
weston_config_section_get_string(section,
"gbm-format", &s, "xrgb8888");
if (strcmp(s, "xrgb8888") == 0)
ec->format = GBM_FORMAT_XRGB8888;
else if (strcmp(s, "rgb565") == 0)
ec->format = GBM_FORMAT_RGB565;
else if (strcmp(s, "xrgb2101010") == 0)
ec->format = GBM_FORMAT_XRGB2101010;
else {
weston_log("fatal: unrecognized pixel format: %s\n", s);
free(s);
goto err_base;
}
free(s);
ec->use_pixman = param->use_pixman;
if (weston_compositor_init(&ec->base, display, argc, argv,

View File

@ -1,6 +1,7 @@
[core]
#modules=xwayland.so,cms-colord.so
#shell=desktop-shell.so
#gbm-format=xrgb2101010
[shell]
background-image=/usr/share/backgrounds/gnome/Aqua.jpg