aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/render/gles2.h23
-rw-r--r--include/wlr/render.h5
-rw-r--r--include/wlr/render/interface.h5
3 files changed, 27 insertions, 6 deletions
diff --git a/include/render/gles2.h b/include/render/gles2.h
index bd0106b3..7b835209 100644
--- a/include/render/gles2.h
+++ b/include/render/gles2.h
@@ -6,19 +6,38 @@
#include <GLES2/gl2.h>
#include <wlr/render.h>
+struct pixel_format {
+ uint32_t wl_format;
+ GLint gl_format, gl_type;
+ int depth, bpp;
+ GLuint *shader;
+};
+
struct wlr_surface_state {
struct wlr_surface *wlr_surface;
GLuint tex_id;
+ const struct pixel_format *pixel_format;
+};
+
+struct shaders {
+ bool initialized;
+ GLuint rgba, rgbx;
+ GLuint quad;
+ GLuint ellipse;
};
+extern struct shaders shaders;
+
+const struct pixel_format *gl_format_for_wl_format(enum wl_shm_format fmt);
+
struct wlr_surface *gles2_surface_init();
extern const GLchar quad_vertex_src[];
extern const GLchar quad_fragment_src[];
extern const GLchar ellipse_fragment_src[];
extern const GLchar vertex_src[];
-extern const GLchar fragment_src_RGB[];
-extern const GLchar fragment_src_RGBA[];
+extern const GLchar fragment_src_rgba[];
+extern const GLchar fragment_src_rgbx[];
bool _gles2_flush_errors(const char *file, int line);
#define gles2_flush_errors(...) \
diff --git a/include/wlr/render.h b/include/wlr/render.h
index 496e3638..bb333723 100644
--- a/include/wlr/render.h
+++ b/include/wlr/render.h
@@ -63,8 +63,9 @@ struct wlr_surface {
* Attaches a pixel buffer to this surface. The buffer may be discarded after
* calling this function.
*/
-bool wlr_surface_attach_pixels(struct wlr_surface *surf, uint32_t format,
- int width, int height, const unsigned char *pixels);
+bool wlr_surface_attach_pixels(struct wlr_surface *surf,
+ enum wl_shm_format format, int width, int height,
+ const unsigned char *pixels);
/**
* Attaches pixels from a wl_shm_buffer to this surface. The shm buffer may be
* invalidated after calling this function.
diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h
index c7fa54d6..f2168dcd 100644
--- a/include/wlr/render/interface.h
+++ b/include/wlr/render/interface.h
@@ -32,8 +32,9 @@ 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_pixels)(struct wlr_surface_state *state,
+ enum wl_shm_format 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