backends: implement custom EGL and renderer initialization

Compositors now have more control over how the backend creates its
renderer. Currently all backends create an EGL/GLES2 renderer, so
the necessary attributes for creating the context are passed to a
user-provided callback function. It is responsible for initializing
provided wlr_egl and to return a renderer. On fail, return 0.

Fixes #987
This commit is contained in:
Ilia Bozhinov 2018-05-25 13:14:35 +03:00
parent a0eb37e2ea
commit 24cf70ae96
22 changed files with 106 additions and 69 deletions

View file

@ -284,7 +284,7 @@ int main(int argc, char *argv[]) {
.clear_color = { 0.25f, 0.25f, 0.25f, 1 },
.display = display,
};
struct wlr_backend *wlr = wlr_backend_autocreate(display);
struct wlr_backend *wlr = wlr_backend_autocreate(display, NULL);
if (!wlr) {
exit(1);
}

View file

@ -261,7 +261,7 @@ int main(int argc, char *argv[]) {
state.layout = wlr_output_layout_create();
clock_gettime(CLOCK_MONOTONIC, &state.ts_last);
struct wlr_backend *wlr = wlr_backend_autocreate(display);
struct wlr_backend *wlr = wlr_backend_autocreate(display, NULL);
if (!wlr) {
exit(1);
}

View file

@ -324,7 +324,7 @@ int main(int argc, char *argv[]) {
.display = display
};
struct wlr_backend *wlr = wlr_backend_autocreate(display);
struct wlr_backend *wlr = wlr_backend_autocreate(display, NULL);
if (!wlr) {
exit(1);
}

View file

@ -235,7 +235,7 @@ int main(int argc, char *argv[]) {
};
wl_list_init(&state.outputs);
struct wlr_backend *wlr = wlr_backend_autocreate(display);
struct wlr_backend *wlr = wlr_backend_autocreate(display, NULL);
if (!wlr) {
exit(1);
}

View file

@ -152,7 +152,7 @@ int main() {
.last_frame = { 0 },
.display = display
};
struct wlr_backend *wlr = wlr_backend_autocreate(display);
struct wlr_backend *wlr = wlr_backend_autocreate(display, NULL);
if (!wlr) {
exit(1);
}

View file

@ -349,7 +349,7 @@ int main(int argc, char *argv[]) {
};
wl_list_init(&state.tablet_pads);
wl_list_init(&state.tablet_tools);
struct wlr_backend *wlr = wlr_backend_autocreate(display);
struct wlr_backend *wlr = wlr_backend_autocreate(display, NULL);
if (!wlr) {
exit(1);
}

View file

@ -244,7 +244,7 @@ int main(int argc, char *argv[]) {
wl_list_init(&state.touch_points);
wl_list_init(&state.touch);
struct wlr_backend *wlr = wlr_backend_autocreate(display);
struct wlr_backend *wlr = wlr_backend_autocreate(display, NULL);
if (!wlr) {
exit(1);
}