mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 04:42:04 -04:00
drm/sun4i: Fix DE2 VI layer format support
commit 20896ef137340e9426cf322606f764452f5eb960 upstream.
DE2 VI layer doesn't support blending which means alpha channel is
ignored. Replace all formats with alpha with "don't care" (X) channel.
Fixes: 7480ba4d75 ("drm/sun4i: Add support for DE2 VI planes")
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20200224173901.174016-4-jernej.skrabec@siol.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
dfe25f9a1c
commit
a49ddfae6c
2 changed files with 67 additions and 11 deletions
|
|
@ -106,48 +106,104 @@ static const struct de2_fmt_info de2_formats[] = {
|
|||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
/* for DE2 VI layer which ignores alpha */
|
||||
.drm_fmt = DRM_FORMAT_XRGB4444,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ARGB4444,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_ABGR4444,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ABGR4444,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
/* for DE2 VI layer which ignores alpha */
|
||||
.drm_fmt = DRM_FORMAT_XBGR4444,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ABGR4444,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_RGBA4444,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_RGBA4444,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
/* for DE2 VI layer which ignores alpha */
|
||||
.drm_fmt = DRM_FORMAT_RGBX4444,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_RGBA4444,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_BGRA4444,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_BGRA4444,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
/* for DE2 VI layer which ignores alpha */
|
||||
.drm_fmt = DRM_FORMAT_BGRX4444,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_BGRA4444,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_ARGB1555,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ARGB1555,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
/* for DE2 VI layer which ignores alpha */
|
||||
.drm_fmt = DRM_FORMAT_XRGB1555,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ARGB1555,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_ABGR1555,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ABGR1555,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
/* for DE2 VI layer which ignores alpha */
|
||||
.drm_fmt = DRM_FORMAT_XBGR1555,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ABGR1555,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_RGBA5551,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_RGBA5551,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
/* for DE2 VI layer which ignores alpha */
|
||||
.drm_fmt = DRM_FORMAT_RGBX5551,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_RGBA5551,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_BGRA5551,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_BGRA5551,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
/* for DE2 VI layer which ignores alpha */
|
||||
.drm_fmt = DRM_FORMAT_BGRX5551,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_BGRA5551,
|
||||
.rgb = true,
|
||||
.csc = SUN8I_CSC_MODE_OFF,
|
||||
},
|
||||
{
|
||||
.drm_fmt = DRM_FORMAT_ARGB2101010,
|
||||
.de2_fmt = SUN8I_MIXER_FBFMT_ARGB2101010,
|
||||
|
|
|
|||
|
|
@ -398,26 +398,26 @@ static const struct drm_plane_funcs sun8i_vi_layer_funcs = {
|
|||
};
|
||||
|
||||
/*
|
||||
* While all RGB formats are supported, VI planes don't support
|
||||
* alpha blending, so there is no point having formats with alpha
|
||||
* channel if their opaque analog exist.
|
||||
* While DE2 VI layer supports same RGB formats as UI layer, alpha
|
||||
* channel is ignored. This structure lists all unique variants
|
||||
* where alpha channel is replaced with "don't care" (X) channel.
|
||||
*/
|
||||
static const u32 sun8i_vi_layer_formats[] = {
|
||||
DRM_FORMAT_ABGR1555,
|
||||
DRM_FORMAT_ABGR4444,
|
||||
DRM_FORMAT_ARGB1555,
|
||||
DRM_FORMAT_ARGB4444,
|
||||
DRM_FORMAT_BGR565,
|
||||
DRM_FORMAT_BGR888,
|
||||
DRM_FORMAT_BGRA5551,
|
||||
DRM_FORMAT_BGRA4444,
|
||||
DRM_FORMAT_BGRX4444,
|
||||
DRM_FORMAT_BGRX5551,
|
||||
DRM_FORMAT_BGRX8888,
|
||||
DRM_FORMAT_RGB565,
|
||||
DRM_FORMAT_RGB888,
|
||||
DRM_FORMAT_RGBA4444,
|
||||
DRM_FORMAT_RGBA5551,
|
||||
DRM_FORMAT_RGBX4444,
|
||||
DRM_FORMAT_RGBX5551,
|
||||
DRM_FORMAT_RGBX8888,
|
||||
DRM_FORMAT_XBGR1555,
|
||||
DRM_FORMAT_XBGR4444,
|
||||
DRM_FORMAT_XBGR8888,
|
||||
DRM_FORMAT_XRGB1555,
|
||||
DRM_FORMAT_XRGB4444,
|
||||
DRM_FORMAT_XRGB8888,
|
||||
|
||||
DRM_FORMAT_NV16,
|
||||
|
|
|
|||
Loading…
Reference in a new issue