drm/i915: Make setting color key atomic.
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Mon, 15 Jun 2015 10:33:54 +0000 (12:33 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 22 Jun 2015 12:28:15 +0000 (14:28 +0200)
By making color key atomic there are no more transitional helpers.
The plane check function will reject the color key when a scaler is
active.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Tested-by(IVB): Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_atomic_plane.c
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_drv.h
drivers/gpu/drm/i915/intel_sprite.c

index 91d5376..10a8ece 100644 (file)
@@ -56,6 +56,7 @@ intel_create_plane_state(struct drm_plane *plane)
 
        state->base.plane = plane;
        state->base.rotation = BIT(DRM_ROTATE_0);
+       state->ckey.flags = I915_SET_COLORKEY_NONE;
 
        return state;
 }
index b77ecae..30ffca8 100644 (file)
@@ -4411,9 +4411,9 @@ static int skl_update_scaler_plane(struct intel_crtc_state *crtc_state,
                return ret;
 
        /* check colorkey */
-       if (WARN_ON(intel_plane->ckey.flags != I915_SET_COLORKEY_NONE)) {
+       if (plane_state->ckey.flags != I915_SET_COLORKEY_NONE) {
                DRM_DEBUG_KMS("[PLANE:%d] scaling with color key not allowed",
-                       intel_plane->base.base.id);
+                             intel_plane->base.base.id);
                return -EINVAL;
        }
 
@@ -13746,7 +13746,7 @@ intel_check_primary_plane(struct drm_plane *plane,
 
        /* use scaler when colorkey is not required */
        if (INTEL_INFO(plane->dev)->gen >= 9 &&
-           to_intel_plane(plane)->ckey.flags == I915_SET_COLORKEY_NONE) {
+           state->ckey.flags == I915_SET_COLORKEY_NONE) {
                min_scale = 1;
                max_scale = skl_max_scale(to_intel_crtc(crtc), crtc_state);
                can_position = true;
@@ -13892,7 +13892,6 @@ static struct drm_plane *intel_primary_plane_create(struct drm_device *dev,
        primary->check_plane = intel_check_primary_plane;
        primary->commit_plane = intel_commit_primary_plane;
        primary->disable_plane = intel_disable_primary_plane;
-       primary->ckey.flags = I915_SET_COLORKEY_NONE;
        if (HAS_FBC(dev) && INTEL_INFO(dev)->gen < 4)
                primary->plane = !pipe;
 
Simple merge
Simple merge