aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2020-11-18 14:16:22 +0100
committerSimon Ser <contact@emersion.fr>2020-11-30 11:08:44 +0100
commit5d008d90309defd2ed15f1b9525c551ecb38e21d (patch)
tree54e27d79cc93ec87646207a07de690371302b24f /include
parent61612ecb3688431b85a55d046a49b3700826990d (diff)
render: introduce wlr_renderer_get_dmabuf_render_formats
It describes which DMA-BUF formats can be used to render.
Diffstat (limited to 'include')
-rw-r--r--include/render/wlr_renderer.h6
-rw-r--r--include/wlr/render/egl.h6
-rw-r--r--include/wlr/render/interface.h2
3 files changed, 14 insertions, 0 deletions
diff --git a/include/render/wlr_renderer.h b/include/render/wlr_renderer.h
index 0ef1ef82..8e113ac8 100644
--- a/include/render/wlr_renderer.h
+++ b/include/render/wlr_renderer.h
@@ -4,5 +4,11 @@
#include <wlr/render/wlr_renderer.h>
bool wlr_renderer_bind_buffer(struct wlr_renderer *r, struct wlr_buffer *buffer);
+/**
+ * Get the DMA-BUF formats supporting rendering usage. Buffers allocated with
+ * a format from this list may be attached via wlr_renderer_bind_buffer.
+ */
+const struct wlr_drm_format_set *wlr_renderer_get_dmabuf_render_formats(
+ struct wlr_renderer *renderer);
#endif
diff --git a/include/wlr/render/egl.h b/include/wlr/render/egl.h
index 4ab672d3..f2d04049 100644
--- a/include/wlr/render/egl.h
+++ b/include/wlr/render/egl.h
@@ -78,6 +78,7 @@ struct wlr_egl {
struct wl_display *wl_display;
struct wlr_drm_format_set dmabuf_formats;
+ struct wlr_drm_format_set dmabuf_render_formats;
EGLBoolean **external_only_dmabuf_formats;
};
@@ -126,6 +127,11 @@ EGLImageKHR wlr_egl_create_image_from_dmabuf(struct wlr_egl *egl,
* Get DMA-BUF formats suitable for sampling usage.
*/
const struct wlr_drm_format_set *wlr_egl_get_dmabuf_formats(struct wlr_egl *egl);
+/**
+ * Get DMA-BUF formats suitable for rendering usage.
+ */
+const struct wlr_drm_format_set *wlr_egl_get_dmabuf_render_formats(
+ struct wlr_egl *egl);
bool wlr_egl_export_image_to_dmabuf(struct wlr_egl *egl, EGLImageKHR image,
int32_t width, int32_t height, uint32_t flags,
diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h
index 625ab198..44b5a48c 100644
--- a/include/wlr/render/interface.h
+++ b/include/wlr/render/interface.h
@@ -52,6 +52,8 @@ struct wlr_renderer_impl {
struct wl_resource *buffer, int *width, int *height);
const struct wlr_drm_format_set *(*get_dmabuf_formats)(
struct wlr_renderer *renderer);
+ const struct wlr_drm_format_set *(*get_dmabuf_render_formats)(
+ struct wlr_renderer *renderer);
enum wl_shm_format (*preferred_read_format)(struct wlr_renderer *renderer);
bool (*read_pixels)(struct wlr_renderer *renderer, enum wl_shm_format fmt,
uint32_t *flags, uint32_t stride, uint32_t width, uint32_t height,