diff options
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 |