srf_update->lut3d_func))
memcpy(surface->lut3d_func, srf_update->lut3d_func,
sizeof(*surface->lut3d_func));
+
+ if (srf_update->blend_tf &&
+ (surface->blend_tf !=
+ srf_update->blend_tf))
+ memcpy(surface->blend_tf, srf_update->blend_tf,
+ sizeof(*surface->blend_tf));
+
#endif
if (srf_update->input_csc_color_matrix)
surface->input_csc_color_matrix =
plane_state->lut3d_func->ctx = ctx;
plane_state->lut3d_func->initialized = false;
}
+ plane_state->blend_tf = dc_create_transfer_func();
+ if (plane_state->blend_tf != NULL) {
+ plane_state->blend_tf->type = TF_TYPE_BYPASS;
+ plane_state->blend_tf->ctx = ctx;
+ }
#endif
}
plane_state->lut3d_func);
plane_state->lut3d_func = NULL;
}
+ if (plane_state->blend_tf != NULL) {
+ dc_transfer_func_release(
+ plane_state->blend_tf);
+ plane_state->blend_tf = NULL;
+ }
#endif
}
#if defined(CONFIG_DRM_AMD_DC_DCN2_0)
const struct dc_transfer_func *func_shaper;
const struct dc_3dlut *lut3d_func;
+ const struct dc_transfer_func *blend_tf;
#endif
};
unsigned int use_gamut_map_lib :1;
unsigned int chromatic_adaptation_src :1;
unsigned int chromatic_adaptation_dst :1;
- unsigned int reseved :5;
+ unsigned int do_blender_lut_degamma :1;
+ unsigned int reseved :4;
} bits;
};
lut3d_control_gamut_map_none = 0,
lut3d_control_gamut_map_tonemap,
lut3d_control_gamut_map_chto,
- lut3d_control_gamut_map_chto_chso,
- lut3d_control_gamut_map_chto_chci
+ lut3d_control_gamut_map_chso,
+ lut3d_control_gamut_map_chci
};
enum lut3d_control_rotation_mode {