summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/sway/desktop/fx_renderer.h51
-rw-r--r--include/sway/server.h3
2 files changed, 53 insertions, 1 deletions
diff --git a/include/sway/desktop/fx_renderer.h b/include/sway/desktop/fx_renderer.h
new file mode 100644
index 00000000..bf8cd3d1
--- /dev/null
+++ b/include/sway/desktop/fx_renderer.h
@@ -0,0 +1,51 @@
+#ifndef _SWAY_OPENGL_H
+#define _SWAY_OPENGL_H
+
+#include <GLES2/gl2.h>
+
+struct gles2_tex_shader {
+ GLuint program;
+ GLint proj;
+ GLint tex;
+ GLint alpha;
+ GLint pos_attrib;
+ GLint tex_attrib;
+};
+
+struct fx_renderer {
+ struct wlr_egl *egl;
+
+ float projection[9];
+
+ // Shaders
+ struct {
+ struct {
+ GLuint program;
+ GLint proj;
+ GLint color;
+ GLint pos_attrib;
+ } quad;
+ struct gles2_tex_shader tex_rgba;
+ struct gles2_tex_shader tex_rgbx;
+ struct gles2_tex_shader tex_ext;
+ } shaders;
+};
+
+struct fx_renderer *fx_renderer_create(struct wlr_egl *egl);
+
+void fx_renderer_begin(struct fx_renderer *renderer, uint32_t width, uint32_t height);
+
+void fx_renderer_end();
+
+void fx_renderer_clear(const float color[static 4]);
+
+void fx_renderer_scissor(struct wlr_box *box);
+
+bool fx_render_subtexture_with_matrix(struct fx_renderer *renderer,
+ struct wlr_texture *wlr_texture, const struct wlr_fbox *box,
+ const float matrix[static 9], float alpha);
+
+bool fx_render_texture_with_matrix(struct fx_renderer *renderer,
+ struct wlr_texture *wlr_texture, const float matrix[static 9], float alpha);
+
+#endif
diff --git a/include/sway/server.h b/include/sway/server.h
index 0bd860b2..4496c23f 100644
--- a/include/sway/server.h
+++ b/include/sway/server.h
@@ -35,7 +35,8 @@ struct sway_server {
struct wlr_backend *backend;
// secondary headless backend used for creating virtual outputs on-the-fly
struct wlr_backend *headless_backend;
- struct wlr_renderer *renderer;
+ struct wlr_renderer *wlr_renderer;
+ struct fx_renderer *renderer;
struct wlr_allocator *allocator;
struct wlr_compositor *compositor;