From: "james qian wang (Arm Technology China)" <james.qian.wang@arm.com>
To: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Cc: nd@arm.com, Ayan Halder <Ayan.Halder@arm.com>,
kernel@collabora.com, David Airlie <airlied@linux.ie>,
Liviu Dudau <liviu.dudau@arm.com>,
Sandy Huang <hjc@rock-chips.com>,
dri-devel@lists.freedesktop.org,
Mihail Atanassov <mihail.atanassov@arm.com>,
Sean Paul <sean@poorly.run>
Subject: Re: [PATCHv5 02/34] drm/gem-fb-helper: Allow drivers to allocate struct drm_framebuffer on their own
Date: Tue, 18 Feb 2020 11:34:56 +0800 [thread overview]
Message-ID: <20200218033456.GA10425@jamwan02-TSP300> (raw)
In-Reply-To: <20191217145020.14645-3-andrzej.p@collabora.com>
Hi Andrzej:
On Tue, Dec 17, 2019 at 03:49:48PM +0100, Andrzej Pietrasiewicz wrote:
> Prepare tools for drivers which need to allocate a struct drm_framebuffer
> (or a container of struct drm_framebuffer) explicitly, before calling
> helpers. In such a case we need new helpers which omit allocating the
> struct drm_framebuffer and this patch provides them. Consequently, they
> are used also inside the helpers themselves.
>
> The interested drivers will likely need to be able to perform object
> lookups and size checks in separate invocations and this patch provides
> that as well. Helpers themselves are updated, too.
>
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
> ---
> drivers/gpu/drm/drm_gem_framebuffer_helper.c | 216 ++++++++++++++-----
> include/drm/drm_gem_framebuffer_helper.h | 17 ++
> 2 files changed, 181 insertions(+), 52 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_gem_framebuffer_helper.c b/drivers/gpu/drm/drm_gem_framebuffer_helper.c
> index b9bcd310ca2d..b3494f6b66bb 100644
> --- a/drivers/gpu/drm/drm_gem_framebuffer_helper.c
> +++ b/drivers/gpu/drm/drm_gem_framebuffer_helper.c
> @@ -54,6 +54,69 @@ struct drm_gem_object *drm_gem_fb_get_obj(struct drm_framebuffer *fb,
> }
> EXPORT_SYMBOL_GPL(drm_gem_fb_get_obj);
>
> +/**
> + * drm_gem_fb_init_with_funcs() - Initialize an already allocated framebuffer
> + * @fb: Framebuffer
> + * @dev: DRM device
> + * @mode_cmd: Metadata from the userspace framebuffer creation request
> + * @obj: GEM objects to be assigned to the framebuffer
> + * @num_planes: number of planes
> + * @funcs: vtable to be used for the framebuffer object
> + *
> + * This variant of the function allows passing a custom vtable.
> + *
> + * Returns:
> + * 0 on success or a negative error code
> + */
> +int drm_gem_fb_init_with_funcs(struct drm_framebuffer *fb,
> + struct drm_device *dev,
> + const struct drm_mode_fb_cmd2 *mode_cmd,
> + struct drm_gem_object **obj,
> + unsigned int num_planes,
> + const struct drm_framebuffer_funcs *funcs)
> +{
> + int ret, i;
> +
> + drm_helper_mode_fill_fb_struct(dev, fb, mode_cmd);
> +
> + for (i = 0; i < num_planes; i++)
> + fb->obj[i] = obj[i];
> +
> + ret = drm_framebuffer_init(dev, fb, funcs);
> + if (ret)
> + DRM_DEV_ERROR(dev->dev, "Failed to init framebuffer: %d\n", ret);
> +
> + return ret;
> +}
> +EXPORT_SYMBOL_GPL(drm_gem_fb_init_with_funcs);
> +
> +static const struct drm_framebuffer_funcs drm_gem_fb_funcs = {
> + .destroy = drm_gem_fb_destroy,
> + .create_handle = drm_gem_fb_create_handle,
> +};
> +
> +/**
> + * drm_gem_fb_init() - Initialize an already allocated framebuffer
> + * @fb: Framebuffer
> + * @dev: DRM device
> + * @mode_cmd: Metadata from the userspace framebuffer creation request
> + * @obj: GEM objects to be assigned to the framebuffer
> + * @num_planes: number of planes
> + *
> + * This variant of the function uses a default vtable.
> + *
> + * Returns:
> + * 0 on success or a negative error code
> + */
> +int drm_gem_fb_init(struct drm_framebuffer *fb,
> + struct drm_device *dev,
> + const struct drm_mode_fb_cmd2 *mode_cmd,
> + struct drm_gem_object **obj, unsigned int num_planes)
> +{
> + return drm_gem_fb_init_with_funcs(fb, dev, mode_cmd, obj, num_planes, &drm_gem_fb_funcs);
> +}
> +EXPORT_SYMBOL_GPL(drm_gem_fb_init);
> +
> static struct drm_framebuffer *
> drm_gem_fb_alloc(struct drm_device *dev,
> const struct drm_mode_fb_cmd2 *mode_cmd,
> @@ -61,21 +124,14 @@ drm_gem_fb_alloc(struct drm_device *dev,
> const struct drm_framebuffer_funcs *funcs)
> {
> struct drm_framebuffer *fb;
> - int ret, i;
> + int ret;
>
> fb = kzalloc(sizeof(*fb), GFP_KERNEL);
> if (!fb)
> return ERR_PTR(-ENOMEM);
>
> - drm_helper_mode_fill_fb_struct(dev, fb, mode_cmd);
> -
> - for (i = 0; i < num_planes; i++)
> - fb->obj[i] = obj[i];
> -
> - ret = drm_framebuffer_init(dev, fb, funcs);
> + ret = drm_gem_fb_init_with_funcs(fb, dev, mode_cmd, obj, num_planes, funcs);
> if (ret) {
> - DRM_DEV_ERROR(dev->dev, "Failed to init framebuffer: %d\n",
> - ret);
> kfree(fb);
> return ERR_PTR(ret);
> }
> @@ -144,59 +200,29 @@ drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file,
> const struct drm_mode_fb_cmd2 *mode_cmd,
> const struct drm_framebuffer_funcs *funcs)
> {
> - const struct drm_format_info *info;
> struct drm_gem_object *objs[4];
> struct drm_framebuffer *fb;
> - int ret, i;
> -
> - info = drm_get_format_info(dev, mode_cmd);
> - if (!info)
> - return ERR_PTR(-EINVAL);
> -
> - for (i = 0; i < info->num_planes; i++) {
> - unsigned int width = mode_cmd->width / (i ? info->hsub : 1);
> - unsigned int height = mode_cmd->height / (i ? info->vsub : 1);
> - unsigned int min_size;
> + int ret, num_planes;
>
> - objs[i] = drm_gem_object_lookup(file, mode_cmd->handles[i]);
> - if (!objs[i]) {
> - DRM_DEBUG_KMS("Failed to lookup GEM object\n");
> - ret = -ENOENT;
> - goto err_gem_object_put;
> - }
> -
> - min_size = (height - 1) * mode_cmd->pitches[i]
> - + drm_format_info_min_pitch(info, i, width)
> - + mode_cmd->offsets[i];
> + ret = drm_gem_fb_lookup(dev, file, mode_cmd, objs);
> + if (ret < 0)
> + return ERR_PTR(ret);
> + num_planes = ret;
>
> - if (objs[i]->size < min_size) {
> - drm_gem_object_put_unlocked(objs[i]);
> - ret = -EINVAL;
> - goto err_gem_object_put;
> - }
> - }
> + ret = drm_gem_fb_size_check(dev, mode_cmd, objs);
> + if (ret)
> + fb = ERR_PTR(ret);
> + else
> + fb = drm_gem_fb_alloc(dev, mode_cmd, objs, num_planes, funcs);
>
> - fb = drm_gem_fb_alloc(dev, mode_cmd, objs, i, funcs);
> - if (IS_ERR(fb)) {
> - ret = PTR_ERR(fb);
> - goto err_gem_object_put;
> - }
> + if (IS_ERR(fb))
> + for (num_planes--; num_planes >= 0; num_planes--)
> + drm_gem_object_put_unlocked(objs[num_planes]);
>
> return fb;
> -
> -err_gem_object_put:
> - for (i--; i >= 0; i--)
> - drm_gem_object_put_unlocked(objs[i]);
> -
> - return ERR_PTR(ret);
> }
> EXPORT_SYMBOL_GPL(drm_gem_fb_create_with_funcs);
>
> -static const struct drm_framebuffer_funcs drm_gem_fb_funcs = {
> - .destroy = drm_gem_fb_destroy,
> - .create_handle = drm_gem_fb_create_handle,
> -};
> -
> /**
> * drm_gem_fb_create() - Helper function for the
> * &drm_mode_config_funcs.fb_create callback
> @@ -228,6 +254,92 @@ drm_gem_fb_create(struct drm_device *dev, struct drm_file *file,
> }
> EXPORT_SYMBOL_GPL(drm_gem_fb_create);
>
> +/**
> + * drm_gem_fb_lookup() - Helper function for use in
> + * &drm_mode_config_funcs.fb_create implementations
> + * @dev: DRM device
> + * @file: DRM file that holds the GEM handle(s) backing the framebuffer
> + * @mode_cmd: Metadata from the userspace framebuffer creation request
> + *
> + * This function can be used to look up the objects for all planes.
> + * In case an error is returned all the objects are put by the
> + * function before returning.
> + *
> + * Returns:
> + * Number of planes on success or a negative error code on failure.
> + */
> +int drm_gem_fb_lookup(struct drm_device *dev,
[nit-pick] How about name it to drm_gem_fb_objs_lookup() ?
> + struct drm_file *file,
> + const struct drm_mode_fb_cmd2 *mode_cmd,
> + struct drm_gem_object **objs)
> +{
> + const struct drm_format_info *info;
> + int ret, i;
> +
> + info = drm_get_format_info(dev, mode_cmd);
> + if (!info)
> + return -EINVAL;
> +
> + for (i = 0; i < info->num_planes; i++) {
> + objs[i] = drm_gem_object_lookup(file, mode_cmd->handles[i]);
> + if (!objs[i]) {
> + DRM_DEBUG_KMS("Failed to lookup GEM object\n");
> + ret = -ENOENT;
> + goto err_gem_object_put;
> + }
> + }
> +
> + return i;
> +
> +err_gem_object_put:
> + for (i--; i >= 0; i--)
> + drm_gem_object_put_unlocked(objs[i]);
> +
> + return ret;
> +}
> +EXPORT_SYMBOL_GPL(drm_gem_fb_lookup);
> +
> +/**
> + * 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)
> +{
> + const struct drm_format_info *info;
> + int i;
> +
> + info = drm_get_format_info(dev, mode_cmd);
> + if (!info)
> + return -EINVAL;
> +
> + for (i = 0; i < info->num_planes; i++) {
> + unsigned int width = mode_cmd->width / (i ? info->hsub : 1);
> + unsigned int height = mode_cmd->height / (i ? info->vsub : 1);
> + unsigned int min_size;
> +
> + min_size = (height - 1) * mode_cmd->pitches[i]
> + + drm_format_info_min_pitch(info, i, width)
> + + mode_cmd->offsets[i];
> +
> + if (objs[i]->size < min_size)
> + return -EINVAL;
> + }
> +
> + return 0;
> +
> +}
> +EXPORT_SYMBOL_GPL(drm_gem_fb_size_check);
> +
> static const struct drm_framebuffer_funcs drm_gem_fb_funcs_dirtyfb = {
> .destroy = drm_gem_fb_destroy,
> .create_handle = drm_gem_fb_create_handle,
> diff --git a/include/drm/drm_gem_framebuffer_helper.h b/include/drm/drm_gem_framebuffer_helper.h
> index d9f13fd25b0a..c85d4b152e91 100644
> --- a/include/drm/drm_gem_framebuffer_helper.h
> +++ b/include/drm/drm_gem_framebuffer_helper.h
> @@ -14,10 +14,27 @@ struct drm_simple_display_pipe;
>
> struct drm_gem_object *drm_gem_fb_get_obj(struct drm_framebuffer *fb,
> unsigned int plane);
> +int drm_gem_fb_init_with_funcs(struct drm_framebuffer *fb,
> + struct drm_device *dev,
> + const struct drm_mode_fb_cmd2 *mode_cmd,
> + struct drm_gem_object **obj,
> + unsigned int num_planes,
> + const struct drm_framebuffer_funcs *funcs);
> +int drm_gem_fb_init(struct drm_framebuffer *fb,
> + struct drm_device *dev,
> + const struct drm_mode_fb_cmd2 *mode_cmd,
> + struct drm_gem_object **obj, unsigned int num_planes);
> void drm_gem_fb_destroy(struct drm_framebuffer *fb);
> int drm_gem_fb_create_handle(struct drm_framebuffer *fb, struct drm_file *file,
> unsigned int *handle);
>
> +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(struct drm_device *dev,
> + const struct drm_mode_fb_cmd2 *mode_cmd,
> + struct drm_gem_object **objs);
> struct drm_framebuffer *
> drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file,
> const struct drm_mode_fb_cmd2 *mode_cmd,
Reviewed-by: James Qian Wang (Arm Technology China) <james.qian.wang@arm.com>
James.
> --
> 2.17.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-02-18 3:35 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)
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) [this message]
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=20200218033456.GA10425@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox