Commit 16fb754a authored by Dmytro Laktyushkin's avatar Dmytro Laktyushkin Committed by Alex Deucher

drm/amd/display: fix split viewport rounding error

Signed-off-by: default avatarDmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Acked-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 30ec2b97
...@@ -890,6 +890,10 @@ bool dcn_validate_bandwidth( ...@@ -890,6 +890,10 @@ bool dcn_validate_bandwidth(
+ pipe->bottom_pipe->plane_res.scl_data.recout.width; + pipe->bottom_pipe->plane_res.scl_data.recout.width;
} }
ASSERT(pipe->plane_res.scl_data.ratios.horz.value != dal_fixed31_32_one.value
|| v->scaler_rec_out_width[input_idx] == v->viewport_width[input_idx]);
ASSERT(pipe->plane_res.scl_data.ratios.vert.value != dal_fixed31_32_one.value
|| v->scaler_recout_height[input_idx] == v->viewport_height[input_idx]);
v->dcc_enable[input_idx] = pipe->plane_state->dcc.enable ? dcn_bw_yes : dcn_bw_no; v->dcc_enable[input_idx] = pipe->plane_state->dcc.enable ? dcn_bw_yes : dcn_bw_no;
v->source_pixel_format[input_idx] = tl_pixel_format_to_bw_defs( v->source_pixel_format[input_idx] = tl_pixel_format_to_bw_defs(
pipe->plane_state->format); pipe->plane_state->format);
......
...@@ -516,13 +516,11 @@ static void calculate_viewport(struct pipe_ctx *pipe_ctx) ...@@ -516,13 +516,11 @@ static void calculate_viewport(struct pipe_ctx *pipe_ctx)
right_view = (plane_state->rotation == ROTATION_ANGLE_270) != sec_split; right_view = (plane_state->rotation == ROTATION_ANGLE_270) != sec_split;
if (right_view) { if (right_view) {
data->viewport.width /= 2; data->viewport.x += data->viewport.width / 2;
data->viewport_c.width /= 2; data->viewport_c.x += data->viewport_c.width / 2;
data->viewport.x += data->viewport.width;
data->viewport_c.x += data->viewport_c.width;
/* Ceil offset pipe */ /* Ceil offset pipe */
data->viewport.width += data->viewport.width % 2; data->viewport.width = (data->viewport.width + 1) / 2;
data->viewport_c.width += data->viewport_c.width % 2; data->viewport_c.width = (data->viewport_c.width + 1) / 2;
} else { } else {
data->viewport.width /= 2; data->viewport.width /= 2;
data->viewport_c.width /= 2; data->viewport_c.width /= 2;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment