summaryrefslogtreecommitdiff
path: root/src/graphics.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/graphics.cc')
-rw-r--r--src/graphics.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/graphics.cc b/src/graphics.cc
index 44a4333..40e67ab 100644
--- a/src/graphics.cc
+++ b/src/graphics.cc
@@ -117,6 +117,9 @@ enum renderer_error_e wayc_renderer_init(struct renderer_s* renderer,
return RENDERER_ERROR_SURFACE_CREATION;
}
+ sg_desc desc = {};
+ sg_setup(&desc);
+
renderer->graphics = graphics;
renderer->ewindow = ewindow;
renderer->esurface = esurface;
@@ -132,6 +135,34 @@ enum renderer_error_e wayc_renderer_init(struct renderer_s* renderer,
return RENDERER_ERROR_NONE;
}
+void wayc_renderer_begin(struct renderer_s* renderer) {
+ wayc_notnull(renderer);
+
+ sg_gl_swapchain gl_swap = {};
+ gl_swap.framebuffer = 0;
+
+ sg_swapchain swap = {};
+ swap.gl = gl_swap;
+ swap.width = renderer->width;
+ swap.height = renderer->height;
+
+ sg_pass pass = {};
+ pass.swapchain = swap;
+
+ sg_begin_pass(&pass);
+}
+
+void wayc_renderer_end(struct renderer_s* renderer) {
+ wayc_notnull(renderer);
+
+ struct graphics_s* graphics = renderer->graphics;
+
+ sg_end_pass();
+ sg_commit();
+
+ eglSwapBuffers(graphics->display, renderer->esurface);
+}
+
void wayc_renderer_deinit(struct renderer_s* renderer) {
wayc_notnull(renderer);
@@ -139,6 +170,8 @@ void wayc_renderer_deinit(struct renderer_s* renderer) {
renderer->ewindow == nullptr)
return;
+ sg_shutdown();
+
eglDestroySurface(renderer->graphics->display, renderer->esurface);
wl_egl_window_destroy(renderer->ewindow);