diff options
author | Eric Anholt <eric@anholt.net> | 2015-10-23 12:36:27 +0300 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2015-11-17 23:27:03 +0300 |
commit | bf893acc1675516fabf238a5ee3b52859c5687dc (patch) | |
tree | 20c28ae1c025c05ed23e17bd559db8aa6c983d2c | |
parent | 36f4f69a092d766581f2442ddffea051e1ef464e (diff) | |
download | linux-bf893acc1675516fabf238a5ee3b52859c5687dc.tar.xz |
drm/vc4: Make sure that planes aren't scaled.
We would scan out the memory around them if an upscale was attempted,
and would just scan out incorrectly for downscaling.
Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_plane.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c index 2db509210d62..887f3caad0be 100644 --- a/drivers/gpu/drm/vc4/vc4_plane.c +++ b/drivers/gpu/drm/vc4/vc4_plane.c @@ -157,6 +157,16 @@ static int vc4_plane_mode_set(struct drm_plane *plane, int crtc_w = state->crtc_w; int crtc_h = state->crtc_h; + if (state->crtc_w << 16 != state->src_w || + state->crtc_h << 16 != state->src_h) { + /* We don't support scaling yet, which involves + * allocating the LBM memory for scaling temporary + * storage, and putting filter kernels in the HVS + * context. + */ + return -EINVAL; + } + if (crtc_x < 0) { offset += drm_format_plane_cpp(fb->pixel_format, 0) * -crtc_x; crtc_w += crtc_x; |