From d26ab4360db05446588dabcc0830cc547dbcfe09 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Tue, 11 Mar 2025 14:30:47 +0200 Subject: [PATCH] color-lcms: transform_search_param well-formedness Assert that the search param structure is well-formed, so that there won't be cache misses due inconsistent fields. Anything called from inside cmlcms_color_transform_get() can skip asserting these. Signed-off-by: Pekka Paalanen --- libweston/color-lcms/color-transform.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/libweston/color-lcms/color-transform.c b/libweston/color-lcms/color-transform.c index 785606886..bb1ce3076 100644 --- a/libweston/color-lcms/color-transform.c +++ b/libweston/color-lcms/color-transform.c @@ -1233,7 +1233,6 @@ xform_realize_chain(struct cmlcms_color_transform *xform) chain[chain_len++] = output_profile->extract.vcgt; /* Render intent does not apply here, but need to set something. */ - weston_assert_ptr_null(cm->base.compositor, render_intent); render_intent = weston_render_intent_info_from(cm->base.compositor, WESTON_RENDER_INTENT_ABSOLUTE); break; @@ -1405,6 +1404,19 @@ cmlcms_color_transform_get(struct weston_color_manager_lcms *cm, { struct cmlcms_color_transform *xform; + weston_assert_ptr_not_null(cm->base.compositor, param->output_profile); + switch (param->category) { + case CMLCMS_CATEGORY_BLEND_TO_OUTPUT: + weston_assert_ptr_null(cm->base.compositor, param->render_intent); + weston_assert_ptr_null(cm->base.compositor, param->input_profile); + break; + case CMLCMS_CATEGORY_INPUT_TO_OUTPUT: + case CMLCMS_CATEGORY_INPUT_TO_BLEND: + weston_assert_ptr_not_null(cm->base.compositor, param->render_intent); + weston_assert_ptr_not_null(cm->base.compositor, param->input_profile); + break; + } + wl_list_for_each(xform, &cm->color_transform_list, link) { if (transform_matches_params(xform, param)) { weston_color_transform_ref(&xform->base);