diff options
Diffstat (limited to 'render')
-rw-r--r-- | render/gles2/pixel_format.c | 19 | ||||
-rw-r--r-- | render/gles2/renderer.c | 15 |
2 files changed, 22 insertions, 12 deletions
diff --git a/render/gles2/pixel_format.c b/render/gles2/pixel_format.c index 7c34896c..89ba762f 100644 --- a/render/gles2/pixel_format.c +++ b/render/gles2/pixel_format.c @@ -6,13 +6,14 @@ * The wayland formats are little endian while the GL formats are big endian, * so WL_SHM_FORMAT_ARGB8888 is actually compatible with GL_BGRA_EXT. */ -struct gles2_pixel_format formats[] = { +static const struct gles2_pixel_format formats[] = { { .wl_format = WL_SHM_FORMAT_ARGB8888, .depth = 32, .bpp = 32, .gl_format = GL_BGRA_EXT, .gl_type = GL_UNSIGNED_BYTE, + .has_alpha = true, }, { .wl_format = WL_SHM_FORMAT_XRGB8888, @@ -20,6 +21,7 @@ struct gles2_pixel_format formats[] = { .bpp = 32, .gl_format = GL_BGRA_EXT, .gl_type = GL_UNSIGNED_BYTE, + .has_alpha = false, }, { .wl_format = WL_SHM_FORMAT_XBGR8888, @@ -27,6 +29,7 @@ struct gles2_pixel_format formats[] = { .bpp = 32, .gl_format = GL_RGBA, .gl_type = GL_UNSIGNED_BYTE, + .has_alpha = false, }, { .wl_format = WL_SHM_FORMAT_ABGR8888, @@ -34,8 +37,17 @@ struct gles2_pixel_format formats[] = { .bpp = 32, .gl_format = GL_RGBA, .gl_type = GL_UNSIGNED_BYTE, + .has_alpha = true, }, }; + +static const enum wl_shm_format wl_formats[] = { + WL_SHM_FORMAT_ARGB8888, + WL_SHM_FORMAT_XRGB8888, + WL_SHM_FORMAT_ABGR8888, + WL_SHM_FORMAT_XBGR8888, +}; + // TODO: more pixel formats const struct gles2_pixel_format *gles2_format_from_wl(enum wl_shm_format fmt) { @@ -46,3 +58,8 @@ const struct gles2_pixel_format *gles2_format_from_wl(enum wl_shm_format fmt) { } return NULL; } + +const enum wl_shm_format *gles2_formats(size_t *len) { + *len = sizeof(wl_formats) / sizeof(wl_formats[0]); + return wl_formats; +} diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c index 6b046bc4..2d05932c 100644 --- a/render/gles2/renderer.c +++ b/render/gles2/renderer.c @@ -179,16 +179,9 @@ static void gles2_render_ellipse(struct wlr_renderer *wlr_renderer, GLES2_DEBUG_POP; } -static const enum wl_shm_format *gles2_formats( - struct wlr_renderer *renderer, size_t *len) { - static const enum wl_shm_format formats[] = { - WL_SHM_FORMAT_ARGB8888, - WL_SHM_FORMAT_XRGB8888, - WL_SHM_FORMAT_ABGR8888, - WL_SHM_FORMAT_XBGR8888, - }; - *len = sizeof(formats) / sizeof(formats[0]); - return formats; +static const enum wl_shm_format *gles2_renderer_formats( + struct wlr_renderer *wlr_renderer, size_t *len) { + return gles2_formats(len); } static bool gles2_buffer_is_drm(struct wlr_renderer *wlr_renderer, @@ -266,7 +259,7 @@ static const struct wlr_renderer_impl renderer_impl = { .render_texture_with_matrix = gles2_render_texture_with_matrix, .render_quad = gles2_render_quad, .render_ellipse = gles2_render_ellipse, - .formats = gles2_formats, + .formats = gles2_renderer_formats, .buffer_is_drm = gles2_buffer_is_drm, .read_pixels = gles2_read_pixels, .format_supported = gles2_format_supported, |