aboutsummaryrefslogtreecommitdiff
path: root/include
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
parent9de93a866fd4c7a51ffde7c73454dc0c39bf5fb1 (diff)
render: introduce pixman renderer
Diffstat (limited to 'include')
-rw-r--r--include/render/pixman.h49
-rw-r--r--include/wlr/render/pixman.h17
2 files changed, 66 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
diff --git a/include/wlr/render/pixman.h b/include/wlr/render/pixman.h
new file mode 100644
index 00000000..713e431d
--- /dev/null
+++ b/include/wlr/render/pixman.h
@@ -0,0 +1,17 @@
+/*
+ * This an unstable interface of wlroots. No guarantees are made regarding the
+ * future consistency of this API.
+ */
+#ifndef WLR_USE_UNSTABLE
+#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features"
+#endif
+
+#ifndef WLR_RENDER_PIXMAN_H
+#define WLR_RENDER_PIXMAN_H
+
+#include <wlr/backend.h>
+#include <wlr/render/wlr_renderer.h>
+
+struct wlr_renderer *wlr_pixman_renderer_create(void);
+
+#endif