|
@@ -379,6 +379,27 @@ bool dc_stream_set_gamut_remap(struct dc *dc, const struct dc_stream_state *stre
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+bool dc_stream_program_csc_matrix(struct dc *dc, struct dc_stream_state *stream)
|
|
|
+{
|
|
|
+ int i = 0;
|
|
|
+ bool ret = false;
|
|
|
+ struct pipe_ctx *pipes;
|
|
|
+
|
|
|
+ for (i = 0; i < MAX_PIPES; i++) {
|
|
|
+ if (dc->current_state->res_ctx.pipe_ctx[i].stream
|
|
|
+ == stream) {
|
|
|
+
|
|
|
+ pipes = &dc->current_state->res_ctx.pipe_ctx[i];
|
|
|
+ dc->hwss.program_csc_matrix(pipes,
|
|
|
+ stream->output_color_space,
|
|
|
+ stream->csc_color_matrix.matrix);
|
|
|
+ ret = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
void dc_stream_set_static_screen_events(struct dc *dc,
|
|
|
struct dc_stream_state **streams,
|
|
|
int num_streams,
|
|
@@ -1387,6 +1408,9 @@ static void commit_planes_do_stream_update(struct dc *dc,
|
|
|
if (stream_update->gamut_remap)
|
|
|
dc_stream_set_gamut_remap(dc, stream);
|
|
|
|
|
|
+ if (stream_update->output_csc_transform)
|
|
|
+ dc_stream_program_csc_matrix(dc, stream);
|
|
|
+
|
|
|
/* Full fe update*/
|
|
|
if (update_type == UPDATE_TYPE_FAST)
|
|
|
continue;
|