From ddfee63055d53b975039e768cdb5ee3ea92ab5ab Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 16 Feb 2021 19:20:00 +0100 Subject: [PATCH] render: use DRM formats in wlr_renderer_get_shm_texture_formats --- include/render/gles2.h | 2 +- include/wlr/render/interface.h | 4 ++-- include/wlr/render/wlr_renderer.h | 2 +- render/gles2/pixel_format.c | 9 ++++----- render/gles2/renderer.c | 4 ++-- render/wlr_renderer.c | 13 +++++++------ 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/render/gles2.h b/include/render/gles2.h index 067bdd31..7072a278 100644 --- a/include/render/gles2.h +++ b/include/render/gles2.h @@ -113,7 +113,7 @@ struct wlr_gles2_texture { const struct wlr_gles2_pixel_format *get_gles2_format_from_drm(uint32_t fmt); const struct wlr_gles2_pixel_format *get_gles2_format_from_gl( GLint gl_format, GLint gl_type, bool alpha); -const enum wl_shm_format *get_gles2_wl_formats(size_t *len); +const uint32_t *get_gles2_shm_formats(size_t *len); struct wlr_gles2_renderer *gles2_get_renderer( struct wlr_renderer *wlr_renderer); diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h index feca44e1..612e0afb 100644 --- a/include/wlr/render/interface.h +++ b/include/wlr/render/interface.h @@ -32,8 +32,8 @@ struct wlr_renderer_impl { const float color[static 4], const float matrix[static 9]); void (*render_ellipse_with_matrix)(struct wlr_renderer *renderer, const float color[static 4], const float matrix[static 9]); - const enum wl_shm_format *(*get_shm_texture_formats)( - struct wlr_renderer *renderer, size_t *len); + 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, diff --git a/include/wlr/render/wlr_renderer.h b/include/wlr/render/wlr_renderer.h index 575079a0..49e4afa0 100644 --- a/include/wlr/render/wlr_renderer.h +++ b/include/wlr/render/wlr_renderer.h @@ -85,7 +85,7 @@ void wlr_render_ellipse_with_matrix(struct wlr_renderer *r, * Get the shared-memory formats supporting import usage. Buffers allocated * with a format from this list may be imported via wlr_texture_from_pixels. */ -const enum wl_shm_format *wlr_renderer_get_shm_texture_formats( +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. diff --git a/render/gles2/pixel_format.c b/render/gles2/pixel_format.c index d7711caa..4ca98fe9 100644 --- a/render/gles2/pixel_format.c +++ b/render/gles2/pixel_format.c @@ -2,7 +2,6 @@ #include #include #include "render/gles2.h" -#include "render/shm_format.h" /* * The DRM formats are little endian while the GL formats are big endian, @@ -66,11 +65,11 @@ const struct wlr_gles2_pixel_format *get_gles2_format_from_gl( return NULL; } -const enum wl_shm_format *get_gles2_wl_formats(size_t *len) { - static enum wl_shm_format wl_formats[sizeof(formats) / sizeof(formats[0])]; +const uint32_t *get_gles2_shm_formats(size_t *len) { + static uint32_t shm_formats[sizeof(formats) / sizeof(formats[0])]; *len = sizeof(formats) / sizeof(formats[0]); for (size_t i = 0; i < sizeof(formats) / sizeof(formats[0]); i++) { - wl_formats[i] = convert_drm_format_to_wl_shm(formats[i].drm_format); + shm_formats[i] = formats[i].drm_format; } - return wl_formats; + return shm_formats; } diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c index fa7bc6c7..d6dc8dbc 100644 --- a/render/gles2/renderer.c +++ b/render/gles2/renderer.c @@ -389,9 +389,9 @@ static void gles2_render_ellipse_with_matrix(struct wlr_renderer *wlr_renderer, pop_gles2_debug(renderer); } -static const enum wl_shm_format *gles2_get_shm_texture_formats( +static const uint32_t *gles2_get_shm_texture_formats( struct wlr_renderer *wlr_renderer, size_t *len) { - return get_gles2_wl_formats(len); + return get_gles2_shm_formats(len); } static bool gles2_resource_is_wl_drm_buffer(struct wlr_renderer *wlr_renderer, diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c index 4bbbaf59..cc97c20d 100644 --- a/render/wlr_renderer.c +++ b/render/wlr_renderer.c @@ -9,6 +9,7 @@ #include #include #include "util/signal.h" +#include "render/shm_format.h" #include "render/wlr_renderer.h" #include "backend/backend.h" @@ -151,8 +152,8 @@ void wlr_render_ellipse_with_matrix(struct wlr_renderer *r, r->impl->render_ellipse_with_matrix(r, color, matrix); } -const enum wl_shm_format *wlr_renderer_get_shm_texture_formats( - struct wlr_renderer *r, size_t *len) { +const uint32_t *wlr_renderer_get_shm_texture_formats(struct wlr_renderer *r, + size_t *len) { return r->impl->get_shm_texture_formats(r, len); } @@ -217,8 +218,7 @@ bool wlr_renderer_init_wl_display(struct wlr_renderer *r, } size_t len; - const enum wl_shm_format *formats = - wlr_renderer_get_shm_texture_formats(r, &len); + const uint32_t *formats = wlr_renderer_get_shm_texture_formats(r, &len); if (formats == NULL) { wlr_log(WLR_ERROR, "Failed to initialize shm: cannot get formats"); return false; @@ -228,7 +228,8 @@ bool wlr_renderer_init_wl_display(struct wlr_renderer *r, for (size_t i = 0; i < len; ++i) { // ARGB8888 and XRGB8888 must be supported and are implicitly // advertised by wl_display_init_shm - switch (formats[i]) { + enum wl_shm_format fmt = convert_drm_format_to_wl_shm(formats[i]); + switch (fmt) { case WL_SHM_FORMAT_ARGB8888: argb8888 = true; break; @@ -236,7 +237,7 @@ bool wlr_renderer_init_wl_display(struct wlr_renderer *r, xrgb8888 = true; break; default: - wl_display_add_shm_format(wl_display, formats[i]); + wl_display_add_shm_format(wl_display, fmt); } } assert(argb8888 && xrgb8888);