summaryrefslogtreecommitdiff
path: root/sway/server.c
diff options
context:
space:
mode:
authorWilliam McKinnon <[email protected]>2022-08-13 02:14:23 -0400
committerGitHub <[email protected]>2022-08-13 02:14:23 -0400
commitcf1ed777ae56f677bcc0f832c52c04dc65be18ce (patch)
tree523dc4848d5cda83366bf8ccd6fc8cb453566a11 /sway/server.c
parent06f19c81a4d20651a9e4bb503fed77b278e1d027 (diff)
Add official fx renderer (#3)
Diffstat (limited to 'sway/server.c')
-rw-r--r--sway/server.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/sway/server.c b/sway/server.c
index 9bfcffaf..d6a4d00a 100644
--- a/sway/server.c
+++ b/sway/server.c
@@ -9,6 +9,7 @@
#include <wlr/backend/multi.h>
#include <wlr/backend/session.h>
#include <wlr/config.h>
+#include <wlr/render/gles2.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_compositor.h>
#include <wlr/types/wlr_data_control_v1.h>
@@ -38,6 +39,7 @@
#include "list.h"
#include "log.h"
#include "sway/config.h"
+#include "sway/desktop/fx_renderer.h"
#include "sway/desktop/idle_inhibit_v1.h"
#include "sway/input/input-manager.h"
#include "sway/output.h"
@@ -75,29 +77,35 @@ static void handle_drm_lease_request(struct wl_listener *listener, void *data) {
bool server_init(struct sway_server *server) {
sway_log(SWAY_DEBUG, "Initializing Wayland server");
- server->renderer = wlr_renderer_autocreate(server->backend);
+ server->wlr_renderer = wlr_renderer_autocreate(server->backend);
+ if (!server->wlr_renderer) {
+ sway_log(SWAY_ERROR, "Failed to create wlr_renderer");
+ return false;
+ }
+ struct wlr_egl *egl = wlr_gles2_renderer_get_egl(server->wlr_renderer);
+ server->renderer = fx_renderer_create(egl);
if (!server->renderer) {
- sway_log(SWAY_ERROR, "Failed to create renderer");
+ sway_log(SWAY_ERROR, "Failed to create fx_renderer");
return false;
}
- wlr_renderer_init_wl_shm(server->renderer, server->wl_display);
+ wlr_renderer_init_wl_shm(server->wlr_renderer, server->wl_display);
- if (wlr_renderer_get_dmabuf_texture_formats(server->renderer) != NULL) {
- wlr_drm_create(server->wl_display, server->renderer);
+ if (wlr_renderer_get_dmabuf_texture_formats(server->wlr_renderer) != NULL) {
+ wlr_drm_create(server->wl_display, server->wlr_renderer);
server->linux_dmabuf_v1 =
- wlr_linux_dmabuf_v1_create(server->wl_display, server->renderer);
+ wlr_linux_dmabuf_v1_create(server->wl_display, server->wlr_renderer);
}
server->allocator = wlr_allocator_autocreate(server->backend,
- server->renderer);
+ server->wlr_renderer);
if (!server->allocator) {
sway_log(SWAY_ERROR, "Failed to create allocator");
return false;
}
server->compositor = wlr_compositor_create(server->wl_display,
- server->renderer);
+ server->wlr_renderer);
server->compositor_new_surface.notify = handle_compositor_new_surface;
wl_signal_add(&server->compositor->events.new_surface,
&server->compositor_new_surface);