diff options
author | Simon Zeni <simon@bl4ckb0ne.ca> | 2021-03-15 12:29:29 -0400 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-03-25 10:55:54 +0100 |
commit | 5fd82c6f54685e6bdc354b4f639bdfc52539e12f (patch) | |
tree | 8c16e1fa4068e9768900254aea7fb7381054fd1f /render | |
parent | d9cae04ffc3140408f2604eeff7d4776fe8d9548 (diff) |
render/pixel_format: introduce pixel format info table
Diffstat (limited to 'render')
-rw-r--r-- | render/meson.build | 1 | ||||
-rw-r--r-- | render/pixel_format.c | 30 |
2 files changed, 31 insertions, 0 deletions
diff --git a/render/meson.build b/render/meson.build index 644c2e21..0b75c5e1 100644 --- a/render/meson.build +++ b/render/meson.build @@ -5,6 +5,7 @@ wlr_files += files( 'drm_format_set.c', 'gbm_allocator.c', 'shm_format.c', + 'pixel_format.c', 'swapchain.c', 'wlr_renderer.c', 'wlr_texture.c', diff --git a/render/pixel_format.c b/render/pixel_format.c new file mode 100644 index 00000000..4c4df3bc --- /dev/null +++ b/render/pixel_format.c @@ -0,0 +1,30 @@ +#include <drm_fourcc.h> +#include "render/pixel_format.h" + +static const struct wlr_pixel_format_info pixel_format_info[] = { + { + .drm_format = DRM_FORMAT_XRGB8888, + .opaque_substitute = DRM_FORMAT_INVALID, + .bpp = 32, + .has_alpha = false, + }, + { + .drm_format = DRM_FORMAT_ARGB8888, + .opaque_substitute = DRM_FORMAT_XRGB8888, + .bpp = 32, + .has_alpha = true, + } +}; + +static const size_t pixel_format_info_size = + sizeof(pixel_format_info) / sizeof(pixel_format_info[0]); + +const struct wlr_pixel_format_info *drm_get_pixel_format_info(uint32_t fmt) { + for (size_t i = 0; i < pixel_format_info_size; ++i) { + if (pixel_format_info[i].drm_format == fmt) { + return &pixel_format_info[i]; + } + } + + return NULL; +} |