]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm/fourcc: Pass the format_info pointer to drm_format_plane_width/height
authorMaxime Ripard <maxime.ripard@bootlin.com>
Thu, 16 May 2019 10:31:50 +0000 (12:31 +0200)
committerMaxime Ripard <maxime.ripard@bootlin.com>
Mon, 20 May 2019 11:35:24 +0000 (13:35 +0200)
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.

In order to be extra consistent, also rename that function to
drm_format_info_plane_cpp and to a static function in the header to match
the current policy. The parameters order have also be changed to match the
other functions prototype.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/514af1d489d80b8b1767e3716b663ce5103da6eb.1558002671.git-series.maxime.ripard@bootlin.com
drivers/gpu/drm/drm_fourcc.c
drivers/gpu/drm/meson/meson_overlay.c
include/drm/drm_fourcc.h

index 5f63fc74e2659136565a32b5f9acabaa2da36fe8..35b459d186c54e887447153a7491916ab2968c5e 100644 (file)
@@ -332,54 +332,6 @@ drm_get_format_info(struct drm_device *dev,
 }
 EXPORT_SYMBOL(drm_get_format_info);
 
-/**
- * drm_format_plane_width - width of the plane given the first plane
- * @width: width of the first plane
- * @format: pixel format
- * @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)
-{
-       const struct drm_format_info *info;
-
-       info = drm_format_info(format);
-       if (!info || plane >= info->num_planes)
-               return 0;
-
-       if (plane == 0)
-               return width;
-
-       return width / info->hsub;
-}
-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
- * @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)
-{
-       const struct drm_format_info *info;
-
-       info = drm_format_info(format);
-       if (!info || plane >= info->num_planes)
-               return 0;
-
-       if (plane == 0)
-               return height;
-
-       return height / info->vsub;
-}
-EXPORT_SYMBOL(drm_format_plane_height);
-
 /**
  * drm_format_info_block_width - width in pixels of block.
  * @info: pixel format info
index fb8515b2860ccd6555709b14cb7f704b469e72b9..55b3f2f2e608184129708fcf054a79341732e2ee 100644 (file)
@@ -466,8 +466,8 @@ static void meson_overlay_atomic_update(struct drm_plane *plane,
                priv->viu.vd1_addr2 = gem->paddr + fb->offsets[2];
                priv->viu.vd1_stride2 = fb->pitches[2];
                priv->viu.vd1_height2 =
-                       drm_format_plane_height(fb->height,
-                                               fb->format->format, 2);
+                       drm_format_info_plane_height(fb->format,
+                                               fb->height, 2);
                DRM_DEBUG("plane 2 addr 0x%x stride %d height %d\n",
                         priv->viu.vd1_addr2,
                         priv->viu.vd1_stride2,
@@ -478,8 +478,8 @@ static void meson_overlay_atomic_update(struct drm_plane *plane,
                priv->viu.vd1_addr1 = gem->paddr + fb->offsets[1];
                priv->viu.vd1_stride1 = fb->pitches[1];
                priv->viu.vd1_height1 =
-                       drm_format_plane_height(fb->height,
-                                               fb->format->format, 1);
+                       drm_format_info_plane_height(fb->format,
+                                               fb->height, 1);
                DRM_DEBUG("plane 1 addr 0x%x stride %d height %d\n",
                         priv->viu.vd1_addr1,
                         priv->viu.vd1_stride1,
@@ -490,8 +490,8 @@ static void meson_overlay_atomic_update(struct drm_plane *plane,
                priv->viu.vd1_addr0 = gem->paddr + fb->offsets[0];
                priv->viu.vd1_stride0 = fb->pitches[0];
                priv->viu.vd1_height0 =
-                       drm_format_plane_height(fb->height,
-                                               fb->format->format, 0);
+                       drm_format_info_plane_height(fb->format,
+                                               fb->height, 0);
                DRM_DEBUG("plane 0 addr 0x%x stride %d height %d\n",
                         priv->viu.vd1_addr0,
                         priv->viu.vd1_stride0,
index 6b5a82b31bc46adb3964323329c6d73abfb5514c..4ef8ccb5d23607f4899c0ff40976c13f8bbac8f5 100644 (file)
@@ -277,6 +277,50 @@ int drm_format_info_plane_cpp(const struct drm_format_info *info, int plane)
        return info->cpp[plane];
 }
 
+/**
+ * drm_format_info_plane_width - width of the plane given the first plane
+ * @format: pixel format info
+ * @width: width of the first plane
+ * @plane: plane index
+ *
+ * Returns:
+ * The width of @plane, given that the width of the first plane is @width.
+ */
+static inline
+int drm_format_info_plane_width(const struct drm_format_info *info, int width,
+                               int plane)
+{
+       if (!info || plane >= info->num_planes)
+               return 0;
+
+       if (plane == 0)
+               return width;
+
+       return width / info->hsub;
+}
+
+/**
+ * drm_format_info_plane_height - height of the plane given the first plane
+ * @format: pixel format info
+ * @height: height of the first plane
+ * @plane: plane index
+ *
+ * Returns:
+ * The height of @plane, given that the height of the first plane is @height.
+ */
+static inline
+int drm_format_info_plane_height(const struct drm_format_info *info, int height,
+                                int plane)
+{
+       if (!info || plane >= info->num_planes)
+               return 0;
+
+       if (plane == 0)
+               return height;
+
+       return height / info->vsub;
+}
+
 const struct drm_format_info *__drm_format_info(u32 format);
 const struct drm_format_info *drm_format_info(u32 format);
 const struct drm_format_info *
@@ -285,8 +329,6 @@ drm_get_format_info(struct drm_device *dev,
 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_width(int width, uint32_t format, int plane);
-int drm_format_plane_height(int height, uint32_t format, 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,