From: Ville Syrjälä <ville.syrj...@linux.intel.com>

Extract the primary plane pixel format via plane state when setting up
the overlay colorkey.

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_overlay.c | 33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_overlay.c 
b/drivers/gpu/drm/i915/intel_overlay.c
index e4420b08f3ab..bc113ebc475f 100644
--- a/drivers/gpu/drm/i915/intel_overlay.c
+++ b/drivers/gpu/drm/i915/intel_overlay.c
@@ -689,31 +689,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;
        }
-- 
2.7.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to