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.
dev
Kristian Høgsberg 11 years ago
parent d8e9833017
commit 8e6f376ef0
  1. 7
      man/weston.ini.man
  2. 20
      src/compositor-drm.c
  3. 1
      weston.ini

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

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

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

Loading…
Cancel
Save