diff options
| author | Aidan Yang <[email protected]> | 2019-11-20 11:05:36 -0500 |
|---|---|---|
| committer | Alex Deucher <[email protected]> | 2019-12-18 16:09:07 -0500 |
| commit | 663bfef0da610da5920df3b030d2aae8e4513baa (patch) | |
| tree | b7db8959b118fc62ea0483561fb2f969a5ed0a1f | |
| parent | c09d1d3404e7cc79cc8a18ced6a2a244d28aac52 (diff) | |
drm/amd/display: Disable integerscaling for downscale and MPO
[Why]
Integer scaling is applied to MPO planes when downscaling,
MPO planes use variable taps and integer scaling sets taps=1
[How]
Disable integer scaling on MPO planes,
Disable integer scaling for downscaling planes
Signed-off-by: Aidan Yang <[email protected]>
Reviewed-by: Aric Cyr <[email protected]>
Acked-by: Rodrigo Siqueira <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c index 6c6f5640234c..39cc71bedf69 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c @@ -940,11 +940,27 @@ static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx) } +static bool is_downscaled(const struct rect *src_rect, const struct rect *dst_rect) +{ + if (src_rect->width > dst_rect->width || src_rect->height > dst_rect->height) + return true; + return false; +} + +static bool is_mpo(int layer_index) +{ + if (layer_index > 0) + return true; + return false; +} + static void calculate_integer_scaling(struct pipe_ctx *pipe_ctx) { unsigned int integer_multiple = 1; - if (pipe_ctx->plane_state->scaling_quality.integer_scaling) { + if (pipe_ctx->plane_state->scaling_quality.integer_scaling && + !is_downscaled(&pipe_ctx->plane_state->src_rect, &pipe_ctx->plane_state->dst_rect) && + !is_mpo(pipe_ctx->plane_state->layer_index)) { // calculate maximum # of replication of src onto addressable integer_multiple = min( pipe_ctx->stream->timing.h_addressable / pipe_ctx->stream->src.width, |