drm/i915: Use primary plane->state for overlay ckey setup
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 7 Dec 2016 17:28:11 +0000 (19:28 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 22 Dec 2016 19:31:10 +0000 (21:31 +0200)
Extract the primary plane pixel format via plane state when setting up
the overlay colorkey.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1481131693-27993-10-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/intel_overlay.c

index c4e4b85edf9a6d2769defe2b673595116fec7c05..4ae8502456fcce7247903ed4d29c04a63c987089 100644 (file)
@@ -690,31 +690,32 @@ static bool update_scaling_factors(struct intel_overlay *overlay,
 static void update_colorkey(struct intel_overlay *overlay,
                            struct overlay_registers __iomem *regs)
 {
+       const struct intel_plane_state *state =
+               to_intel_plane_state(overlay->crtc->base.primary->state);
        u32 key = overlay->color_key;
-       u32 flags;
+       u32 format = 0;
+       u32 flags = 0;
 
-       flags = 0;
        if (overlay->color_key_enabled)
                flags |= DST_KEY_ENABLE;
 
-       switch (overlay->crtc->base.primary->fb->bits_per_pixel) {
-       case 8:
+       if (state->base.visible)
+               format = state->base.fb->pixel_format;
+
+       switch (format) {
+       case DRM_FORMAT_C8:
                key = 0;
                flags |= CLK_RGB8I_MASK;
                break;
-
-       case 16:
-               if (overlay->crtc->base.primary->fb->depth == 15) {
-                       key = RGB15_TO_COLORKEY(key);
-                       flags |= CLK_RGB15_MASK;
-               } else {
-                       key = RGB16_TO_COLORKEY(key);
-                       flags |= CLK_RGB16_MASK;
-               }
+       case DRM_FORMAT_XRGB1555:
+               key = RGB15_TO_COLORKEY(key);
+               flags |= CLK_RGB15_MASK;
                break;
-
-       case 24:
-       case 32:
+       case DRM_FORMAT_RGB565:
+               key = RGB16_TO_COLORKEY(key);
+               flags |= CLK_RGB16_MASK;
+               break;
+       default:
                flags |= CLK_RGB24_MASK;
                break;
        }