]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/vc4: Set premultiplied for alpha formats
authorStefan Schake <stschake@gmail.com>
Fri, 9 Mar 2018 00:53:34 +0000 (01:53 +0100)
committerEric Anholt <eric@anholt.net>
Fri, 9 Mar 2018 19:24:53 +0000 (11:24 -0800)
Alpha formats in DRM are assumed to be premultiplied, so we should be
setting the PREMULT bit in the plane configuration for HVS.

Changes from v1:
 - Use correct has_alpha

Signed-off-by: Stefan Schake <stschake@gmail.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
Link: https://patchwork.freedesktop.org/patch/msgid/1520556817-97297-2-git-send-email-stschake@gmail.com
drivers/gpu/drm/vc4/vc4_plane.c
drivers/gpu/drm/vc4/vc4_regs.h

index c4c7af11fec523d49b4075be4e6267605f4a6198..831e1959e64d35b7898671edc7cd153fd62329ea 100644 (file)
@@ -618,13 +618,14 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
                                              SCALER_POS1_SCL_HEIGHT));
        }
 
-       /* Position Word 2: Source Image Size, Alpha Mode */
+       /* Position Word 2: Source Image Size, Alpha */
        vc4_state->pos2_offset = vc4_state->dlist_count;
        vc4_dlist_write(vc4_state,
                        VC4_SET_FIELD(fb->format->has_alpha ?
                                      SCALER_POS2_ALPHA_MODE_PIPELINE :
                                      SCALER_POS2_ALPHA_MODE_FIXED,
                                      SCALER_POS2_ALPHA_MODE) |
+                       (fb->format->has_alpha ? SCALER_POS2_ALPHA_PREMULT : 0) |
                        VC4_SET_FIELD(vc4_state->src_w[0], SCALER_POS2_WIDTH) |
                        VC4_SET_FIELD(vc4_state->src_h[0], SCALER_POS2_HEIGHT));
 
index b9749cb240638ddce98a656409c6b6ffb3e44582..a141496104a6594107e45288872026f98c989e32 100644 (file)
@@ -848,6 +848,7 @@ enum hvs_pixel_format {
 #define SCALER_POS2_ALPHA_MODE_FIXED           1
 #define SCALER_POS2_ALPHA_MODE_FIXED_NONZERO   2
 #define SCALER_POS2_ALPHA_MODE_FIXED_OVER_0x07 3
+#define SCALER_POS2_ALPHA_PREMULT              BIT(29)
 
 #define SCALER_POS2_HEIGHT_MASK                        VC4_MASK(27, 16)
 #define SCALER_POS2_HEIGHT_SHIFT               16