All of lore.kernel.org
 help / color / mirror / Atom feed
From: "james qian wang (Arm Technology China)" <james.qian.wang@arm.com>
To: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Cc: nd@arm.com, kernel@collabora.com,
	Mihail Atanassov <mihail.atanassov@arm.com>,
	David Airlie <airlied@linux.ie>,
	Liviu Dudau <liviu.dudau@arm.com>,
	Sandy Huang <hjc@rock-chips.com>,
	dri-devel@lists.freedesktop.org,
	Ayan Halder <Ayan.Halder@arm.com>, Sean Paul <sean@poorly.run>
Subject: Re: [PATCHv4,04/36] drm/gem-fb-helper: Add special version of drm_gem_fb_size_check
Date: Mon, 17 Feb 2020 19:34:32 +0800	[thread overview]
Message-ID: <20200217113432.GA6208@jamwan02-TSP300> (raw)
In-Reply-To: <e5b798c2-baf0-deae-b4ae-ac0e19abd710@collabora.com>

On Mon, Feb 17, 2020 at 11:55:50AM +0100, Andrzej Pietrasiewicz wrote:
> Hi James,
> 
> Thank you for the review.
> 
> Did you intentionally review patches from the v4 series or you simply
> didn't notice the v5? There are some differences, the most notable one
> is using proper way of subclassing a drm_framebuffer.
> The v5 series was sent on 17th December 2019.

Hi Andrzej:
Sorry, I did the review based pathwork:
https://patchwork.freedesktop.org/series/70889/#rev35
seems it has problem which only have V4.

I will re-do the review for V5 ASAP.

Sorry again.

James.

