From: Roman Stratiienko roman.stratiienko@globallogic.com
According to Allwinner DE2.0 Specification REV 1.0, vi layer supports the following pixel formats: ABGR_8888, ARGB_8888, BGRA_8888, RGBA_8888
Signed-off-by: Roman Stratiienko roman.stratiienko@globallogic.com --- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index bd0e6a52d1d8..07c27e6a4b77 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -404,17 +404,21 @@ static const struct drm_plane_funcs sun8i_vi_layer_funcs = { static const u32 sun8i_vi_layer_formats[] = { DRM_FORMAT_ABGR1555, DRM_FORMAT_ABGR4444, + DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB1555, DRM_FORMAT_ARGB4444, + DRM_FORMAT_ARGB8888, DRM_FORMAT_BGR565, DRM_FORMAT_BGR888, DRM_FORMAT_BGRA5551, DRM_FORMAT_BGRA4444, + DRM_FORMAT_BGRA8888, DRM_FORMAT_BGRX8888, DRM_FORMAT_RGB565, DRM_FORMAT_RGB888, DRM_FORMAT_RGBA4444, DRM_FORMAT_RGBA5551, + DRM_FORMAT_RGBA8888, DRM_FORMAT_RGBX8888, DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888,
Hi!
Dne sreda, 18. september 2019 ob 13:05:41 CEST je roman.stratiienko@globallogic.com napisal(a):
From: Roman Stratiienko roman.stratiienko@globallogic.com
According to Allwinner DE2.0 Specification REV 1.0, vi layer supports the following pixel formats: ABGR_8888, ARGB_8888, BGRA_8888, RGBA_8888
It's true that DE2 VI layers support those formats, but it wouldn't change anything because alpha blending is not supported by those planes. These formats were deliberately left out because their counterparts without alpha exist, for example ABGR8888 <-> XBGR8888. It would also confuse user, which would expect that alpha blending works if format with alpha channel is selected.
Admittedly some formats with alpha are still reported as supported due to lack of their counterparts without alpha, but I'm fine with removing them for consistency.
Best regards, Jernej
Signed-off-by: Roman Stratiienko roman.stratiienko@globallogic.com
drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index bd0e6a52d1d8..07c27e6a4b77 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -404,17 +404,21 @@ static const struct drm_plane_funcs sun8i_vi_layer_funcs = { static const u32 sun8i_vi_layer_formats[] = { DRM_FORMAT_ABGR1555, DRM_FORMAT_ABGR4444,
- DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB1555, DRM_FORMAT_ARGB4444,
- DRM_FORMAT_ARGB8888, DRM_FORMAT_BGR565, DRM_FORMAT_BGR888, DRM_FORMAT_BGRA5551, DRM_FORMAT_BGRA4444,
- DRM_FORMAT_BGRA8888, DRM_FORMAT_BGRX8888, DRM_FORMAT_RGB565, DRM_FORMAT_RGB888, DRM_FORMAT_RGBA4444, DRM_FORMAT_RGBA5551,
- DRM_FORMAT_RGBA8888, DRM_FORMAT_RGBX8888, DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888,
On Thu, Sep 19, 2019 at 08:53:10PM +0200, Jernej Škrabec wrote:
Dne sreda, 18. september 2019 ob 13:05:41 CEST je roman.stratiienko@globallogic.com napisal(a):
From: Roman Stratiienko roman.stratiienko@globallogic.com
According to Allwinner DE2.0 Specification REV 1.0, vi layer supports the following pixel formats: ABGR_8888, ARGB_8888, BGRA_8888, RGBA_8888
It's true that DE2 VI layers support those formats, but it wouldn't change anything because alpha blending is not supported by those planes. These formats were deliberately left out because their counterparts without alpha exist, for example ABGR8888 <-> XBGR8888. It would also confuse user, which would expect that alpha blending works if format with alpha channel is selected.
I'm not too familiar with the DE2 code, but why is alpha not working if the VI planes support formats with alpha?
Thanks! Maxime
On Fri, Sep 20, 2019 at 9:20 AM Maxime Ripard mripard@kernel.org wrote:
On Thu, Sep 19, 2019 at 08:53:10PM +0200, Jernej Škrabec wrote:
Dne sreda, 18. september 2019 ob 13:05:41 CEST je roman.stratiienko@globallogic.com napisal(a):
From: Roman Stratiienko roman.stratiienko@globallogic.com
According to Allwinner DE2.0 Specification REV 1.0, vi layer supports the following pixel formats: ABGR_8888, ARGB_8888, BGRA_8888, RGBA_8888
It's true that DE2 VI layers support those formats, but it wouldn't change anything because alpha blending is not supported by those planes. These formats were deliberately left out because their counterparts without alpha exist, for example ABGR8888 <-> XBGR8888. It would also confuse user, which would expect that alpha blending works if format with alpha channel is selected.
I'm not too familiar with the DE2 code, but why is alpha not working if the VI planes support formats with alpha?
Good question. It mentioned in the datasheet https://linux-sunxi.org/images/7/7b/Allwinner_DE2.0_Spec_V1.0.pdf on page 95: "All ui layers' alpha is useless" And my experiments proves it.
My assumption that vi uses post-processing that cuts out alpha values.
Thanks! Maxime
On Thu, Sep 19, 2019 at 9:53 PM Jernej Škrabec jernej.skrabec@siol.net wrote:
Hi!
Dne sreda, 18. september 2019 ob 13:05:41 CEST je roman.stratiienko@globallogic.com napisal(a):
From: Roman Stratiienko roman.stratiienko@globallogic.com
According to Allwinner DE2.0 Specification REV 1.0, vi layer supports the following pixel formats: ABGR_8888, ARGB_8888, BGRA_8888, RGBA_8888
It's true that DE2 VI layers support those formats, but it wouldn't change anything because alpha blending is not supported by those planes. These formats were deliberately left out because their counterparts without alpha exist, for example ABGR8888 <-> XBGR8888. It would also confuse user, which would expect that alpha blending works if format with alpha channel is selected.
Admittedly some formats with alpha are still reported as supported due to lack of their counterparts without alpha, but I'm fine with removing them for consistency.
Why not to replace 'A' with 'X' on all relevant formats and map them to corresponding index marked with 'A' (that behaves as true 'X' for vi)
Best regards, Jernej
Signed-off-by: Roman Stratiienko roman.stratiienko@globallogic.com
drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index bd0e6a52d1d8..07c27e6a4b77 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -404,17 +404,21 @@ static const struct drm_plane_funcs sun8i_vi_layer_funcs = { static const u32 sun8i_vi_layer_formats[] = { DRM_FORMAT_ABGR1555, DRM_FORMAT_ABGR4444,
DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB1555, DRM_FORMAT_ARGB4444,
DRM_FORMAT_ARGB8888, DRM_FORMAT_BGR565, DRM_FORMAT_BGR888, DRM_FORMAT_BGRA5551, DRM_FORMAT_BGRA4444,
DRM_FORMAT_BGRA8888, DRM_FORMAT_BGRX8888, DRM_FORMAT_RGB565, DRM_FORMAT_RGB888, DRM_FORMAT_RGBA4444, DRM_FORMAT_RGBA5551,
DRM_FORMAT_RGBA8888, DRM_FORMAT_RGBX8888, DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888,
Dne petek, 20. september 2019 ob 22:22:44 CEST je Roman Stratiienko napisal(a):
On Thu, Sep 19, 2019 at 9:53 PM Jernej Škrabec jernej.skrabec@siol.net
wrote:
Hi!
Dne sreda, 18. september 2019 ob 13:05:41 CEST je
roman.stratiienko@globallogic.com napisal(a):
From: Roman Stratiienko roman.stratiienko@globallogic.com
According to Allwinner DE2.0 Specification REV 1.0, vi layer supports the following pixel formats: ABGR_8888, ARGB_8888, BGRA_8888, RGBA_8888
It's true that DE2 VI layers support those formats, but it wouldn't change anything because alpha blending is not supported by those planes. These formats were deliberately left out because their counterparts without alpha exist, for example ABGR8888 <-> XBGR8888. It would also confuse user, which would expect that alpha blending works if format with alpha channel is selected.
Admittedly some formats with alpha are still reported as supported due to lack of their counterparts without alpha, but I'm fine with removing them for consistency.
I checked again and appropriate formats (with "X" instead of "A") already exist.
Why not to replace 'A' with 'X' on all relevant formats and map them to corresponding index marked with 'A' (that behaves as true 'X' for vi)
Yes, that's would be best.
Best regards, Jernej
Best regards, Jernej
Signed-off-by: Roman Stratiienko roman.stratiienko@globallogic.com
drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index bd0e6a52d1d8..07c27e6a4b77 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -404,17 +404,21 @@ static const struct drm_plane_funcs sun8i_vi_layer_funcs = { static const u32 sun8i_vi_layer_formats[] = {
DRM_FORMAT_ABGR1555, DRM_FORMAT_ABGR4444,
DRM_FORMAT_ABGR8888, DRM_FORMAT_ARGB1555, DRM_FORMAT_ARGB4444,
DRM_FORMAT_ARGB8888, DRM_FORMAT_BGR565, DRM_FORMAT_BGR888, DRM_FORMAT_BGRA5551, DRM_FORMAT_BGRA4444,
DRM_FORMAT_BGRA8888, DRM_FORMAT_BGRX8888, DRM_FORMAT_RGB565, DRM_FORMAT_RGB888, DRM_FORMAT_RGBA4444, DRM_FORMAT_RGBA5551,
DRM_FORMAT_RGBA8888, DRM_FORMAT_RGBX8888, DRM_FORMAT_XBGR8888, DRM_FORMAT_XRGB8888,
dri-devel@lists.freedesktop.org