drm/amd/display: Update color space, bias and scale programming sequence
authorChris Park <chris.park@amd.com>
Wed, 27 Nov 2024 18:50:04 +0000 (13:50 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 10 Dec 2024 15:32:31 +0000 (10:32 -0500)
[Why]
DMColor inaccurately updates color space, bias and scale
destructively in dc_plane_state.  This can be resolved by
accurately populating the infos on dc_plane_info where then
translation to plane state can happen as a whole surface update sequence.

[How]
Remove dc_plane_state update in DMColor and update color space,
bias and scale on dc_plane_info.

Reviewed-by: Dillon Varone <dillon.varone@amd.com>
Signed-off-by: Chris Park <chris.park@amd.com>
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c
drivers/gpu/drm/amd/display/dc/dc.h

index d3bcb646545c6d8620087d320f33ed86ff8c1ca3..4afab745b0445169767220c67ad1c44afb646e1c 100644 (file)
@@ -2982,6 +2982,10 @@ static void copy_surface_update_to_plane(
        if (srf_update->cursor_csc_color_matrix)
                surface->cursor_csc_color_matrix =
                        *srf_update->cursor_csc_color_matrix;
+
+       if (srf_update->bias_and_scale.bias_and_scale_valid)
+                       surface->bias_and_scale =
+                                       srf_update->bias_and_scale;
 }
 
 static void copy_stream_update_to_stream(struct dc *dc,
index 1f9b6147c826a8e134a259e8d1080d3b39b3bcb8..5cdb28a8191ddb2b807af77e8e0f8f537a142261 100644 (file)
@@ -1527,6 +1527,7 @@ struct dc_surface_update {
        const struct dc_cm2_parameters *cm2_params;
        const struct dc_csc_transform *cursor_csc_color_matrix;
        unsigned int sdr_white_level_nits;
+       struct dc_bias_and_scale bias_and_scale;
 };
 
 /*