renderer-gl: refactor gl_renderer_color_transform_create_steps()

This is tidier.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This commit is contained in:
Pekka Paalanen 2025-10-31 14:59:20 +02:00 committed by Leandro Ribeiro
parent d3f7a3be8f
commit f639731c87

View file

@ -291,6 +291,26 @@ gl_color_curve_init(struct gl_renderer *gr,
weston_assert_not_reached(gr->compositor, "invalid weston_color_curve_type");
}
static void
gl_color_mapping_init(struct gl_renderer *gr,
struct gl_renderer_color_mapping *gl_mapping,
const struct weston_color_mapping *mapping)
{
switch (mapping->type) {
case WESTON_COLOR_MAPPING_TYPE_IDENTITY:
*gl_mapping = (struct gl_renderer_color_mapping){
.type = SHADER_COLOR_MAPPING_IDENTITY,
};
return;
case WESTON_COLOR_MAPPING_TYPE_MATRIX:
gl_mapping->type = SHADER_COLOR_MAPPING_MATRIX;
gl_mapping->u.mat = mapping->u.mat;
return;
}
weston_assert_not_reached(gr->compositor, "invalid weston_color_mapping_type");
}
static void
gl_color_mapping_lut_3d_init(struct gl_renderer *gr,
struct gl_renderer_color_mapping *gl_mapping,
@ -318,13 +338,7 @@ static const struct gl_renderer_color_transform *
gl_renderer_color_transform_create_steps(struct gl_renderer *gr,
struct weston_color_transform *xform)
{
static const struct gl_renderer_color_transform no_op_gl_xform = {
.pre_curve.type = SHADER_COLOR_CURVE_IDENTITY,
.mapping.type = SHADER_COLOR_MAPPING_IDENTITY,
.post_curve.type = SHADER_COLOR_CURVE_IDENTITY,
};
struct gl_renderer_color_transform *gl_xform;
bool ok = false;
gl_xform = gl_renderer_color_transform_create(xform);
if (!gl_xform)
@ -336,21 +350,7 @@ gl_renderer_color_transform_create_steps(struct gl_renderer *gr,
return NULL;
}
switch (xform->mapping.type) {
case WESTON_COLOR_MAPPING_TYPE_IDENTITY:
gl_xform->mapping = no_op_gl_xform.mapping;
ok = true;
break;
case WESTON_COLOR_MAPPING_TYPE_MATRIX:
gl_xform->mapping.type = SHADER_COLOR_MAPPING_MATRIX;
gl_xform->mapping.u.mat = xform->mapping.u.mat;
ok = true;
break;
}
if (!ok) {
gl_renderer_color_transform_destroy(gl_xform);
return NULL;
}
gl_color_mapping_init(gr, &gl_xform->mapping, &xform->mapping);
if (!gl_color_curve_init(gr, &gl_xform->post_curve,
&xform->post_curve, xform)) {