diff mbox series

[11/12] drm/i915: Relocate some other plane fb related stuff into intel_fb.c

Message ID 20250213150220.13580-12-ville.syrjala@linux.intel.com (mailing list archive)
State New
Headers show
Series drm/i915: Hoist some stuff out from intel_display.c | expand

Commit Message

Ville Syrjälä Feb. 13, 2025, 3:02 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Move intel_fb_xy_to_linear() and intel_add_fb_offsets()
These are technially sitting somewhere between plane vs. fb code,
but we do have a bunch of code like that in intel_fb.c anyway.
Might need to think about splitting intel_fb.c into pure fb vs.
plane->fb related stuff somehow, but dunno if that's even feasible.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 31 --------------------
 drivers/gpu/drm/i915/display/intel_display.h |  5 ----
 drivers/gpu/drm/i915/display/intel_fb.c      | 30 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_fb.h      |  6 ++++
 4 files changed, 36 insertions(+), 36 deletions(-)

Comments

Jani Nikula Feb. 13, 2025, 7:22 p.m. UTC | #1
On Thu, 13 Feb 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Move intel_fb_xy_to_linear() and intel_add_fb_offsets()
> These are technially sitting somewhere between plane vs. fb code,
> but we do have a bunch of code like that in intel_fb.c anyway.
> Might need to think about splitting intel_fb.c into pure fb vs.
> plane->fb related stuff somehow, but dunno if that's even feasible.

Again, better than intel_display.c.

Reviewed-by: Jani Nikula <jani.nikula@intel.com>


