diff mbox series

[RFC,04/20] drm/fourcc: Pass the format_info pointer to drm_format_plane_width/height

Message ID ec00e0a01a09e1711fda190cfcb2ed6a0fbca6eb.1553032382.git-series.maxime.ripard@bootlin.com (mailing list archive)
State New, archived
Headers show
Series drm: Split out the formats API and move it to a common place | expand

Commit Message

Maxime Ripard March 19, 2019, 9:57 p.m. UTC
So far, the drm_format_plane_height/width functions were operating on the
format's fourcc and was doing a lookup to retrieve the drm_format_info
structure and return the cpp.

However, this is inefficient since in most cases, we will have the
drm_format_info pointer already available so we shouldn't have to perform a
new lookup. Some drm_fourcc functions also already operate on the
drm_format_info pointer for that reason, so the API is quite inconsistent
there.

Let's follow the latter pattern and remove the extra lookup while being a
bit more consistent.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
---
 drivers/gpu/drm/drm_fourcc.c          | 16 ++++++----------
 drivers/gpu/drm/meson/meson_overlay.c |  6 +++---
 include/drm/drm_fourcc.h              |  6 ++++--
 3 files changed, 13 insertions(+), 15 deletions(-)

Comments

Paul Kocialkowski March 20, 2019, 2:26 p.m. UTC | #1
Hi,

Le mardi 19 mars 2019 à 22:57 +0100, Maxime Ripard a écrit :
> So far, the drm_format_plane_height/width functions were operating on the
> format's fourcc and was doing a lookup to retrieve the drm_format_info
> structure and return the cpp.
> 
> However, this is inefficient since in most cases, we will have the
> drm_format_info pointer already available so we shouldn't have to perform a
> new lookup. Some drm_fourcc functions also already operate on the
> drm_format_info pointer for that reason, so the API is quite inconsistent
> there.

Same comment as for the previous patch, I think having a
drm_format_info prefix and switching to an inline helper would make
good sense.

Cheers,

Paul