> Andrzej
> 
> W dniu 17.02.2020 o�09:16, james qian wang (Arm Technology China) pisze:
> > Hi Andrzej:
> > 
> > Really a good idea for introducing this custom size check, it's very
> > useful for some Komeda/malidp format, espcially pitch_multiplier, maybe
> > in future we can add it into into the drm_format_info.
> > 
> > On Fri, Dec 13, 2019 at 04:58:35PM +0100, Andrzej Pietrasiewicz wrote:
> > > The new version accepts a struct describing deviations from standard way of
> > > doing the size checks. The caller must provide the respective values.
> > > 
> > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> > > ---
> > >   drivers/gpu/drm/drm_gem_framebuffer_helper.c | 47 ++++++++++++++++----
> > >   include/drm/drm_gem_framebuffer_helper.h     | 16 +++++++
> > >   2 files changed, 55 insertions(+), 8 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/drm_gem_framebuffer_helper.c b/drivers/gpu/drm/drm_gem_framebuffer_helper.c
> > > index 787edb9a916b..4201dc1f32a5 100644
> > > --- a/drivers/gpu/drm/drm_gem_framebuffer_helper.c
> > > +++ b/drivers/gpu/drm/drm_gem_framebuffer_helper.c
> > > @@ -201,8 +201,9 @@ int drm_gem_fb_lookup(struct drm_device *dev,
> > >   EXPORT_SYMBOL_GPL(drm_gem_fb_lookup);
> > >   /**
> > > - * drm_gem_fb_size_check() - Helper function for use in
> > > - *			     &drm_mode_config_funcs.fb_create implementations
> > > + * drm_gem_fb_size_check_special() - Helper function for use in
> > > + *				     &drm_mode_config_funcs.fb_create
> > > + *				     implementations
> > >    * @dev: DRM device
> > >    * @mode_cmd: Metadata from the userspace framebuffer creation request
> > >    *
> > > @@ -212,9 +213,10 @@ EXPORT_SYMBOL_GPL(drm_gem_fb_lookup);
> > >    * Returns:
> > >    * Zero on success or a negative error code on failure.
> > >    */
> > > -int drm_gem_fb_size_check(struct drm_device *dev,
> > > -			  const struct drm_mode_fb_cmd2 *mode_cmd,
> > > -			  struct drm_gem_object **objs)
> > > +int drm_gem_fb_size_check_special(struct drm_device *dev,
> > 
> > How about name it to drm_gem_fb_custom_size_check()
> > 
> > > +				  const struct drm_mode_fb_cmd2 *mode_cmd,
> > > +				  const struct drm_size_check *check,
> > > +				  struct drm_gem_object **objs)
> > >   {
> > >   	const struct drm_format_info *info;
> > >   	int i;
> > > @@ -227,10 +229,19 @@ int drm_gem_fb_size_check(struct drm_device *dev,
> > >   		unsigned int width = mode_cmd->width / (i ? info->hsub : 1);
> > >   		unsigned int height = mode_cmd->height / (i ? info->vsub : 1);
> > >   		unsigned int min_size;
> > > +		u32 pitch = mode_cmd->pitches[i];
> > > +
> > > +		if (check && check->use_pitch_multiplier)
> > > +			if ((pitch * check->pitch_multiplier[i]) %
> > > +			    check->pitch_modulo)
> > > +				return -EINVAL;
> > > -		min_size = (height - 1) * mode_cmd->pitches[i]
> > > -			 + drm_format_info_min_pitch(info, i, width)
> > > -			 + mode_cmd->offsets[i];
> > > +		if (check && check->use_min_size)
> > > +			min_size = check->min_size[i];
> > > +		else
> > > +			min_size = (height - 1) * pitch
> > > +				 + drm_format_info_min_pitch(info, i, width)
> > > +				 + mode_cmd->offsets[i];
> > >   		if (objs[i]->size < min_size)
> > >   			return -EINVAL;
> > > @@ -239,6 +250,26 @@ int drm_gem_fb_size_check(struct drm_device *dev,
> > >   	return 0;
> > >   }
> > > +EXPORT_SYMBOL_GPL(drm_gem_fb_size_check_special);
> > > +
> > > +/**
> > > + * drm_gem_fb_size_check() - Helper function for use in
> > > + *			     &drm_mode_config_funcs.fb_create implementations
> > > + * @dev: DRM device
> > > + * @mode_cmd: Metadata from the userspace framebuffer creation request
> > > + *
> > > + * This function can be used to verify buffer sizes for all planes.
> > > + * It is caller's responsibility to put the objects on failure.
> > > + *
> > > + * Returns:
> > > + * Zero on success or a negative error code on failure.
> > > + */
> > > +int drm_gem_fb_size_check(struct drm_device *dev,
> > > +			  const struct drm_mode_fb_cmd2 *mode_cmd,
> > > +			  struct drm_gem_object **objs)
> > > +{
> > > +	return drm_gem_fb_size_check_special(dev, mode_cmd, NULL, objs);
> > > +}
> > >   EXPORT_SYMBOL_GPL(drm_gem_fb_size_check);
> > >   /**
> > > diff --git a/include/drm/drm_gem_framebuffer_helper.h b/include/drm/drm_gem_framebuffer_helper.h
> > > index c85d4b152e91..74304a268694 100644
> > > --- a/include/drm/drm_gem_framebuffer_helper.h
> > > +++ b/include/drm/drm_gem_framebuffer_helper.h
> > > @@ -11,6 +11,18 @@ struct drm_mode_fb_cmd2;
> > >   struct drm_plane;
> > >   struct drm_plane_state;
> > >   struct drm_simple_display_pipe;
> > > +struct drm_size_check;
> > > +
> > > +/**
> > > + * struct drm_size_check - Description of special requirements for size checks.
> > > + */
> > > +struct drm_size_check {
> > > +	unsigned int min_size[4];
> > > +	bool use_min_size;
> > > +	u32 pitch_multiplier[4];
> > > +	u32 pitch_modulo;
> > > +	bool use_pitch_multiplier;
> > > +};
> > >   struct drm_gem_object *drm_gem_fb_get_obj(struct drm_framebuffer *fb,
> > >   					  unsigned int plane);
> > > @@ -32,6 +44,10 @@ int drm_gem_fb_lookup(struct drm_device *dev,
> > >   		      struct drm_file *file,
> > >   		      const struct drm_mode_fb_cmd2 *mode_cmd,
> > >   		      struct drm_gem_object **objs);
> > > +int drm_gem_fb_size_check_special(struct drm_device *dev,
> > > +				  const struct drm_mode_fb_cmd2 *mode_cmd,
> > > +				  const struct drm_size_check *check,
> > > +				  struct drm_gem_object **objs);
> > >   int drm_gem_fb_size_check(struct drm_device *dev,
> > >   			  const struct drm_mode_fb_cmd2 *mode_cmd,
> > >   			  struct drm_gem_object **objs);
> > 
> > For this common case can we just define it as a MACRO, or a inline
> > func here in this header.
> > 
> > Thanks
> > James
> > 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2020-02-17 11:34 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-13 15:58 [PATCHv4 00/36] AFBC support for Rockchip Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 01/36] drm/framebuffer: Add optional modifier info Andrzej Pietrasiewicz
2020-02-17  5:50   ` [PATCHv4,01/36] " james qian wang (Arm Technology China)
2019-12-13 15:58 ` [PATCHv4 02/36] drm/core: Add afbc helper functions Andrzej Pietrasiewicz
2020-02-17  6:09   ` [PATCHv4,02/36] " james qian wang (Arm Technology China)
2019-12-13 15:58 ` [PATCHv4 03/36] drm/gem-fb-helper: Allow drivers to allocate struct drm_framebuffer on their own Andrzej Pietrasiewicz
2019-12-16 17:08   ` Liviu Dudau
2019-12-16 20:37     ` Andrzej Pietrasiewicz
2020-02-17  6:39   ` [PATCHv4,03/36] " james qian wang (Arm Technology China)
2019-12-13 15:58 ` [PATCHv4 04/36] drm/gem-fb-helper: Add special version of drm_gem_fb_size_check Andrzej Pietrasiewicz
2019-12-16 17:11   ` Liviu Dudau
2020-02-17  8:16   ` [PATCHv4,04/36] " james qian wang (Arm Technology China)
2020-02-17 10:55     ` Andrzej Pietrasiewicz
2020-02-17 11:34       ` james qian wang (Arm Technology China) [this message]
2019-12-13 15:58 ` [PATCHv4 05/36] drm/gem-fb-helper: Add generic afbc size checks Andrzej Pietrasiewicz
2019-12-16 17:19   ` Liviu Dudau
2019-12-16 18:41     ` Andrzej Pietrasiewicz
2019-12-17  9:18       ` Liviu Dudau
2020-02-17 11:02   ` [PATCHv4,05/36] " james qian wang (Arm Technology China)
2019-12-13 15:58 ` [PATCHv4 06/36] drm/gem-fb-helper: Add method to allocate struct drm_framebuffer Andrzej Pietrasiewicz
2019-12-13 17:33   ` Daniel Vetter
2019-12-17 14:49     ` [PATCHv5 00/34] Add AFBC support for Rockchip Andrzej Pietrasiewicz
2019-12-17 14:49       ` [PATCHv5 01/34] drm/core: Add afbc helper functions Andrzej Pietrasiewicz
2020-02-18  3:13         ` james qian wang (Arm Technology China)
2020-02-20  9:19         ` Boris Brezillon
2020-02-20 10:47         ` Boris Brezillon
2019-12-17 14:49       ` [PATCHv5 02/34] drm/gem-fb-helper: Allow drivers to allocate struct drm_framebuffer on their own Andrzej Pietrasiewicz
2020-02-18  3:34         ` james qian wang (Arm Technology China)
2020-02-20  9:47         ` Boris Brezillon
2019-12-17 14:49       ` [PATCHv5 03/34] drm/gem-fb-helper: Add special version of drm_gem_fb_size_check Andrzej Pietrasiewicz
2020-02-18  3:42         ` james qian wang (Arm Technology China)
2020-02-20  9:59         ` Boris Brezillon
2019-12-17 14:49       ` [PATCHv5 04/34] drm/gem-fb-helper: Add generic afbc size checks Andrzej Pietrasiewicz
2020-02-18  5:02         ` james qian wang (Arm Technology China)
2019-12-17 14:49       ` [PATCHv5 05/34] drm/komeda: Use afbc helper Andrzej Pietrasiewicz
2019-12-17 14:49       ` [PATCHv5 06/34] drm/komeda: Move checking src coordinates to komeda_fb_create Andrzej Pietrasiewicz
2019-12-17 14:49       ` [PATCHv5 07/34] drm/komeda: Use the already available local variable Andrzej Pietrasiewicz
2019-12-17 14:49       ` [PATCHv5 08/34] drm/komeda: Retrieve drm_format_info once Andrzej Pietrasiewicz
2019-12-17 14:49       ` [PATCHv5 09/34] drm/komeda: Explicitly require 1 plane for AFBC Andrzej Pietrasiewicz
2019-12-17 14:49       ` [PATCHv5 10/34] drm/komeda: Move pitches comparison to komeda_fb_create Andrzej Pietrasiewicz
2019-12-17 14:49       ` [PATCHv5 11/34] drm/komeda: Provide and use komeda_fb_get_pixel_addr variant not requiring a fb Andrzej Pietrasiewicz
2019-12-17 14:49       ` [PATCHv5 12/34] drm/komeda: Factor out object lookups for non-afbc case Andrzej Pietrasiewicz
2019-12-17 14:49       ` [PATCHv5 13/34] drm/komeda: Make komeda_fb_none_size_check independent from framebuffer Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 14/34] drm/komeda: Factor out object lookups for afbc case Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 15/34] drm/komeda: Free komeda_fb_afbc_size_check from framebuffer dependency Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 16/34] drm/komeda: Simplify error handling Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 17/34] drm/komeda: Move object lookup before size checks Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 18/34] drm/komeda: Move object assignments to framebuffer to after " Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 19/34] drm/komeda: Make the size checks independent from framebuffer structure Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 20/34] drm/komeda: Move helper invocation to after size checks Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 21/34] drm/komeda: Use helper for common tasks Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 22/34] drm/komeda: Use return value of drm_gem_fb_lookup Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 23/34] drm/komeda: Use special helper for non-afbc size checks Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 24/34] drm/komeda: Factor in the invocation of special helper Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 25/34] drm/komeda: Use special helper for afbc case size check Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 26/34] drm/komeda: Factor in the invocation of special helper, afbc case Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 27/34] drm/komeda: Move special helper invocation outside if-else Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 28/34] drm/komeda: Move to helper checking afbc buffer size Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 29/34] drm/arm/malidp: Make verify funcitons invocations independent Andrzej Pietrasiewicz
2020-02-20 11:26         ` Boris Brezillon
2020-02-20 11:29           ` Boris Brezillon
2020-02-20 11:35             ` Boris Brezillon
2019-12-17 14:50       ` [PATCHv5 30/34] drm/arm/malidp: Integrate verify functions Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 31/34] drm/arm/malidp: Factor in afbc framebuffer verification Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 32/34] drm/arm/malidp: Use generic helpers for afbc checks Andrzej Pietrasiewicz
2019-12-17 14:50       ` [PATCHv5 33/34] drm/rockchip: Use helper for common task Andrzej Pietrasiewicz
2020-02-20 11:24         ` Boris Brezillon
2019-12-17 14:50       ` [PATCHv5 34/34] drm/rockchip: Add support for afbc Andrzej Pietrasiewicz
2020-02-20 11:20         ` Boris Brezillon
2020-01-30  9:08       ` [PATCHv5 00/34] Add AFBC support for Rockchip Andrzej Pietrasiewicz
2020-01-30 11:44         ` Liviu Dudau
2020-01-30 11:57           ` Andrzej Pietrasiewicz
2020-02-07 11:44         ` Andrzej Pietrasiewicz
2020-02-07 17:10           ` Liviu Dudau
2020-02-20 16:54       ` Daniel Vetter
2020-02-21 19:54         ` Daniel Vetter
2019-12-13 15:58 ` [PATCHv4 07/36] drm/komeda: Use afbc helper Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 08/36] drm/komeda: Move checking src coordinates to komeda_fb_create Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 09/36] drm/komeda: Use the already available local variable Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 10/36] drm/komeda: Retrieve drm_format_info once Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 11/36] drm/komeda: Explicitly require 1 plane for AFBC Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 12/36] drm/komeda: Move pitches comparison to komeda_fb_create Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 13/36] drm/komeda: Provide and use komeda_fb_get_pixel_addr variant not requiring a fb Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 14/36] drm/komeda: Factor out object lookups for non-afbc case Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 15/36] drm/komeda: Make komeda_fb_none_size_check independent from framebuffer Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 16/36] drm/komeda: Factor out object lookups for afbc case Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 17/36] drm/komeda: Free komeda_fb_afbc_size_check from framebuffer dependency Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 18/36] drm/komeda: Simplify error handling Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 19/36] drm/komeda: Move object lookup before size checks Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 20/36] drm/komeda: Move object assignments to framebuffer to after " Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 21/36] drm/komeda: Make the size checks independent from framebuffer structure Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 22/36] drm/komeda: Move helper invocation to after size checks Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 23/36] drm/komeda: Use helper for common tasks Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 24/36] drm/komeda: Use return value of drm_gem_fb_lookup Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 25/36] drm/komeda: Use special helper for non-afbc size checks Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 26/36] drm/komeda: Factor in the invocation of special helper Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 27/36] drm/komeda: Use special helper for afbc case size check Andrzej Pietrasiewicz
2019-12-13 15:58 ` [PATCHv4 28/36] drm/komeda: Factor in the invocation of special helper, afbc case Andrzej Pietrasiewicz
2019-12-13 15:59 ` [PATCHv4 29/36] drm/komeda: Move special helper invocation outside if-else Andrzej Pietrasiewicz
2019-12-13 15:59 ` [PATCHv4 30/36] drm/komeda: Move to helper checking afbc buffer size Andrzej Pietrasiewicz
2019-12-13 15:59 ` [PATCHv4 31/36] drm/arm/malidp: Make verify funcitons invocations independent Andrzej Pietrasiewicz
2019-12-13 15:59 ` [PATCHv4 32/36] drm/arm/malidp: Integrate verify functions Andrzej Pietrasiewicz
2019-12-13 15:59 ` [PATCHv4 33/36] drm/arm/malidp: Factor in afbc framebuffer verification Andrzej Pietrasiewicz
2019-12-13 15:59 ` [PATCHv4 34/36] drm/arm/malidp: Use generic helpers for afbc checks Andrzej Pietrasiewicz
2019-12-13 15:59 ` [PATCHv4 35/36] drm/rockchip: Use helper for common task Andrzej Pietrasiewicz
2019-12-13 15:59 ` [PATCHv4 36/36] drm/rockchip: Add support for afbc Andrzej Pietrasiewicz

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=20200217113432.GA6208@jamwan02-TSP300 \
    --to=james.qian.wang@arm.com \
    --cc=Ayan.Halder@arm.com \
    --cc=airlied@linux.ie \
    --cc=andrzej.p@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hjc@rock-chips.com \
    --cc=kernel@collabora.com \
    --cc=liviu.dudau@arm.com \
    --cc=mihail.atanassov@arm.com \
    --cc=nd@arm.com \
    --cc=sean@poorly.run \
    /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.