drm/amd/display: Limit nv21 dst_y
authorDmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Thu, 30 Apr 2020 19:38:04 +0000 (15:38 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 21 Apr 2023 12:50:21 +0000 (08:50 -0400)
Dst_y can become negative in extreme odm 4to1 cases. While not strictly
invalid, this should be limited to 0 for rq/dlg/ttu calculation.

Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@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/dml/dcn30/display_rq_dlg_calc_30.c

index cd3cfcb..0497a5d 100644 (file)
@@ -980,7 +980,7 @@ static void dml_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
 
        unsigned int vstartup_start = 0;
        unsigned int dst_x_after_scaler = 0;
-       unsigned int dst_y_after_scaler = 0;
+       int dst_y_after_scaler = 0;
        double line_wait = 0;
        double dst_y_prefetch = 0;
        double dst_y_per_vm_vblank = 0;
@@ -1171,6 +1171,8 @@ static void dml_rq_dlg_get_dlg_params(struct display_mode_lib *mode_lib,
 
        dst_x_after_scaler = get_dst_x_after_scaler(mode_lib, e2e_pipe_param, num_pipes, pipe_idx);
        dst_y_after_scaler = get_dst_y_after_scaler(mode_lib, e2e_pipe_param, num_pipes, pipe_idx);
+       if (dst_y_after_scaler < 0)
+               dst_y_after_scaler = 0;
 
        // do some adjustment on the dst_after scaler to account for odm combine mode
        dml_print("DML_DLG: %s: input dst_x_after_scaler                     = %d\n",