> Let's follow the latter pattern and remove the extra lookup while being a
> bit more consistent.
> 
> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
> ---
>  drivers/gpu/drm/drm_fourcc.c          | 16 ++++++----------
>  drivers/gpu/drm/meson/meson_overlay.c |  6 +++---
>  include/drm/drm_fourcc.h              |  6 ++++--
>  3 files changed, 13 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
> index d8ada4cb689e..57389b9753b2 100644
> --- a/drivers/gpu/drm/drm_fourcc.c
> +++ b/drivers/gpu/drm/drm_fourcc.c
> @@ -325,17 +325,15 @@ EXPORT_SYMBOL(drm_format_plane_cpp);
>  /**
>   * drm_format_plane_width - width of the plane given the first plane
>   * @width: width of the first plane
> - * @format: pixel format
> + * @format: pixel format info
>   * @plane: plane index
>   *
>   * Returns:
>   * The width of @plane, given that the width of the first plane is @width.
>   */
> -int drm_format_plane_width(int width, uint32_t format, int plane)
> +int drm_format_plane_width(int width, const struct drm_format_info *info,
> +			   int plane)
>  {
> -	const struct drm_format_info *info;
> -
> -	info = drm_format_info(format);
>  	if (!info || plane >= info->num_planes)
>  		return 0;
>  
> @@ -349,17 +347,15 @@ EXPORT_SYMBOL(drm_format_plane_width);
>  /**
>   * drm_format_plane_height - height of the plane given the first plane
>   * @height: height of the first plane
> - * @format: pixel format
> + * @format: pixel format info
>   * @plane: plane index
>   *
>   * Returns:
>   * The height of @plane, given that the height of the first plane is @height.
>   */
> -int drm_format_plane_height(int height, uint32_t format, int plane)
> +int drm_format_plane_height(int height, const struct drm_format_info *info,
> +			    int plane)
>  {
> -	const struct drm_format_info *info;
> -
> -	info = drm_format_info(format);
>  	if (!info || plane >= info->num_planes)
>  		return 0;
>  
> diff --git a/drivers/gpu/drm/meson/meson_overlay.c b/drivers/gpu/drm/meson/meson_overlay.c
> index 8ff15d01a8f9..6987c15b6ab9 100644
> --- a/drivers/gpu/drm/meson/meson_overlay.c
> +++ b/drivers/gpu/drm/meson/meson_overlay.c
> @@ -475,7 +475,7 @@ static void meson_overlay_atomic_update(struct drm_plane *plane,
>  		priv->viu.vd1_stride2 = fb->pitches[2];
>  		priv->viu.vd1_height2 =
>  			drm_format_plane_height(fb->height,
> -						fb->format->format, 2);
> +						fb->format, 2);
>  		DRM_DEBUG("plane 2 addr 0x%x stride %d height %d\n",
>  			 priv->viu.vd1_addr2,
>  			 priv->viu.vd1_stride2,
> @@ -487,7 +487,7 @@ static void meson_overlay_atomic_update(struct drm_plane *plane,
>  		priv->viu.vd1_stride1 = fb->pitches[1];
>  		priv->viu.vd1_height1 =
>  			drm_format_plane_height(fb->height,
> -						fb->format->format, 1);
> +						fb->format, 1);
>  		DRM_DEBUG("plane 1 addr 0x%x stride %d height %d\n",
>  			 priv->viu.vd1_addr1,
>  			 priv->viu.vd1_stride1,
> @@ -499,7 +499,7 @@ static void meson_overlay_atomic_update(struct drm_plane *plane,
>  		priv->viu.vd1_stride0 = fb->pitches[0];
>  		priv->viu.vd1_height0 =
>  			drm_format_plane_height(fb->height,
> -						fb->format->format, 0);
> +						fb->format, 0);
>  		DRM_DEBUG("plane 0 addr 0x%x stride %d height %d\n",
>  			 priv->viu.vd1_addr0,
>  			 priv->viu.vd1_stride0,
> diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h
> index 97a58f3e7462..2291f2618211 100644
> --- a/include/drm/drm_fourcc.h
> +++ b/include/drm/drm_fourcc.h
> @@ -269,8 +269,10 @@ uint32_t drm_mode_legacy_fb_format(uint32_t bpp, uint32_t depth);
>  uint32_t drm_driver_legacy_fb_format(struct drm_device *dev,
>  				     uint32_t bpp, uint32_t depth);
>  int drm_format_plane_cpp(const struct drm_format_info *info, int plane);
> -int drm_format_plane_width(int width, uint32_t format, int plane);
> -int drm_format_plane_height(int height, uint32_t format, int plane);
> +int drm_format_plane_width(int width, const struct drm_format_info *info,
> +			   int plane);
> +int drm_format_plane_height(int height, const struct drm_format_info *info,
> +			    int plane);
>  unsigned int drm_format_info_block_width(const struct drm_format_info *info,
>  					 int plane);
>  unsigned int drm_format_info_block_height(const struct drm_format_info *info,
diff mbox series

Patch

diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
index d8ada4cb689e..57389b9753b2 100644
--- a/drivers/gpu/drm/drm_fourcc.c
+++ b/drivers/gpu/drm/drm_fourcc.c
@@ -325,17 +325,15 @@  EXPORT_SYMBOL(drm_format_plane_cpp);
 /**
  * drm_format_plane_width - width of the plane given the first plane
  * @width: width of the first plane
- * @format: pixel format
+ * @format: pixel format info
  * @plane: plane index
  *
  * Returns:
  * The width of @plane, given that the width of the first plane is @width.
  */
-int drm_format_plane_width(int width, uint32_t format, int plane)
+int drm_format_plane_width(int width, const struct drm_format_info *info,
+			   int plane)
 {
-	const struct drm_format_info *info;
-
-	info = drm_format_info(format);
 	if (!info || plane >= info->num_planes)
 		return 0;
 
@@ -349,17 +347,15 @@  EXPORT_SYMBOL(drm_format_plane_width);
 /**
  * drm_format_plane_height - height of the plane given the first plane
  * @height: height of the first plane
- * @format: pixel format
+ * @format: pixel format info
  * @plane: plane index
  *
  * Returns:
  * The height of @plane, given that the height of the first plane is @height.
  */
-int drm_format_plane_height(int height, uint32_t format, int plane)
+int drm_format_plane_height(int height, const struct drm_format_info *info,
+			    int plane)
 {
-	const struct drm_format_info *info;
-
-	info = drm_format_info(format);
 	if (!info || plane >= info->num_planes)
 		return 0;
 
diff --git a/drivers/gpu/drm/meson/meson_overlay.c b/drivers/gpu/drm/meson/meson_overlay.c
index 8ff15d01a8f9..6987c15b6ab9 100644
--- a/drivers/gpu/drm/meson/meson_overlay.c
+++ b/drivers/gpu/drm/meson/meson_overlay.c
@@ -475,7 +475,7 @@  static void meson_overlay_atomic_update(struct drm_plane *plane,
 		priv->viu.vd1_stride2 = fb->pitches[2];
 		priv->viu.vd1_height2 =
 			drm_format_plane_height(fb->height,
-						fb->format->format, 2);
+						fb->format, 2);
 		DRM_DEBUG("plane 2 addr 0x%x stride %d height %d\n",
 			 priv->viu.vd1_addr2,
 			 priv->viu.vd1_stride2,
@@ -487,7 +487,7 @@  static void meson_overlay_atomic_update(struct drm_plane *plane,
 		priv->viu.vd1_stride1 = fb->pitches[1];
 		priv->viu.vd1_height1 =
 			drm_format_plane_height(fb->height,
-						fb->format->format, 1);
+						fb->format, 1);
 		DRM_DEBUG("plane 1 addr 0x%x stride %d height %d\n",
 			 priv->viu.vd1_addr1,
 			 priv->viu.vd1_stride1,
@@ -499,7 +499,7 @@  static void meson_overlay_atomic_update(struct drm_plane *plane,
 		priv->viu.vd1_stride0 = fb->pitches[0];
 		priv->viu.vd1_height0 =
 			drm_format_plane_height(fb->height,
-						fb->format->format, 0);
+						fb->format, 0);
 		DRM_DEBUG("plane 0 addr 0x%x stride %d height %d\n",
 			 priv->viu.vd1_addr0,
 			 priv->viu.vd1_stride0,
diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h
index 97a58f3e7462..2291f2618211 100644
--- a/include/drm/drm_fourcc.h
+++ b/include/drm/drm_fourcc.h
@@ -269,8 +269,10 @@  uint32_t drm_mode_legacy_fb_format(uint32_t bpp, uint32_t depth);
 uint32_t drm_driver_legacy_fb_format(struct drm_device *dev,
 				     uint32_t bpp, uint32_t depth);
 int drm_format_plane_cpp(const struct drm_format_info *info, int plane);
-int drm_format_plane_width(int width, uint32_t format, int plane);
-int drm_format_plane_height(int height, uint32_t format, int plane);
+int drm_format_plane_width(int width, const struct drm_format_info *info,
+			   int plane);
+int drm_format_plane_height(int height, const struct drm_format_info *info,
+			    int plane);
 unsigned int drm_format_info_block_width(const struct drm_format_info *info,
 					 int plane);
 unsigned int drm_format_info_block_height(const struct drm_format_info *info,