diff options
author | Simon Ser <contact@emersion.fr> | 2021-02-16 19:01:33 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-02-23 16:09:26 +0100 |
commit | 5d6d76c61fa6403260eacb10f0b99ff2ab919b3a (patch) | |
tree | 0a68405f7bd34819e3c1c7956b78621c31bd1d80 | |
parent | bfd020047dbe3d3f1a3734d4fe48f04847a46603 (diff) |
render/shm_format: add wl_shm_format conversion helpers
-rw-r--r-- | include/render/shm_format.h | 9 | ||||
-rw-r--r-- | render/meson.build | 1 | ||||
-rw-r--r-- | render/shm_format.c | 24 |
3 files changed, 34 insertions, 0 deletions
diff --git a/include/render/shm_format.h b/include/render/shm_format.h new file mode 100644 index 00000000..bf6c8679 --- /dev/null +++ b/include/render/shm_format.h @@ -0,0 +1,9 @@ +#ifndef RENDER_SHM_FORMAT_H +#define RENDER_SHM_FORMAT_H + +#include <wayland-server-protocol.h> + +uint32_t convert_wl_shm_format_to_drm(enum wl_shm_format fmt); +enum wl_shm_format convert_drm_format_to_wl_shm(uint32_t fmt); + +#endif diff --git a/render/meson.build b/render/meson.build index f3e1cd26..644c2e21 100644 --- a/render/meson.build +++ b/render/meson.build @@ -4,6 +4,7 @@ wlr_files += files( 'egl.c', 'drm_format_set.c', 'gbm_allocator.c', + 'shm_format.c', 'swapchain.c', 'wlr_renderer.c', 'wlr_texture.c', diff --git a/render/shm_format.c b/render/shm_format.c new file mode 100644 index 00000000..cb3f7c01 --- /dev/null +++ b/render/shm_format.c @@ -0,0 +1,24 @@ +#include <drm_fourcc.h> +#include "render/shm_format.h" + +uint32_t convert_wl_shm_format_to_drm(enum wl_shm_format fmt) { + switch (fmt) { + case WL_SHM_FORMAT_XRGB8888: + return DRM_FORMAT_XRGB8888; + case WL_SHM_FORMAT_ARGB8888: + return DRM_FORMAT_ARGB8888; + default: + return (uint32_t)fmt; + } +} + +enum wl_shm_format convert_drm_format_to_wl_shm(uint32_t fmt) { + switch (fmt) { + case DRM_FORMAT_XRGB8888: + return WL_SHM_FORMAT_XRGB8888; + case DRM_FORMAT_ARGB8888: + return WL_SHM_FORMAT_ARGB8888; + default: + return (enum wl_shm_format)fmt; + } +} |