diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-06-08 15:52:42 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2017-06-08 15:52:42 -0400 |
commit | cd6a40d81679c37795e9d24354a8bbbf84cd53a6 (patch) | |
tree | 82186fb0985a16ed76928b0226ff2eed9bb2c261 /include/wlr/render | |
parent | 83f8864f0ab1722aae12cc744094a7424c41f2d8 (diff) |
Further improvements to rendering subsystem
Diffstat (limited to 'include/wlr/render')
-rw-r--r-- | include/wlr/render/gles3.h | 7 | ||||
-rw-r--r-- | include/wlr/render/interface.h | 43 | ||||
-rw-r--r-- | include/wlr/render/matrix.h | 2 |
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 |