aboutsummaryrefslogtreecommitdiff
path: root/include/wlr/render
diff options
context:
space:
mode:
Diffstat (limited to 'include/wlr/render')
-rw-r--r--include/wlr/render/gles3.h7
-rw-r--r--include/wlr/render/interface.h43
-rw-r--r--include/wlr/render/matrix.h2
3 files changed, 51 insertions, 1 deletions
diff --git a/include/wlr/render/gles3.h b/include/wlr/render/gles3.h
new file mode 100644
index 00000000..7b60bb97
--- /dev/null
+++ b/include/wlr/render/gles3.h
@@ -0,0 +1,7 @@
+#ifndef _WLR_GLES3_RENDERER_H
+#define _WLR_GLES3_RENDERER_H
+#include <wlr/render.h>
+
+struct wlr_renderer *wlr_gles3_renderer_init();
+
+#endif
diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h
new file mode 100644
index 00000000..80471ac8
--- /dev/null
+++ b/include/wlr/render/interface.h
@@ -0,0 +1,43 @@
+#ifndef _WLR_RENDER_INTERFACE_H
+#define _WLR_RENDER_INTERFACE_H
+#include <wayland-server-protocol.h>
+#include <stdbool.h>
+#include <wlr/render.h>
+#include <wlr/types.h>
+
+struct wlr_renderer_impl;
+struct wlr_renderer_state;
+
+struct wlr_renderer {
+ struct wlr_renderer_impl *impl;
+ struct wlr_renderer_state *state;
+};
+
+struct wlr_renderer_impl {
+ void (*begin)(struct wlr_renderer_state *state, struct wlr_output *output);
+ void (*end)(struct wlr_renderer_state *state);
+ struct wlr_surface *(*surface_init)(struct wlr_renderer_state *state);
+ bool (*render_with_matrix)(struct wlr_renderer_state *state,
+ struct wlr_surface *surface, const float (*matrix)[16]);
+ void (*destroy)(struct wlr_renderer_state *state);
+};
+
+struct wlr_renderer *wlr_renderer_init(struct wlr_renderer_state *state,
+ struct wlr_renderer_impl *impl);
+
+struct wlr_surface_impl {
+ bool (*attach_pixels)(struct wlr_surface_state *state, uint32_t format,
+ int width, int height, const unsigned char *pixels);
+ bool (*attach_shm)(struct wlr_surface_state *state, uint32_t format,
+ struct wl_shm_buffer *shm);
+ // TODO: egl
+ void (*get_matrix)(struct wlr_surface_state *state,
+ float (*matrix)[16], const float (*projection)[16], int x, int y);
+ void (*bind)(struct wlr_surface_state *state);
+ void (*destroy)(struct wlr_surface_state *state);
+};
+
+struct wlr_surface *wlr_surface_init();
+void wlr_surface_bind(struct wlr_surface *surface);
+
+#endif
diff --git a/include/wlr/render/matrix.h b/include/wlr/render/matrix.h
index a1053b00..954207da 100644
--- a/include/wlr/render/matrix.h
+++ b/include/wlr/render/matrix.h
@@ -5,6 +5,6 @@ void wlr_matrix_identity(float (*output)[16]);
void wlr_matrix_translate(float (*output)[16], float x, float y, float z);
void wlr_matrix_scale(float (*output)[16], float x, float y, float z);
void wlr_matrix_rotate(float (*output)[16], float radians);
-void wlr_matrix_mul(float (*x)[16], float (*y)[16], float (*product)[16]);
+void wlr_matrix_mul(const float (*x)[16], const float (*y)[16], float (*product)[16]);
#endif