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 + +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 +#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; + } +}