| From foo@baz Sat Sep 29 04:24:28 PDT 2018 |
| From: Maxime Ripard <maxime.ripard@bootlin.com> |
| Date: Thu, 17 May 2018 15:37:59 +0200 |
| Subject: drm/vc4: plane: Expand the lower bits by repeating the higher bits |
| |
| From: Maxime Ripard <maxime.ripard@bootlin.com> |
| |
| [ Upstream commit 3257ec797d3a8c5232389eb1952d4451e80f3931 ] |
| |
| The vc4 HVS uses an internal RGB888 representation of the frames, and will |
| by default expand formats using a lower depth using zeros. |
| |
| This causes an issue when we try to use other compositing software such as |
| pixman that fill the missing bits by repeating the higher significant bits. |
| As such, we can't check the display output in a reliable way by doing a |
| software composition and an hardware one and compare both. |
| |
| To prevent this, force the same behaviour so that we can do such things. |
| |
| Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> |
| Signed-off-by: Eric Anholt <eric@anholt.net> |
| Link: https://patchwork.freedesktop.org/patch/msgid/20180517133759.25626-1-maxime.ripard@bootlin.com |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/gpu/drm/vc4/vc4_plane.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/gpu/drm/vc4/vc4_plane.c |
| +++ b/drivers/gpu/drm/vc4/vc4_plane.c |
| @@ -543,6 +543,7 @@ static int vc4_plane_mode_set(struct drm |
| /* Control word */ |
| vc4_dlist_write(vc4_state, |
| SCALER_CTL0_VALID | |
| + VC4_SET_FIELD(SCALER_CTL0_RGBA_EXPAND_ROUND, SCALER_CTL0_RGBA_EXPAND) | |
| (format->pixel_order << SCALER_CTL0_ORDER_SHIFT) | |
| (format->hvs << SCALER_CTL0_PIXEL_FORMAT_SHIFT) | |
| VC4_SET_FIELD(tiling, SCALER_CTL0_TILING) | |