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

Use drm_mode_get_hv_timing() to fill out the plane clip rectangle.
No functional changes since pipe_src_w/h are already filled via
drm_mode_get_hv_timing().

Once everyone agrees on this we can move the clip handling into
drm_atomic_helper_check_plane_state().

Cc: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_atomic_plane.c |  8 --------
 drivers/gpu/drm/i915/intel_display.c      | 14 ++++++++++++--
 drivers/gpu/drm/i915/intel_drv.h          |  1 -
 drivers/gpu/drm/i915/intel_sprite.c       |  8 ++++++--
 4 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c 
b/drivers/gpu/drm/i915/intel_atomic_plane.c
index 8e6dc159f64d..c7984a80706e 100644
--- a/drivers/gpu/drm/i915/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
@@ -129,14 +129,6 @@ int intel_plane_atomic_check_with_state(const struct 
intel_crtc_state *old_crtc_
        if (!intel_state->base.crtc && !old_plane_state->base.crtc)
                return 0;
 
-       /* Clip all planes to CRTC size, or 0x0 if CRTC is disabled */
-       intel_state->clip.x1 = 0;
-       intel_state->clip.y1 = 0;
-       intel_state->clip.x2 =
-               crtc_state->base.enable ? crtc_state->pipe_src_w : 0;
-       intel_state->clip.y2 =
-               crtc_state->base.enable ? crtc_state->pipe_src_h : 0;
-
        if (state->fb && drm_rotation_90_or_270(state->rotation)) {
                struct drm_format_name_buf format_name;
 
diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 959d21157328..4eeec590b722 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -9267,13 +9267,18 @@ static int intel_check_cursor(struct intel_crtc_state 
*crtc_state,
                              struct intel_plane_state *plane_state)
 {
        const struct drm_framebuffer *fb = plane_state->base.fb;
+       struct drm_rect clip = {};
        int src_x, src_y;
        u32 offset;
        int ret;
 
+       if (crtc_state->base.enable)
+               drm_mode_get_hv_timing(&crtc_state->base.mode,
+                                      &clip.x2, &clip.y2);
+
        ret = drm_atomic_helper_check_plane_state(&plane_state->base,
                                                  &crtc_state->base,
-                                                 &plane_state->clip,
+                                                 &clip,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  true, true);
@@ -12832,6 +12837,7 @@ intel_check_primary_plane(struct intel_plane *plane,
        int min_scale = DRM_PLANE_HELPER_NO_SCALING;
        int max_scale = DRM_PLANE_HELPER_NO_SCALING;
        bool can_position = false;
+       struct drm_rect clip = {};
        int ret;
 
        if (INTEL_GEN(dev_priv) >= 9) {
@@ -12843,9 +12849,13 @@ intel_check_primary_plane(struct intel_plane *plane,
                can_position = true;
        }
 
+       if (crtc_state->base.enable)
+               drm_mode_get_hv_timing(&crtc_state->base.mode,
+                                      &clip.x2, &clip.y2);
+
        ret = drm_atomic_helper_check_plane_state(&state->base,
                                                  &crtc_state->base,
-                                                 &state->clip,
+                                                 &clip,
                                                  min_scale, max_scale,
                                                  can_position, true);
        if (ret)
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 635a96fcd788..06017de4a29c 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -403,7 +403,6 @@ struct intel_atomic_state {
 
 struct intel_plane_state {
        struct drm_plane_state base;
-       struct drm_rect clip;
        struct i915_vma *vma;
 
        struct {
diff --git a/drivers/gpu/drm/i915/intel_sprite.c 
b/drivers/gpu/drm/i915/intel_sprite.c
index dd485f59eb1d..cffa7a8b0f9c 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -864,7 +864,7 @@ intel_check_sprite_plane(struct intel_plane *plane,
        uint32_t src_x, src_y, src_w, src_h;
        struct drm_rect *src = &state->base.src;
        struct drm_rect *dst = &state->base.dst;
-       const struct drm_rect *clip = &state->clip;
+       struct drm_rect clip = {};
        int hscale, vscale;
        int max_scale, min_scale;
        bool can_scale;
@@ -922,7 +922,11 @@ intel_check_sprite_plane(struct intel_plane *plane,
        vscale = drm_rect_calc_vscale_relaxed(src, dst, min_scale, max_scale);
        BUG_ON(vscale < 0);
 
-       state->base.visible = drm_rect_clip_scaled(src, dst, clip, hscale, 
vscale);
+       if (crtc_state->base.enable)
+               drm_mode_get_hv_timing(&crtc_state->base.mode,
+                                      &clip.x2, &clip.y2);
+
+       state->base.visible = drm_rect_clip_scaled(src, dst, &clip, hscale, 
vscale);
 
        crtc_x = dst->x1;
        crtc_y = dst->y1;
-- 
2.13.6

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to