Hi,
On Thu 16 May 19, 12:31, Maxime Ripard wrote:
> 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.
Same comment about plane being int instead of unsigned int, but I think we
can fix that later.
Another thing that I find odd is that the division by vsub/hsub is not
rounded up, but again, it's something independent from your patch.
Reviewed-by: Paul Kocialkowski
Cheers,
Paul
> Reviewed-by: Emil Velikov
> Signed-off-by: Maxime Ripard
> ---
> drivers/gpu/drm/drm_fourcc.c | 48 +
> drivers/gpu/drm/meson/meson_overlay.c | 12 +++
> include/drm/drm_fourcc.h | 46 +--
> 3 files changed, 50 insertions(+), 56 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
> index 5f63fc74e265..35b459d186c5 100644
> --- a/drivers/gpu/drm/drm_fourcc.c
> +++ b/drivers/gpu/drm/drm_fourcc.c
> @@ -333,54 +333,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
> * @plane: plane index
> diff --git a/drivers/gpu/drm/meson/meson_overlay.c
> b/drivers/gpu/drm/meson/meson_overlay.c
> index fb8515b2860c..55b3f2f2e608 100644
> --- a/drivers/gpu/drm/meson/meson_overlay.c
> +++ b/drivers/gpu/drm/meson/meson_overlay.c
> @@ -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