From e5b5592a95e3f12afc90cc9fcf5adc3664bf79a3 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 2 Feb 2021 23:38:42 +0100 Subject: [PATCH] render: remove wl_drm support from wlr_renderer Everything needs to go through the unified wlr_buffer interface now. If necessary, there are two ways support for EGL_WL_bind_wayland_display could be restored by compositors: - Either by using GBM to convert back EGL Wayland buffers to DMA-BUFs, then wrap the DMA-BUF into a wlr_buffer. - Or by wrapping the EGL Wayland buffer into a special wlr_buffer that doesn't implement any wlr_buffer_impl hook, and special-case that buffer type in the renderer. --- include/wlr/render/interface.h | 10 ++-------- include/wlr/render/wlr_renderer.h | 10 ---------- render/wlr_renderer.c | 16 ---------------- render/wlr_texture.c | 8 -------- types/wlr_buffer.c | 6 ------ 5 files changed, 2 insertions(+), 48 deletions(-) diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h index bb96674c..1e355d43 100644 --- a/include/wlr/render/interface.h +++ b/include/wlr/render/interface.h @@ -30,12 +30,8 @@ struct wlr_renderer_impl { const float matrix[static 9], float alpha); void (*render_quad_with_matrix)(struct wlr_renderer *renderer, const float color[static 4], const float matrix[static 9]); - const uint32_t *(*get_shm_texture_formats)(struct wlr_renderer *renderer, - size_t *len); - bool (*resource_is_wl_drm_buffer)(struct wlr_renderer *renderer, - struct wl_resource *resource); - void (*wl_drm_buffer_get_size)(struct wlr_renderer *renderer, - struct wl_resource *buffer, int *width, int *height); + const uint32_t *(*get_shm_texture_formats)( + struct wlr_renderer *renderer, size_t *len); const struct wlr_drm_format_set *(*get_dmabuf_texture_formats)( struct wlr_renderer *renderer); const struct wlr_drm_format_set *(*get_render_formats)( @@ -45,8 +41,6 @@ struct wlr_renderer_impl { uint32_t *flags, uint32_t stride, uint32_t width, uint32_t height, uint32_t src_x, uint32_t src_y, uint32_t dst_x, uint32_t dst_y, void *data); - struct wlr_texture *(*texture_from_wl_drm)(struct wlr_renderer *renderer, - struct wl_resource *data); void (*destroy)(struct wlr_renderer *renderer); bool (*init_wl_display)(struct wlr_renderer *renderer, struct wl_display *wl_display); diff --git a/include/wlr/render/wlr_renderer.h b/include/wlr/render/wlr_renderer.h index e9f8c4e2..4a98443f 100644 --- a/include/wlr/render/wlr_renderer.h +++ b/include/wlr/render/wlr_renderer.h @@ -80,16 +80,6 @@ void wlr_render_quad_with_matrix(struct wlr_renderer *r, */ const uint32_t *wlr_renderer_get_shm_texture_formats( struct wlr_renderer *r, size_t *len); -/** - * Returns true if this wl_buffer is a wl_drm buffer. - */ -bool wlr_renderer_resource_is_wl_drm_buffer(struct wlr_renderer *renderer, - struct wl_resource *buffer); -/** - * Gets the width and height of a wl_drm buffer. - */ -void wlr_renderer_wl_drm_buffer_get_size(struct wlr_renderer *renderer, - struct wl_resource *buffer, int *width, int *height); /** * Get the DMA-BUF formats supporting sampling usage. Buffers allocated with * a format from this list may be imported via wlr_texture_from_dmabuf. diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c index dc9c3a99..2fa79b27 100644 --- a/render/wlr_renderer.c +++ b/render/wlr_renderer.c @@ -159,22 +159,6 @@ const uint32_t *wlr_renderer_get_shm_texture_formats(struct wlr_renderer *r, return r->impl->get_shm_texture_formats(r, len); } -bool wlr_renderer_resource_is_wl_drm_buffer(struct wlr_renderer *r, - struct wl_resource *resource) { - if (!r->impl->resource_is_wl_drm_buffer) { - return false; - } - return r->impl->resource_is_wl_drm_buffer(r, resource); -} - -void wlr_renderer_wl_drm_buffer_get_size(struct wlr_renderer *r, - struct wl_resource *buffer, int *width, int *height) { - if (!r->impl->wl_drm_buffer_get_size) { - return; - } - return r->impl->wl_drm_buffer_get_size(r, buffer, width, height); -} - const struct wlr_drm_format_set *wlr_renderer_get_dmabuf_texture_formats( struct wlr_renderer *r) { if (!r->impl->get_dmabuf_texture_formats) { diff --git a/render/wlr_texture.c b/render/wlr_texture.c index a54d6af1..9e825449 100644 --- a/render/wlr_texture.c +++ b/render/wlr_texture.c @@ -45,14 +45,6 @@ struct wlr_texture *wlr_texture_from_pixels(struct wlr_renderer *renderer, return texture; } -struct wlr_texture *wlr_texture_from_wl_drm(struct wlr_renderer *renderer, - struct wl_resource *data) { - if (!renderer->impl->texture_from_wl_drm) { - return NULL; - } - return renderer->impl->texture_from_wl_drm(renderer, data); -} - struct wlr_texture *wlr_texture_from_dmabuf(struct wlr_renderer *renderer, struct wlr_dmabuf_attributes *attribs) { struct wlr_dmabuf_buffer *buffer = dmabuf_buffer_create(attribs); diff --git a/types/wlr_buffer.c b/types/wlr_buffer.c index ceb7a582..2c9530d1 100644 --- a/types/wlr_buffer.c +++ b/types/wlr_buffer.c @@ -112,10 +112,6 @@ bool wlr_resource_get_buffer_size(struct wl_resource *resource, if (shm_buf != NULL) { *width = wl_shm_buffer_get_width(shm_buf); *height = wl_shm_buffer_get_height(shm_buf); - } else if (wlr_renderer_resource_is_wl_drm_buffer(renderer, - resource)) { - wlr_renderer_wl_drm_buffer_get_size(renderer, resource, - width, height); } else if (wlr_dmabuf_v1_resource_is_buffer(resource)) { struct wlr_dmabuf_v1_buffer *dmabuf = wlr_dmabuf_v1_buffer_from_buffer_resource(resource); @@ -240,8 +236,6 @@ struct wlr_client_buffer *wlr_client_buffer_import( // The renderer is responsible for releasing the buffer when // appropriate resource_released = true; - } else if (wlr_renderer_resource_is_wl_drm_buffer(renderer, resource)) { - texture = wlr_texture_from_wl_drm(renderer, resource); } else if (wlr_dmabuf_v1_resource_is_buffer(resource)) { struct wlr_dmabuf_v1_buffer *dmabuf = wlr_dmabuf_v1_buffer_from_buffer_resource(resource);