diff mbox

[3/6] drm: add helpers to go from plane state to drm_rect

Message ID 1476489353-16261-4-git-send-email-robdclark@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Rob Clark Oct. 14, 2016, 11:55 p.m. UTC
Signed-off-by: Rob Clark <robdclark@gmail.com>
---
 drivers/gpu/drm/drm_simple_kms_helper.c     | 14 ++------------
 drivers/gpu/drm/i915/intel_atomic_plane.c   | 10 ++--------
 drivers/gpu/drm/mediatek/mtk_drm_plane.c    | 15 ++-------------
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 10 ++--------
 include/drm/drm_crtc.h                      | 24 ++++++++++++++++++++++++
 5 files changed, 32 insertions(+), 41 deletions(-)

Comments

Sean Paul Oct. 17, 2016, 5 p.m. UTC | #1
On Fri, Oct 14, 2016 at 7:55 PM, Rob Clark <robdclark@gmail.com> wrote:

Reviewed-by: Sean Paul <seanpaul@chromium.org>

> Signed-off-by: Rob Clark <robdclark@gmail.com>
> ---
>  drivers/gpu/drm/drm_simple_kms_helper.c     | 14 ++------------
>  drivers/gpu/drm/i915/intel_atomic_plane.c   | 10 ++--------
>  drivers/gpu/drm/mediatek/mtk_drm_plane.c    | 15 ++-------------
>  drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 10 ++--------
>  include/drm/drm_crtc.h                      | 24 ++++++++++++++++++++++++
>  5 files changed, 32 insertions(+), 41 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
> index 0db36d2..9834fc5 100644
> --- a/drivers/gpu/drm/drm_simple_kms_helper.c
> +++ b/drivers/gpu/drm/drm_simple_kms_helper.c
> @@ -73,18 +73,8 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
>  static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
>                                         struct drm_plane_state *plane_state)
>  {
> -       struct drm_rect src = {
> -               .x1 = plane_state->src_x,
> -               .y1 = plane_state->src_y,
> -               .x2 = plane_state->src_x + plane_state->src_w,
> -               .y2 = plane_state->src_y + plane_state->src_h,
> -       };
> -       struct drm_rect dest = {
> -               .x1 = plane_state->crtc_x,
> -               .y1 = plane_state->crtc_y,
> -               .x2 = plane_state->crtc_x + plane_state->crtc_w,
> -               .y2 = plane_state->crtc_y + plane_state->crtc_h,
> -       };
> +       struct drm_rect src = drm_plane_state_src(plane_state);
> +       struct drm_rect dest = drm_plane_state_dest(plane_state);
>         struct drm_rect clip = { 0 };
>         struct drm_simple_display_pipe *pipe;
>         struct drm_crtc_state *crtc_state;
> diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
> index 7de7721..6682e9b 100644
> --- a/drivers/gpu/drm/i915/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
> @@ -139,14 +139,8 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
>          * we want to keep another copy internal to our driver that we can
>          * clip/modify ourselves.
>          */
> -       intel_state->src.x1 = state->src_x;
> -       intel_state->src.y1 = state->src_y;
> -       intel_state->src.x2 = state->src_x + state->src_w;
> -       intel_state->src.y2 = state->src_y + state->src_h;
> -       intel_state->dst.x1 = state->crtc_x;
> -       intel_state->dst.y1 = state->crtc_y;
> -       intel_state->dst.x2 = state->crtc_x + state->crtc_w;
> -       intel_state->dst.y2 = state->crtc_y + state->crtc_h;
> +       intel_state->src = drm_plane_state_src(state);
> +       intel_state->dst = drm_plane_state_dest(state);
>
>         /* Clip all planes to CRTC size, or 0x0 if CRTC is disabled */
>         intel_state->clip.x1 = 0;
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_plane.c b/drivers/gpu/drm/mediatek/mtk_drm_plane.c
> index 3995765..2749e74 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_plane.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_plane.c
> @@ -135,19 +135,8 @@ static int mtk_plane_atomic_check(struct drm_plane *plane,
>         struct drm_framebuffer *fb = state->fb;
>         struct drm_crtc_state *crtc_state;
>         bool visible;
> -       struct drm_rect dest = {
> -               .x1 = state->crtc_x,
> -               .y1 = state->crtc_y,
> -               .x2 = state->crtc_x + state->crtc_w,
> -               .y2 = state->crtc_y + state->crtc_h,
> -       };
> -       struct drm_rect src = {
> -               /* 16.16 fixed point */
> -               .x1 = state->src_x,
> -               .y1 = state->src_y,
> -               .x2 = state->src_x + state->src_w,
> -               .y2 = state->src_y + state->src_h,
> -       };
> +       struct drm_rect dest = drm_plane_state_dest(state);
> +       struct drm_rect src  = drm_plane_state_src(state);  /* 16.16 fixed point */
>         struct drm_rect clip = { 0, };
>
>         if (!fb)
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> index 6255e5b..31384ca 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> @@ -610,14 +610,8 @@ static int vop_plane_atomic_check(struct drm_plane *plane,
>         if (WARN_ON(!crtc_state))
>                 return -EINVAL;
>
> -       src->x1 = state->src_x;
> -       src->y1 = state->src_y;
> -       src->x2 = state->src_x + state->src_w;
> -       src->y2 = state->src_y + state->src_h;
> -       dest->x1 = state->crtc_x;
> -       dest->y1 = state->crtc_y;
> -       dest->x2 = state->crtc_x + state->crtc_w;
> -       dest->y2 = state->crtc_y + state->crtc_h;
> +       *src  = drm_plane_state_src(state);
> +       *dest = drm_plane_state_dest(state);
>
>         clip.x1 = 0;
>         clip.y1 = 0;
> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
> index b7d67cc..856fdf8 100644
> --- a/include/drm/drm_crtc.h
> +++ b/include/drm/drm_crtc.h
> @@ -36,6 +36,7 @@
>  #include <uapi/drm/drm_mode.h>
>  #include <uapi/drm/drm_fourcc.h>
>  #include <drm/drm_modeset_lock.h>
> +#include <drm/drm_rect.h>
>
>  struct drm_device;
>  struct drm_mode_set;
> @@ -1395,6 +1396,29 @@ struct drm_plane_state {
>         struct drm_atomic_state *state;
>  };
>
> +static inline struct drm_rect
> +drm_plane_state_src(const struct drm_plane_state *state)
> +{
> +       struct drm_rect src = {
> +               .x1 = state->src_x,
> +               .y1 = state->src_y,
> +               .x2 = state->src_x + state->src_w,
> +               .y2 = state->src_y + state->src_h,
> +       };
> +       return src;
> +}
> +
> +static inline struct drm_rect
> +drm_plane_state_dest(const struct drm_plane_state *state)
> +{
> +       struct drm_rect dest = {
> +               .x1 = state->crtc_x,
> +               .y1 = state->crtc_y,
> +               .x2 = state->crtc_x + state->crtc_w,
> +               .y2 = state->crtc_y + state->crtc_h,
> +       };
> +       return dest;
> +}
>
>  /**
>   * struct drm_plane_funcs - driver plane control functions
> --
> 2.7.4
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
index 0db36d2..9834fc5 100644
--- a/drivers/gpu/drm/drm_simple_kms_helper.c
+++ b/drivers/gpu/drm/drm_simple_kms_helper.c
@@ -73,18 +73,8 @@  static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
 static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
 					struct drm_plane_state *plane_state)
 {
-	struct drm_rect src = {
-		.x1 = plane_state->src_x,
-		.y1 = plane_state->src_y,
-		.x2 = plane_state->src_x + plane_state->src_w,
-		.y2 = plane_state->src_y + plane_state->src_h,
-	};
-	struct drm_rect dest = {
-		.x1 = plane_state->crtc_x,
-		.y1 = plane_state->crtc_y,
-		.x2 = plane_state->crtc_x + plane_state->crtc_w,
-		.y2 = plane_state->crtc_y + plane_state->crtc_h,
-	};
+	struct drm_rect src = drm_plane_state_src(plane_state);
+	struct drm_rect dest = drm_plane_state_dest(plane_state);
 	struct drm_rect clip = { 0 };
 	struct drm_simple_display_pipe *pipe;
 	struct drm_crtc_state *crtc_state;
diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
index 7de7721..6682e9b 100644
--- a/drivers/gpu/drm/i915/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
@@ -139,14 +139,8 @@  static int intel_plane_atomic_check(struct drm_plane *plane,
 	 * we want to keep another copy internal to our driver that we can
 	 * clip/modify ourselves.
 	 */
-	intel_state->src.x1 = state->src_x;
-	intel_state->src.y1 = state->src_y;
-	intel_state->src.x2 = state->src_x + state->src_w;
-	intel_state->src.y2 = state->src_y + state->src_h;
-	intel_state->dst.x1 = state->crtc_x;
-	intel_state->dst.y1 = state->crtc_y;
-	intel_state->dst.x2 = state->crtc_x + state->crtc_w;
-	intel_state->dst.y2 = state->crtc_y + state->crtc_h;
+	intel_state->src = drm_plane_state_src(state);
+	intel_state->dst = drm_plane_state_dest(state);
 
 	/* Clip all planes to CRTC size, or 0x0 if CRTC is disabled */
 	intel_state->clip.x1 = 0;
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_plane.c b/drivers/gpu/drm/mediatek/mtk_drm_plane.c
index 3995765..2749e74 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_plane.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_plane.c
@@ -135,19 +135,8 @@  static int mtk_plane_atomic_check(struct drm_plane *plane,
 	struct drm_framebuffer *fb = state->fb;
 	struct drm_crtc_state *crtc_state;
 	bool visible;
-	struct drm_rect dest = {
-		.x1 = state->crtc_x,
-		.y1 = state->crtc_y,
-		.x2 = state->crtc_x + state->crtc_w,
-		.y2 = state->crtc_y + state->crtc_h,
-	};
-	struct drm_rect src = {
-		/* 16.16 fixed point */
-		.x1 = state->src_x,
-		.y1 = state->src_y,
-		.x2 = state->src_x + state->src_w,
-		.y2 = state->src_y + state->src_h,
-	};
+	struct drm_rect dest = drm_plane_state_dest(state);
+	struct drm_rect src  = drm_plane_state_src(state);  /* 16.16 fixed point */
 	struct drm_rect clip = { 0, };
 
 	if (!fb)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index 6255e5b..31384ca 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -610,14 +610,8 @@  static int vop_plane_atomic_check(struct drm_plane *plane,
 	if (WARN_ON(!crtc_state))
 		return -EINVAL;
 
-	src->x1 = state->src_x;
-	src->y1 = state->src_y;
-	src->x2 = state->src_x + state->src_w;
-	src->y2 = state->src_y + state->src_h;
-	dest->x1 = state->crtc_x;
-	dest->y1 = state->crtc_y;
-	dest->x2 = state->crtc_x + state->crtc_w;
-	dest->y2 = state->crtc_y + state->crtc_h;
+	*src  = drm_plane_state_src(state);
+	*dest = drm_plane_state_dest(state);
 
 	clip.x1 = 0;
 	clip.y1 = 0;
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index b7d67cc..856fdf8 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -36,6 +36,7 @@ 
 #include <uapi/drm/drm_mode.h>
 #include <uapi/drm/drm_fourcc.h>
 #include <drm/drm_modeset_lock.h>
+#include <drm/drm_rect.h>
 
 struct drm_device;
 struct drm_mode_set;
@@ -1395,6 +1396,29 @@  struct drm_plane_state {
 	struct drm_atomic_state *state;
 };
 
+static inline struct drm_rect
+drm_plane_state_src(const struct drm_plane_state *state)
+{
+	struct drm_rect src = {
+		.x1 = state->src_x,
+		.y1 = state->src_y,
+		.x2 = state->src_x + state->src_w,
+		.y2 = state->src_y + state->src_h,
+	};
+	return src;
+}
+
+static inline struct drm_rect
+drm_plane_state_dest(const struct drm_plane_state *state)
+{
+	struct drm_rect dest = {
+		.x1 = state->crtc_x,
+		.y1 = state->crtc_y,
+		.x2 = state->crtc_x + state->crtc_w,
+		.y2 = state->crtc_y + state->crtc_h,
+	};
+	return dest;
+}
 
 /**
  * struct drm_plane_funcs - driver plane control functions