libweston: move headless_backend::renderer_type to weston_renderer::type
Move the renderer type from struct headless_backend into struct weston_renderer to store the chosen renderer type in a unified manner. This will later allow secondary backends to determine the renderer type chosen by the primary backend. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
This commit is contained in:
parent
a8e93ed90f
commit
51c8882991
@ -49,18 +49,11 @@
|
||||
#include "presentation-time-server-protocol.h"
|
||||
#include <libweston/windowed-output-api.h>
|
||||
|
||||
enum headless_renderer_type {
|
||||
HEADLESS_NOOP,
|
||||
HEADLESS_PIXMAN,
|
||||
HEADLESS_GL,
|
||||
};
|
||||
|
||||
struct headless_backend {
|
||||
struct weston_backend base;
|
||||
struct weston_compositor *compositor;
|
||||
|
||||
struct weston_seat fake_seat;
|
||||
enum headless_renderer_type renderer_type;
|
||||
|
||||
struct gl_renderer_interface *glri;
|
||||
bool decorate;
|
||||
@ -285,14 +278,14 @@ headless_output_disable(struct weston_output *base)
|
||||
|
||||
wl_event_source_remove(output->finish_frame_timer);
|
||||
|
||||
switch (b->renderer_type) {
|
||||
case HEADLESS_GL:
|
||||
switch (b->compositor->renderer->type) {
|
||||
case WESTON_RENDERER_GL:
|
||||
headless_output_disable_gl(output);
|
||||
break;
|
||||
case HEADLESS_PIXMAN:
|
||||
case WESTON_RENDERER_PIXMAN:
|
||||
headless_output_disable_pixman(output);
|
||||
break;
|
||||
case HEADLESS_NOOP:
|
||||
case WESTON_RENDERER_NOOP:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -418,14 +411,14 @@ headless_output_enable(struct weston_output *base)
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (b->renderer_type) {
|
||||
case HEADLESS_GL:
|
||||
switch (b->compositor->renderer->type) {
|
||||
case WESTON_RENDERER_GL:
|
||||
ret = headless_output_enable_gl(output);
|
||||
break;
|
||||
case HEADLESS_PIXMAN:
|
||||
case WESTON_RENDERER_PIXMAN:
|
||||
ret = headless_output_enable_pixman(output);
|
||||
break;
|
||||
case HEADLESS_NOOP:
|
||||
case WESTON_RENDERER_NOOP:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -633,26 +626,11 @@ headless_backend_create(struct weston_compositor *compositor,
|
||||
}
|
||||
|
||||
if (config->use_gl)
|
||||
b->renderer_type = HEADLESS_GL;
|
||||
else if (config->use_pixman)
|
||||
b->renderer_type = HEADLESS_PIXMAN;
|
||||
else
|
||||
b->renderer_type = HEADLESS_NOOP;
|
||||
|
||||
switch (b->renderer_type) {
|
||||
case HEADLESS_GL:
|
||||
ret = headless_gl_renderer_init(b);
|
||||
break;
|
||||
case HEADLESS_PIXMAN:
|
||||
else if (config->use_pixman)
|
||||
ret = pixman_renderer_init(compositor);
|
||||
break;
|
||||
case HEADLESS_NOOP:
|
||||
else
|
||||
ret = noop_renderer_init(compositor);
|
||||
break;
|
||||
default:
|
||||
assert(0 && "invalid renderer type");
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
if (ret < 0)
|
||||
goto err_input;
|
||||
|
@ -46,6 +46,12 @@
|
||||
|
||||
/* compositor <-> renderer interface */
|
||||
|
||||
enum weston_renderer_type {
|
||||
WESTON_RENDERER_NOOP,
|
||||
WESTON_RENDERER_PIXMAN,
|
||||
WESTON_RENDERER_GL,
|
||||
};
|
||||
|
||||
struct weston_renderer {
|
||||
int (*read_pixels)(struct weston_output *output,
|
||||
const struct pixel_format_info *format, void *pixels,
|
||||
@ -82,6 +88,8 @@ struct weston_renderer {
|
||||
|
||||
bool (*fill_buffer_info)(struct weston_compositor *ec,
|
||||
struct weston_buffer *buffer);
|
||||
|
||||
enum weston_renderer_type type;
|
||||
};
|
||||
|
||||
void
|
||||
|
@ -137,6 +137,7 @@ noop_renderer_init(struct weston_compositor *ec)
|
||||
renderer->base.flush_damage = noop_renderer_flush_damage;
|
||||
renderer->base.attach = noop_renderer_attach;
|
||||
renderer->base.destroy = noop_renderer_destroy;
|
||||
renderer->base.type = WESTON_RENDERER_NOOP;
|
||||
ec->renderer = &renderer->base;
|
||||
|
||||
return 0;
|
||||
|
@ -1006,6 +1006,7 @@ pixman_renderer_init(struct weston_compositor *ec)
|
||||
renderer->base.destroy = pixman_renderer_destroy;
|
||||
renderer->base.surface_copy_content =
|
||||
pixman_renderer_surface_copy_content;
|
||||
renderer->base.type = WESTON_RENDERER_PIXMAN;
|
||||
ec->renderer = &renderer->base;
|
||||
ec->capabilities |= WESTON_CAP_ROTATION_ANY;
|
||||
ec->capabilities |= WESTON_CAP_VIEW_CLIP_MASK;
|
||||
|
@ -3805,6 +3805,7 @@ gl_renderer_display_create(struct weston_compositor *ec,
|
||||
gr->base.destroy = gl_renderer_destroy;
|
||||
gr->base.surface_copy_content = gl_renderer_surface_copy_content;
|
||||
gr->base.fill_buffer_info = gl_renderer_fill_buffer_info;
|
||||
gr->base.type = WESTON_RENDERER_GL;
|
||||
|
||||
if (gl_renderer_setup_egl_display(gr, options->egl_native_display) < 0)
|
||||
goto fail;
|
||||
|
Loading…
x
Reference in New Issue
Block a user