From 0b3822f8564eeea381aeddf9c1ea732ee2041ba0 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Tue, 17 Jun 2025 16:37:53 +0300 Subject: [PATCH] color-lcms: detect identity matrix in color mapping Check that we never store an identity matrix as an arbitrary matrix. This can make processing of weston_color_mapping more efficient. Signed-off-by: Pekka Paalanen --- libweston/color-lcms/color-transform.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libweston/color-lcms/color-transform.c b/libweston/color-lcms/color-transform.c index 4df60e675..bead407f8 100644 --- a/libweston/color-lcms/color-transform.c +++ b/libweston/color-lcms/color-transform.c @@ -1403,9 +1403,13 @@ static void weston_color_mapping_set_from_m4f(struct weston_color_mapping *mapping, struct weston_mat4f mat) { - mapping->type = WESTON_COLOR_MAPPING_TYPE_MATRIX; - mapping->u.mat.matrix = weston_m3f_from_m4f_xyz(mat); - mapping->u.mat.offset = weston_v3f_from_v4f_xyz(mat.col[3]); + if (matrix_is_identity(mat, MATRIX_PRECISION_BITS)) { + mapping->type = WESTON_COLOR_MAPPING_TYPE_IDENTITY; + } else { + mapping->type = WESTON_COLOR_MAPPING_TYPE_MATRIX; + mapping->u.mat.matrix = weston_m3f_from_m4f_xyz(mat); + mapping->u.mat.offset = weston_v3f_from_v4f_xyz(mat.col[3]); + } } static bool