Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp74057yba; Mon, 20 May 2019 05:15:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqw67QmGl0jxLNx5uyyz1px4F+RQZaiHk/vz2hqkmtlfwhCq+gYcwKhI9eNIcbguHATb2vb/ X-Received: by 2002:a17:902:e708:: with SMTP id co8mr74274432plb.141.1558354523585; Mon, 20 May 2019 05:15:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558354523; cv=none; d=google.com; s=arc-20160816; b=gM1pegiqowTFh/RWQy/hdWux0NwxSkYYgewzmtytQpAlxyiGNcexCX8izkx76Jnpwv UhZAUJc+VwnhfqcN0Io8NzmDhXTgUb00xB4I114K0C/ttQn0eN+XAdffJSq7Y41CPdOg N9PTFkhyaxaoHloy+n2Fbfxxk2sjVjRZ0peBF7At/zAKzXDzhor+sw7vygYVsCEiGlcB OkahlT1DUnFvhKNQS6z8xFjak7LDGqDjeKccChaQaqKia4Dzq6VPpLyE7kjIVvV2lA63 Lk0gwZ/f7KlQ46IotsmeTVy8EzfJq/WAVRFAuFi/VlLJgv0bFkvM64tZ3djVH47VJgpK W70A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=7ufOtktOp0+jAxCiX5LOpAx1Mub4elFZn9tPy4KKyxo=; b=LCnldVbFpdRkkz0v6lOMa/6xZuFCmwl+o50AjjCuWUpEcpyInzWXCU7hbcPjHU9KKF oskvDlgiiCfrcL12n9EilT6ZjY8TU27X0spjLRzCnLqC32dqBQVQS6JeR+E2jxnN8vAJ hG0c/Qkh9E8PdbPls1kbLFWUvw8bE1Zh4VZXUE48ULozZN2aYE8IXUgV+91AaXHClw80 sDLWh0qWyvt009i2J2Ki/pR944HY2jYrJVPZaCd8lsuiNpWJglXMbn/xtoLrK2cbZ610 IgVvhgrzTtGHrlOl35y7q6dg+orqzqMBcFk54kSf7zVArr113MZr5B5NS9H8gfvlofPW /svg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y10si19415128pfl.130.2019.05.20.05.15.06; Mon, 20 May 2019 05:15:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732991AbfETLdH (ORCPT + 99 others); Mon, 20 May 2019 07:33:07 -0400 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:37373 "EHLO relay8-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732957AbfETLdG (ORCPT ); Mon, 20 May 2019 07:33:06 -0400 X-Originating-IP: 90.88.22.185 Received: from aptenodytes (aaubervilliers-681-1-80-185.w90-88.abo.wanadoo.fr [90.88.22.185]) (Authenticated sender: paul.kocialkowski@bootlin.com) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 7FDA81BF20D; Mon, 20 May 2019 11:32:59 +0000 (UTC) Date: Mon, 20 May 2019 13:32:59 +0200 From: Paul Kocialkowski To: Maxime Ripard Cc: Daniel Vetter , David Airlie , Maarten Lankhorst , Sean Paul , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Emil Velikov Subject: Re: [PATCH v3 5/7] drm/fourcc: Pass the format_info pointer to drm_format_plane_width/height Message-ID: <20190520113258.GC6789@aptenodytes> References: <27b0041c7977402df4a087c78d2849ffe51c9f1c.1558002671.git-series.maxime.ripard@bootlin.com> <514af1d489d80b8b1767e3716b663ce5103da6eb.1558002671.git-series.maxime.ripard@bootlin.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <514af1d489d80b8b1767e3716b663ce5103da6eb.1558002671.git-series.maxime.ripard@bootlin.com> User-Agent: Mutt/1.11.4 (2019-03-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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]; > 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, > diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h > index 6b5a82b31bc4..4ef8ccb5d236 100644 > --- a/include/drm/drm_fourcc.h > +++ b/include/drm/drm_fourcc.h > @@ -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, > -- > git-series 0.9.1 > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Paul Kocialkowski, Bootlin Embedded Linux and kernel engineering https://bootlin.com