]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/sun4i: frontend: Replace ARGB with XRGB as supported format
authorPaul Kocialkowski <paul.kocialkowski@bootlin.com>
Fri, 23 Nov 2018 09:24:34 +0000 (10:24 +0100)
committerMaxime Ripard <maxime.ripard@bootlin.com>
Tue, 27 Nov 2018 08:30:51 +0000 (09:30 +0100)
The frontend documentation (for the A33) mentions that ARGB is supported
as output, but with the alpha component always set to 0xff. In practice,
this means that the alpha component cannot be preserved when going
through the frontend. Since the information is lost, ARGB is not
properly supported.

As a result, expose the matching format supported by the frontend (both
for input and output) as XRGB instead of ARGB.

Since ARGB was the selected format for connecting the frontend to the
backend, change it to XRGB to reflect this as well.

The A31 and A80 SoCs apparently have a bit to enable proper alpha,
but this is not supported at this point (see the comment already in the
code).

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181123092515.2511-3-paul.kocialkowski@bootlin.com
drivers/gpu/drm/sun4i/sun4i_frontend.c
drivers/gpu/drm/sun4i/sun4i_layer.c

index ddf6cfa6dd2353e7fa94b94171ef913f36afd6fd..3ea9255848912b645f4c750e5cc92c4654ef35b8 100644 (file)
@@ -107,7 +107,7 @@ EXPORT_SYMBOL(sun4i_frontend_update_buffer);
 static int sun4i_frontend_drm_format_to_input_fmt(uint32_t fmt, u32 *val)
 {
        switch (fmt) {
-       case DRM_FORMAT_ARGB8888:
+       case DRM_FORMAT_XRGB8888:
                *val = 5;
                return 0;
 
@@ -120,7 +120,6 @@ static int sun4i_frontend_drm_format_to_output_fmt(uint32_t fmt, u32 *val)
 {
        switch (fmt) {
        case DRM_FORMAT_XRGB8888:
-       case DRM_FORMAT_ARGB8888:
                *val = 2;
                return 0;
 
index 7ba0f5a6f50d792e4fd1f37fe08c099ce4382dc9..1d007001ea71ec92761e6f388709893c3a8f4841 100644 (file)
@@ -100,9 +100,9 @@ static void sun4i_backend_layer_atomic_update(struct drm_plane *plane,
                sun4i_frontend_update_coord(frontend, plane);
                sun4i_frontend_update_buffer(frontend, plane);
                sun4i_frontend_update_formats(frontend, plane,
-                                             DRM_FORMAT_ARGB8888);
+                                             DRM_FORMAT_XRGB8888);
                sun4i_backend_update_layer_frontend(backend, layer->id,
-                                                   DRM_FORMAT_ARGB8888);
+                                                   DRM_FORMAT_XRGB8888);
                sun4i_frontend_enable(frontend);
        } else {
                sun4i_backend_update_layer_formats(backend, layer->id, plane);