aboutsummaryrefslogtreecommitdiff
path: root/include/wlr/render
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-06-08 15:52:42 -0400
committerDrew DeVault <sir@cmpwn.com>2017-06-08 15:52:42 -0400
commitcd6a40d81679c37795e9d24354a8bbbf84cd53a6 (patch)
tree82186fb0985a16ed76928b0226ff2eed9bb2c261 /include/wlr/render
parent83f8864f0ab1722aae12cc744094a7424c41f2d8 (diff)
Further improvements to rendering subsystem
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