aboutsummaryrefslogtreecommitdiff
path: root/include/render
diff options
context:
space:
mode:
authorSimon Zeni <simon@bl4ckb0ne.ca>2021-01-17 23:15:36 -0500
committerSimon Ser <contact@emersion.fr>2021-04-17 09:54:39 +0200
commit0d90dddfab48a12a7519c11c6062b717ca3b7581 (patch)
treefad73cd0ce24586d5b8a4495910343d59905b010 /include/render
parent9de93a866fd4c7a51ffde7c73454dc0c39bf5fb1 (diff)
render: introduce pixman renderer
Diffstat (limited to 'include/render')
-rw-r--r--include/render/pixman.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/include/render/pixman.h b/include/render/pixman.h
new file mode 100644
index 00000000..f4cab45e
--- /dev/null
+++ b/include/render/pixman.h
@@ -0,0 +1,49 @@
+#ifndef RENDER_PIXMAN_H
+#define RENDER_PIXMAN_H
+
+#include <wlr/render/pixman.h>
+#include <wlr/render/wlr_renderer.h>
+#include <wlr/render/drm_format_set.h>
+#include "render/pixel_format.h"
+
+struct wlr_pixman_pixel_format {
+ uint32_t drm_format;
+ pixman_format_code_t pixman_format;
+};
+
+struct wlr_pixman_buffer;
+
+struct wlr_pixman_renderer {
+ struct wlr_renderer wlr_renderer;
+
+ struct wl_list buffers; // wlr_pixman_buffer.link
+
+ struct wlr_pixman_buffer *current_buffer;
+ int32_t width, height;
+
+ struct wlr_drm_format_set drm_formats;
+};
+
+struct wlr_pixman_buffer {
+ struct wlr_buffer *buffer;
+ struct wlr_pixman_renderer *renderer;
+
+ pixman_image_t *image;
+
+ struct wl_listener buffer_destroy;
+ struct wl_list link; // wlr_pixman_renderer.buffers
+};
+
+struct wlr_pixman_texture {
+ struct wlr_texture wlr_texture;
+ struct wlr_pixman_renderer *renderer;
+
+ void *data;
+ pixman_image_t *image;
+ const struct wlr_pixel_format_info *format;
+};
+
+pixman_format_code_t get_pixman_format_from_drm(uint32_t fmt);
+const uint32_t *get_pixman_drm_formats(size_t *len);
+
+#endif