Commit 25b31581 authored by Wesley Chalmers's avatar Wesley Chalmers Committed by Alex Deucher

drm/amd/display: Fix ODM policy implementation

[WHY]
Only the leftmost ODM pipe should be offset when scaling. A previous
code change was intended to implement this policy, but a section of code
was overlooked.
Signed-off-by: default avatarWesley Chalmers <Wesley.Chalmers@amd.com>
Reviewed-by: default avatarAric Cyr <Aric.Cyr@amd.com>
Acked-by: default avatarQingqing Zhuo <qingqing.zhuo@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Cc: <stable@vger.kernel.org>
parent 099303e9
...@@ -785,14 +785,15 @@ static void calculate_recout(struct pipe_ctx *pipe_ctx) ...@@ -785,14 +785,15 @@ static void calculate_recout(struct pipe_ctx *pipe_ctx)
/* /*
* Only the leftmost ODM pipe should be offset by a nonzero distance * Only the leftmost ODM pipe should be offset by a nonzero distance
*/ */
if (!pipe_ctx->prev_odm_pipe) if (!pipe_ctx->prev_odm_pipe) {
data->recout.x = stream->dst.x; data->recout.x = stream->dst.x;
else if (stream->src.x < surf_clip.x)
data->recout.x = 0; data->recout.x += (surf_clip.x - stream->src.x) * stream->dst.width
if (stream->src.x < surf_clip.x)
data->recout.x += (surf_clip.x - stream->src.x) * stream->dst.width
/ stream->src.width; / stream->src.width;
} else
data->recout.x = 0;
data->recout.width = surf_clip.width * stream->dst.width / stream->src.width; data->recout.width = surf_clip.width * stream->dst.width / stream->src.width;
if (data->recout.width + data->recout.x > stream->dst.x + stream->dst.width) if (data->recout.width + data->recout.x > stream->dst.x + stream->dst.width)
data->recout.width = stream->dst.x + stream->dst.width - data->recout.x; data->recout.width = stream->dst.x + stream->dst.width - data->recout.x;
......
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