]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915: Relocate some other plane fb related stuff into intel_fb.c
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 13 Feb 2025 15:02:19 +0000 (17:02 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Sat, 15 Feb 2025 19:04:06 +0000 (21:04 +0200)
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>
Link: https://patchwork.freedesktop.org/patch/msgid/20250213150220.13580-12-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_display.c
drivers/gpu/drm/i915/display/intel_display.h
drivers/gpu/drm/i915/display/intel_fb.c
drivers/gpu/drm/i915/display/intel_fb.h

index 759f05a08e626135d78fb05456a74cb98ba021f9..ab33792c98402133d939e1b3c8cd7d9c45877241 100644 (file)
@@ -600,37 +600,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)
 {
index bd3b38632ef9db86dd7ccf07dd0dd351149efe41..e58daefc978e3bdd805f3a9a962679a501dc5866 100644 (file)
@@ -458,11 +458,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 *
index c1923b4c13d66780343ff5fed03826d7e34df8e1..b62dbb879fc295bfd9aa8c4d97729e9106956ac3 100644 (file)
@@ -1938,6 +1938,37 @@ void intel_fb_fill_view(const struct intel_framebuffer *fb, unsigned int rotatio
                *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,
                        u32 pixel_format, u64 modifier)
index d04d9274bb712e74feff7ec85cd3736e6302e3e2..46286a40e10efc50f2ec57787873c7e9f105918d 100644 (file)
@@ -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);