>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 31 --------------------
>  drivers/gpu/drm/i915/display/intel_display.h |  5 ----
>  drivers/gpu/drm/i915/display/intel_fb.c      | 30 +++++++++++++++++++
>  drivers/gpu/drm/i915/display/intel_fb.h      |  6 ++++
>  4 files changed, 36 insertions(+), 36 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index c38c37afc154..c58b245ce935 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -601,37 +601,6 @@ void intel_disable_transcoder(const struct intel_crtc_state *old_crtc_state)
>  		intel_wait_for_pipe_off(old_crtc_state);
>  }
>  
> -/*
> - * Convert the x/y offsets into a linear offset.
> - * Only valid with 0/180 degree rotation, which is fine since linear
> - * offset is only used with linear buffers on pre-hsw and tiled buffers
> - * with gen2/3, and 90/270 degree rotations isn't supported on any of them.
> - */
> -u32 intel_fb_xy_to_linear(int x, int y,
> -			  const struct intel_plane_state *state,
> -			  int color_plane)
> -{
> -	const struct drm_framebuffer *fb = state->hw.fb;
> -	unsigned int cpp = fb->format->cpp[color_plane];
> -	unsigned int pitch = state->view.color_plane[color_plane].mapping_stride;
> -
> -	return y * pitch + x * cpp;
> -}
> -
> -/*
> - * Add the x/y offsets derived from fb->offsets[] to the user
> - * specified plane src x/y offsets. The resulting x/y offsets
> - * specify the start of scanout from the beginning of the gtt mapping.
> - */
> -void intel_add_fb_offsets(int *x, int *y,
> -			  const struct intel_plane_state *state,
> -			  int color_plane)
> -
> -{
> -	*x += state->view.color_plane[color_plane].x;
> -	*y += state->view.color_plane[color_plane].y;
> -}
> -
>  u32 intel_plane_fb_max_stride(struct drm_device *drm,
>  			      u32 pixel_format, u64 modifier)
>  {
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
> index a7bd82662adf..ffbec2c4aabc 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -460,11 +460,6 @@ int vlv_get_cck_clock(struct drm_i915_private *dev_priv,
>  int vlv_get_cck_clock_hpll(struct drm_i915_private *dev_priv,
>  			   const char *name, u32 reg);
>  void intel_init_display_hooks(struct drm_i915_private *dev_priv);
> -unsigned int intel_fb_xy_to_linear(int x, int y,
> -				   const struct intel_plane_state *state,
> -				   int plane);
> -void intel_add_fb_offsets(int *x, int *y,
> -			  const struct intel_plane_state *state, int plane);
>  bool intel_has_pending_fb_unpin(struct drm_i915_private *dev_priv);
>  void intel_encoder_destroy(struct drm_encoder *encoder);
>  struct drm_display_mode *
> diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
> index c1923b4c13d6..399babb57030 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb.c
> +++ b/drivers/gpu/drm/i915/display/intel_fb.c
> @@ -1937,6 +1937,36 @@ void intel_fb_fill_view(const struct intel_framebuffer *fb, unsigned int rotatio
>  	else
>  		*view = fb->normal_view;
>  }
> +/*
> + * Convert the x/y offsets into a linear offset.
> + * Only valid with 0/180 degree rotation, which is fine since linear
> + * offset is only used with linear buffers on pre-hsw and tiled buffers
> + * with gen2/3, and 90/270 degree rotations isn't supported on any of them.
> + */
> +u32 intel_fb_xy_to_linear(int x, int y,
> +			  const struct intel_plane_state *state,
> +			  int color_plane)
> +{
> +	const struct drm_framebuffer *fb = state->hw.fb;
> +	unsigned int cpp = fb->format->cpp[color_plane];
> +	unsigned int pitch = state->view.color_plane[color_plane].mapping_stride;
> +
> +	return y * pitch + x * cpp;
> +}
> +
> +/*
> + * Add the x/y offsets derived from fb->offsets[] to the user
> + * specified plane src x/y offsets. The resulting x/y offsets
> + * specify the start of scanout from the beginning of the gtt mapping.
> + */
> +void intel_add_fb_offsets(int *x, int *y,
> +			  const struct intel_plane_state *state,
> +			  int color_plane)
> +
> +{
> +	*x += state->view.color_plane[color_plane].x;
> +	*y += state->view.color_plane[color_plane].y;
> +}
>  
>  static
>  u32 intel_fb_max_stride(struct intel_display *display,
> diff --git a/drivers/gpu/drm/i915/display/intel_fb.h b/drivers/gpu/drm/i915/display/intel_fb.h
> index d04d9274bb71..46286a40e10e 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb.h
> +++ b/drivers/gpu/drm/i915/display/intel_fb.h
> @@ -93,6 +93,12 @@ unsigned int intel_fb_view_vtd_guard(const struct drm_framebuffer *fb,
>  				     unsigned int rotation);
>  int intel_plane_compute_gtt(struct intel_plane_state *plane_state);
>  
> +unsigned int intel_fb_xy_to_linear(int x, int y,
> +				   const struct intel_plane_state *state,
> +				   int plane);
> +void intel_add_fb_offsets(int *x, int *y,
> +			  const struct intel_plane_state *state, int plane);
> +
>  int intel_framebuffer_init(struct intel_framebuffer *ifb,
>  			   struct drm_gem_object *obj,
>  			   struct drm_mode_fb_cmd2 *mode_cmd);
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index c38c37afc154..c58b245ce935 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -601,37 +601,6 @@  void intel_disable_transcoder(const struct intel_crtc_state *old_crtc_state)
 		intel_wait_for_pipe_off(old_crtc_state);
 }
 
-/*
- * Convert the x/y offsets into a linear offset.
- * Only valid with 0/180 degree rotation, which is fine since linear
- * offset is only used with linear buffers on pre-hsw and tiled buffers
- * with gen2/3, and 90/270 degree rotations isn't supported on any of them.
- */
-u32 intel_fb_xy_to_linear(int x, int y,
-			  const struct intel_plane_state *state,
-			  int color_plane)
-{
-	const struct drm_framebuffer *fb = state->hw.fb;
-	unsigned int cpp = fb->format->cpp[color_plane];
-	unsigned int pitch = state->view.color_plane[color_plane].mapping_stride;
-
-	return y * pitch + x * cpp;
-}
-
-/*
- * Add the x/y offsets derived from fb->offsets[] to the user
- * specified plane src x/y offsets. The resulting x/y offsets
- * specify the start of scanout from the beginning of the gtt mapping.
- */
-void intel_add_fb_offsets(int *x, int *y,
-			  const struct intel_plane_state *state,
-			  int color_plane)
-
-{
-	*x += state->view.color_plane[color_plane].x;
-	*y += state->view.color_plane[color_plane].y;
-}
-
 u32 intel_plane_fb_max_stride(struct drm_device *drm,
 			      u32 pixel_format, u64 modifier)
 {
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index a7bd82662adf..ffbec2c4aabc 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -460,11 +460,6 @@  int vlv_get_cck_clock(struct drm_i915_private *dev_priv,
 int vlv_get_cck_clock_hpll(struct drm_i915_private *dev_priv,
 			   const char *name, u32 reg);
 void intel_init_display_hooks(struct drm_i915_private *dev_priv);
-unsigned int intel_fb_xy_to_linear(int x, int y,
-				   const struct intel_plane_state *state,
-				   int plane);
-void intel_add_fb_offsets(int *x, int *y,
-			  const struct intel_plane_state *state, int plane);
 bool intel_has_pending_fb_unpin(struct drm_i915_private *dev_priv);
 void intel_encoder_destroy(struct drm_encoder *encoder);
 struct drm_display_mode *
diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index c1923b4c13d6..399babb57030 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -1937,6 +1937,36 @@  void intel_fb_fill_view(const struct intel_framebuffer *fb, unsigned int rotatio
 	else
 		*view = fb->normal_view;
 }
+/*
+ * Convert the x/y offsets into a linear offset.
+ * Only valid with 0/180 degree rotation, which is fine since linear
+ * offset is only used with linear buffers on pre-hsw and tiled buffers
+ * with gen2/3, and 90/270 degree rotations isn't supported on any of them.
+ */
+u32 intel_fb_xy_to_linear(int x, int y,
+			  const struct intel_plane_state *state,
+			  int color_plane)
+{
+	const struct drm_framebuffer *fb = state->hw.fb;
+	unsigned int cpp = fb->format->cpp[color_plane];
+	unsigned int pitch = state->view.color_plane[color_plane].mapping_stride;
+
+	return y * pitch + x * cpp;
+}
+
+/*
+ * Add the x/y offsets derived from fb->offsets[] to the user
+ * specified plane src x/y offsets. The resulting x/y offsets
+ * specify the start of scanout from the beginning of the gtt mapping.
+ */
+void intel_add_fb_offsets(int *x, int *y,
+			  const struct intel_plane_state *state,
+			  int color_plane)
+
+{
+	*x += state->view.color_plane[color_plane].x;
+	*y += state->view.color_plane[color_plane].y;
+}
 
 static
 u32 intel_fb_max_stride(struct intel_display *display,
diff --git a/drivers/gpu/drm/i915/display/intel_fb.h b/drivers/gpu/drm/i915/display/intel_fb.h
index d04d9274bb71..46286a40e10e 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.h
+++ b/drivers/gpu/drm/i915/display/intel_fb.h
@@ -93,6 +93,12 @@  unsigned int intel_fb_view_vtd_guard(const struct drm_framebuffer *fb,
 				     unsigned int rotation);
 int intel_plane_compute_gtt(struct intel_plane_state *plane_state);
 
+unsigned int intel_fb_xy_to_linear(int x, int y,
+				   const struct intel_plane_state *state,
+				   int plane);
+void intel_add_fb_offsets(int *x, int *y,
+			  const struct intel_plane_state *state, int plane);
+
 int intel_framebuffer_init(struct intel_framebuffer *ifb,
 			   struct drm_gem_object *obj,
 			   struct drm_mode_fb_cmd2 *mode_cmd);