From d512c00791e64b093a0d6fce1bac85c00f01c9e9 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Thu, 20 Nov 2025 18:25:35 +0100 Subject: [PATCH] render: add new 16- and 32-bits-per-component pixel formats These new formats have been introduced in libdrm 2.4.129: https://gitlab.freedesktop.org/mesa/libdrm/-/commit/31e68ea81c33bfd08fc6c8973fae60338f963f90 --- meson.build | 2 +- render/pixel_format.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 4b24e5046..e602bb427 100644 --- a/meson.build +++ b/meson.build @@ -98,7 +98,7 @@ wayland_server = dependency('wayland-server', ) drm = dependency('libdrm', - version: '>=2.4.122', + version: '>=2.4.129', fallback: 'libdrm', default_options: [ 'auto_features=disabled', diff --git a/render/pixel_format.c b/render/pixel_format.c index 7befbf082..5f2e8644a 100644 --- a/render/pixel_format.c +++ b/render/pixel_format.c @@ -44,10 +44,26 @@ static const struct wlr_pixel_format_info pixel_format_info[] = { .drm_format = DRM_FORMAT_R8, .bytes_per_block = 1, }, + { + .drm_format = DRM_FORMAT_R16F, + .bytes_per_block = 2, + }, + { + .drm_format = DRM_FORMAT_R32F, + .bytes_per_block = 4, + }, { .drm_format = DRM_FORMAT_GR88, .bytes_per_block = 2, }, + { + .drm_format = DRM_FORMAT_GR1616F, + .bytes_per_block = 4, + }, + { + .drm_format = DRM_FORMAT_GR3232F, + .bytes_per_block = 8, + }, { .drm_format = DRM_FORMAT_RGB888, .bytes_per_block = 3, @@ -56,6 +72,18 @@ static const struct wlr_pixel_format_info pixel_format_info[] = { .drm_format = DRM_FORMAT_BGR888, .bytes_per_block = 3, }, + { + .drm_format = DRM_FORMAT_BGR161616, + .bytes_per_block = 6, + }, + { + .drm_format = DRM_FORMAT_BGR161616F, + .bytes_per_block = 6, + }, + { + .drm_format = DRM_FORMAT_BGR323232F, + .bytes_per_block = 12, + }, { .drm_format = DRM_FORMAT_RGBX4444, .bytes_per_block = 2, @@ -136,6 +164,10 @@ static const struct wlr_pixel_format_info pixel_format_info[] = { .opaque_substitute = DRM_FORMAT_XBGR16161616F, .bytes_per_block = 8, }, + { + .drm_format = DRM_FORMAT_ABGR32323232F, + .bytes_per_block = 16, + }, { .drm_format = DRM_FORMAT_XBGR16161616, .bytes_per_block = 8,