All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard@bootlin.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@intel.com>,
	David Airlie <airlied@linux.ie>,
	Sean Paul <seanpaul@chromium.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	Paul Kocialkowski <paul.kocialkowski@bootlin.com>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	linux-media@vger.kernel.org,
	Emil Velikov <emil.velikov@collabora.com>
Subject: Re: [PATCH 04/20] drm/fourcc: Pass the format_info pointer to drm_format_plane_width/height
Date: Wed, 17 Apr 2019 15:12:56 +0200	[thread overview]
Message-ID: <20190417131256.s7dwk6cda5ezgedd@flea> (raw)
In-Reply-To: <8d909dcf-16de-7462-1cc6-2713778ed8b1@linux.intel.com>

[-- Attachment #1: Type: text/plain, Size: 2829 bytes --]

On Wed, Apr 17, 2019 at 01:10:33PM +0200, Maarten Lankhorst wrote:
> Op 17-04-2019 om 13:01 schreef Maxime Ripard:
> > On Wed, Apr 17, 2019 at 12:47:48PM +0200, Maarten Lankhorst wrote:
> >>> +/**
> >>> + * 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;
> >>> +}
> >> Why the null checks? None of the other inlines for drm_format_info
> >> perform them.
> > Unless I'm mistaken, the subsampling only applies to the planes with
> > the chrominance, which are always >= 1. Therefore the plane 0 is
> > always the luminance, to which the subsampling doesn't apply.
> >
> > Or are you talking about something else?
>
>
> The info == NULL check. :)

Aaah, sorry :)

That's true, and that's actually the first four patches that change
that behaviour a bit. Previously, drm_format_plane_cpp, _width, and
_height will do the lookup themselves using drm_format_info, and test
whether the pointer returned is null or not.

Patches 3 and 4 removed that lookup but kept the null pointer check.

We could remove it, but there's two downsides for that:

  * since the lookup is now effectively pushed to the caller (or the
    caller's caller), we would have to check there that the pointer isn't
    NULL. That's a lot of boilerplate to add.

  * And since this is a generic function, I wouldn't trust the caller
    to give a pointer that can be dereferenced right away. This might
    be more subjective though.

So I guess we should make sure that we are consistent, but I'd be in
favor of putting that check in all the functions.

Maxime

--
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2019-04-17 13:13 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-17  7:54 [PATCH 00/20] drm: Split out the formats API and move it to a common place Maxime Ripard
2019-04-17  7:54 ` [PATCH 01/20] drm: Remove users of drm_format_num_planes Maxime Ripard
2019-04-17  7:54 ` [PATCH 02/20] drm: Remove users of drm_format_(horz|vert)_chroma_subsampling Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-04-17 13:32   ` Philipp Zabel
2019-04-17  7:54 ` [PATCH 03/20] drm/fourcc: Pass the format_info pointer to drm_format_plane_cpp Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-04-17  7:54 ` [PATCH 04/20] drm/fourcc: Pass the format_info pointer to drm_format_plane_width/height Maxime Ripard
2019-04-17 10:47   ` Maarten Lankhorst
2019-04-17 11:01     ` Maxime Ripard
2019-04-17 11:10       ` Maarten Lankhorst
2019-04-17 13:12         ` Maxime Ripard [this message]
2019-04-17  7:54 ` [PATCH 05/20] drm: Replace instances of drm_format_info by drm_get_format_info Maxime Ripard
2019-04-17  7:54 ` [PATCH 06/20] lib: Add video format information library Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-04-17 12:34   ` Paul Kocialkowski
2019-04-17 12:48     ` Maxime Ripard
2019-04-17 14:03       ` Paul Kocialkowski
2019-04-23 11:22   ` Thomas Zimmermann
2019-04-23 16:56     ` Paul Kocialkowski
2019-04-23 16:56       ` Paul Kocialkowski
2019-04-17  7:54 ` [PATCH 07/20] drm/fb: Move from drm_format_info to image_format_info Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-04-17  7:54 ` [PATCH 08/20] drm/malidp: Convert to generic image format library Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-04-17  7:54 ` [PATCH 09/20] drm/client: " Maxime Ripard
2019-04-17  7:54 ` [PATCH 10/20] drm/exynos: " Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-04-17  7:54 ` [PATCH 11/20] drm/i915: " Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-04-17  7:54 ` [PATCH 12/20] drm/ipuv3: " Maxime Ripard
2019-04-17  7:54 ` [PATCH 13/20] drm/msm: " Maxime Ripard
2019-04-17  7:54 ` [PATCH 14/20] drm/omap: " Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-04-17  7:54 ` [PATCH 15/20] drm/rockchip: " Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-04-17  7:54 ` [PATCH 16/20] drm/tegra: " Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-04-17  7:54 ` [PATCH 17/20] drm/fourcc: Remove old DRM format API Maxime Ripard
2019-04-17  7:54 ` [PATCH 18/20] lib: image-formats: Add v4l2 formats support Maxime Ripard
2019-04-17  7:54   ` Maxime Ripard
2019-05-02  8:24   ` Hans Verkuil
2019-05-06 13:22     ` Maxime Ripard
2019-04-17  7:54 ` [PATCH 19/20] lib: image-formats: Add more functions Maxime Ripard
2019-04-17 12:39   ` Paul Kocialkowski
2019-04-17 12:39     ` Paul Kocialkowski
2019-04-17 12:41   ` Sakari Ailus
2019-04-17  7:54 ` [PATCH 20/20] media: sun6i: Convert to the image format API Maxime Ripard
2019-04-17 12:23 ` [PATCH 00/20] drm: Split out the formats API and move it to a common place Paul Kocialkowski
2019-04-17 12:38 ` Paul Kocialkowski
2019-04-17 15:41 ` Daniel Vetter
2019-04-17 15:41   ` Daniel Vetter
2019-04-18  6:22   ` Maxime Ripard
2019-04-18  7:52     ` Daniel Vetter
2019-04-18  7:52       ` Daniel Vetter
2019-04-18  9:02       ` Maxime Ripard
2019-04-18  9:02         ` Maxime Ripard
2019-04-18 10:07         ` Daniel Vetter
2019-04-18 10:07           ` Daniel Vetter
2019-04-18 12:01           ` Maxime Ripard
2019-04-18 12:01             ` Maxime Ripard
2019-04-18 12:32             ` Daniel Vetter
2019-04-18 12:32               ` Daniel Vetter
2019-04-18 20:56               ` Maxime Ripard
2019-04-18 20:56                 ` Maxime Ripard
2019-04-20 23:05                 ` Laurent Pinchart
2019-04-20 23:05                   ` Laurent Pinchart
2019-05-02  8:25                 ` Hans Verkuil
2019-05-02  8:25                   ` Hans Verkuil
2019-04-20 22:59           ` Laurent Pinchart
2019-04-20 22:59             ` Laurent Pinchart
2019-04-23  7:25             ` Daniel Vetter
2019-04-23  7:25               ` Daniel Vetter
2019-04-23  8:59               ` Daniel Stone
2019-04-23  8:59                 ` Daniel Stone
2019-04-23 15:54                 ` Laurent Pinchart
2019-04-23 15:54                   ` Laurent Pinchart
2019-04-23 16:02                   ` Daniel Stone
2019-04-23 16:02                     ` Daniel Stone
2019-04-23 16:38                     ` Paul Kocialkowski
2019-04-23 16:38                       ` Paul Kocialkowski
2019-04-23 15:45               ` Laurent Pinchart
2019-04-23 15:45                 ` Laurent Pinchart
2019-04-23 16:46                 ` Paul Kocialkowski
2019-04-23 16:46                   ` Paul Kocialkowski
2019-04-23 19:18                 ` Daniel Vetter
2019-04-23 19:18                   ` Daniel Vetter
2019-05-11 19:26                   ` Laurent Pinchart
2019-05-11 19:26                     ` Laurent Pinchart
2019-05-13 14:57                     ` Daniel Vetter
2019-05-13 14:57                       ` Daniel Vetter
2019-05-13 15:23                       ` Mauro Carvalho Chehab
2019-05-13 15:23                         ` Mauro Carvalho Chehab
2019-04-18 11:49         ` Paul Kocialkowski
2019-04-18 11:49           ` Paul Kocialkowski
2019-04-20 22:40           ` Laurent Pinchart
2019-04-20 22:40             ` Laurent Pinchart
2019-04-23  7:30             ` Daniel Vetter
2019-04-23  7:30               ` Daniel Vetter
2019-04-23 12:33               ` Paul Kocialkowski
2019-04-23 12:33                 ` Paul Kocialkowski
2019-04-23 14:28                 ` Nicolas Dufresne
2019-04-23 14:28                   ` Nicolas Dufresne
2019-04-23 14:55                   ` Paul Kocialkowski
2019-04-23 14:55                     ` Paul Kocialkowski
2019-04-23 15:09                   ` Daniel Vetter
2019-04-23 15:09                     ` Daniel Vetter
2019-04-23 17:16                     ` Nicolas Dufresne
2019-04-23 17:16                       ` Nicolas Dufresne
2019-04-23 19:06                       ` Daniel Vetter
2019-04-23 19:06                         ` Daniel Vetter
2019-04-23 16:54             ` Paul Kocialkowski
2019-04-23 16:54               ` Paul Kocialkowski
2019-05-11 19:19               ` Laurent Pinchart
2019-05-11 19:19                 ` Laurent Pinchart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190417131256.s7dwk6cda5ezgedd@flea \
    --to=maxime.ripard@bootlin.com \
    --cc=airlied@linux.ie \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emil.velikov@collabora.com \
    --cc=hans.verkuil@cisco.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mchehab@kernel.org \
    --cc=paul.kocialkowski@bootlin.com \
    --cc=sakari.ailus@linux.intel.com \
    --cc=seanpaul@chromium.org \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.