aboutsummaryrefslogtreecommitdiff
path: root/include/wlr
diff options
context:
space:
mode:
Diffstat (limited to 'include/wlr')
-rw-r--r--include/wlr/render/interface.h2
-rw-r--r--include/wlr/render/wlr_texture.h17
2 files changed, 19 insertions, 0 deletions
diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h
index e8191ac2..e9159b79 100644
--- a/include/wlr/render/interface.h
+++ b/include/wlr/render/interface.h
@@ -52,6 +52,8 @@ void wlr_renderer_init(struct wlr_renderer *renderer,
struct wlr_texture_impl {
bool (*update_from_buffer)(struct wlr_texture *texture,
struct wlr_buffer *buffer, const pixman_region32_t *damage);
+ bool (*read_pixels)(struct wlr_texture *texture,
+ const struct wlr_texture_read_pixels_options *options);
void (*destroy)(struct wlr_texture *texture);
};
diff --git a/include/wlr/render/wlr_texture.h b/include/wlr/render/wlr_texture.h
index 87ed993f..c24cfaa9 100644
--- a/include/wlr/render/wlr_texture.h
+++ b/include/wlr/render/wlr_texture.h
@@ -13,6 +13,7 @@
#include <stdint.h>
#include <wayland-server-core.h>
#include <wlr/render/dmabuf.h>
+#include <wlr/util/box.h>
struct wlr_buffer;
struct wlr_renderer;
@@ -25,6 +26,22 @@ struct wlr_texture {
struct wlr_renderer *renderer;
};
+struct wlr_texture_read_pixels_options {
+ /** Memory location to read pixels into */
+ void *data;
+ /** Format used for writing the pixel data */
+ uint32_t format;
+ /** Stride in bytes for the data */
+ uint32_t stride;
+ /** Destination offsets */
+ uint32_t dst_x, dst_y;
+ /** Source box of the texture to read from. If empty, the full texture is assumed. */
+ const struct wlr_box src_box;
+};
+
+bool wlr_texture_read_pixels(struct wlr_texture *texture,
+ const struct wlr_texture_read_pixels_options *options);
+
/**
* Create a new texture from raw pixel data. `stride` is in bytes. The returned
* texture is mutable.