All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
To: Maxime Ripard <maxime.ripard@bootlin.com>,
	Daniel Vetter <daniel.vetter@intel.com>,
	David Airlie <airlied@linux.ie>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Sean Paul <seanpaul@chromium.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: 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>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	linux-media@vger.kernel.org
Subject: Re: [PATCH 00/20] drm: Split out the formats API and move it to a common place
Date: Wed, 17 Apr 2019 14:38:29 +0200	[thread overview]
Message-ID: <69e9a0b02c48867cca05f496dd2129b0e41d5904.camel@bootlin.com> (raw)
In-Reply-To: <cover.8ec406bf8f4f097e9dc909d5aac466556822f592.1555487650.git-series.maxime.ripard@bootlin.com>

Hi,

On Wed, 2019-04-17 at 09:54 +0200, Maxime Ripard wrote:
> Hi,
> 
> DRM comes with an extensive format support to retrieve the various
> parameters associated with a given format (such as the subsampling, or the
> bits per pixel), as well as some helpers and utilities to ease the driver
> development.
> 
> v4l2, on the other side, doesn't provide such facilities, leaving each
> driver reimplement a subset of the formats parameters for the one supported
> by that particular driver. This leads to a lot of duplication and
> boilerplate code in the v4l2 drivers.
> 
> This series tries to address this by moving the DRM format API into lib and
> turning it into a more generic API. In order to do this, we've needed to do
> some preliminary changes on the DRM drivers, then moved the API and finally
> converted a v4l2 driver to give an example of how such library could be
> used.
> 
> Let me know what you think,

Another thing to consider would be using unsigned ints for the plane
index so we can avoid < 0 checks all over the place.

What do you think?

Cheers,

Paul

> Maxime
> 
> Changes from RFC:
>   - Rebased on next
>   - Fixed the various formats mapping
>   - Added tags
>   - Did most of the formats functions as inline functions
>   - Used a consistent prefix for all the utilities functions
>   - Fixed the compilation breakages, and did a run of allmodconfig for arm,
>     arm64 and x86_64
>   - Fixed out of array bounds warnings in the image_format_info_block_*
>     functions
>   - Added License and copyright headers on missing files
> 
> Maxime Ripard (20):
>   drm: Remove users of drm_format_num_planes
>   drm: Remove users of drm_format_(horz|vert)_chroma_subsampling
>   drm/fourcc: Pass the format_info pointer to drm_format_plane_cpp
>   drm/fourcc: Pass the format_info pointer to drm_format_plane_width/height
>   drm: Replace instances of drm_format_info by drm_get_format_info
>   lib: Add video format information library
>   drm/fb: Move from drm_format_info to image_format_info
>   drm/malidp: Convert to generic image format library
>   drm/client: Convert to generic image format library
>   drm/exynos: Convert to generic image format library
>   drm/i915: Convert to generic image format library
>   drm/ipuv3: Convert to generic image format library
>   drm/msm: Convert to generic image format library
>   drm/omap: Convert to generic image format library
>   drm/rockchip: Convert to generic image format library
>   drm/tegra: Convert to generic image format library
>   drm/fourcc: Remove old DRM format API
>   lib: image-formats: Add v4l2 formats support
>   lib: image-formats: Add more functions
>   media: sun6i: Convert to the image format API
> 
>  drivers/gpu/drm/Kconfig                                |   2 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c                 |   4 +-
>  drivers/gpu/drm/arm/malidp_drv.c                       |   3 +-
>  drivers/gpu/drm/arm/malidp_hw.c                        |   3 +-
>  drivers/gpu/drm/arm/malidp_mw.c                        |   2 +-
>  drivers/gpu/drm/arm/malidp_planes.c                    |  20 +-
>  drivers/gpu/drm/armada/armada_fb.c                     |   3 +-
>  drivers/gpu/drm/armada/armada_overlay.c                |   2 +-
>  drivers/gpu/drm/armada/armada_plane.c                  |   2 +-
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c        |  11 +-
>  drivers/gpu/drm/bochs/bochs.h                          |   4 +-
>  drivers/gpu/drm/bochs/bochs_hw.c                       |   2 +-
>  drivers/gpu/drm/drm_client.c                           |   7 +-
>  drivers/gpu/drm/drm_fb_cma_helper.c                    |   4 +-
>  drivers/gpu/drm/drm_fb_helper.c                        |  14 +-
>  drivers/gpu/drm/drm_format_helper.c                    |   4 +-
>  drivers/gpu/drm/drm_fourcc.c                           | 345 +-----
>  drivers/gpu/drm/drm_framebuffer.c                      |  10 +-
>  drivers/gpu/drm/drm_gem_framebuffer_helper.c           |   4 +-
>  drivers/gpu/drm/exynos/exynos_drm_fb.c                 |   2 +-
>  drivers/gpu/drm/exynos/exynos_drm_ipp.c                |   2 +-
>  drivers/gpu/drm/exynos/exynos_drm_ipp.h                |   4 +-
>  drivers/gpu/drm/exynos/exynos_drm_scaler.c             |   3 +-
>  drivers/gpu/drm/gma500/framebuffer.c                   |   4 +-
>  drivers/gpu/drm/i915/i915_drv.h                        |   6 +-
>  drivers/gpu/drm/i915/intel_display.c                   |  14 +-
>  drivers/gpu/drm/i915/intel_pm.c                        |   6 +-
>  drivers/gpu/drm/i915/intel_sprite.c                    |   3 +-
>  drivers/gpu/drm/imx/ipuv3-plane.c                      |  19 +-
>  drivers/gpu/drm/mediatek/mtk_drm_fb.c                  |   8 +-
>  drivers/gpu/drm/meson/meson_overlay.c                  |  14 +-
>  drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c            |  11 +-
>  drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c              |  10 +-
>  drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c              |   4 +-
>  drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c             |  25 +-
>  drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c               |   8 +-
>  drivers/gpu/drm/msm/msm_fb.c                           |  18 +-
>  drivers/gpu/drm/omapdrm/dss/dispc.c                    |   9 +-
>  drivers/gpu/drm/omapdrm/omap_fb.c                      |  15 +-
>  drivers/gpu/drm/radeon/radeon_fb.c                     |   4 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_fb.c             |  17 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_vop.c            |  14 +-
>  drivers/gpu/drm/selftests/Makefile                     |   3 +-
>  drivers/gpu/drm/selftests/drm_modeset_selftests.h      |   3 +-
>  drivers/gpu/drm/selftests/test-drm_format.c            | 280 +----
>  drivers/gpu/drm/selftests/test-drm_modeset_common.h    |   3 +-
>  drivers/gpu/drm/stm/ltdc.c                             |   2 +-
>  drivers/gpu/drm/sun4i/sun4i_backend.c                  |   6 +-
>  drivers/gpu/drm/sun4i/sun4i_frontend.c                 |  18 +-
>  drivers/gpu/drm/sun4i/sun8i_vi_layer.c                 |   4 +-
>  drivers/gpu/drm/sun4i/sun8i_vi_scaler.c                |   6 +-
>  drivers/gpu/drm/sun4i/sun8i_vi_scaler.h                |   5 +-
>  drivers/gpu/drm/tegra/fb.c                             |  14 +-
>  drivers/gpu/drm/tegra/plane.c                          |   4 +-
>  drivers/gpu/drm/vc4/vc4_plane.c                        |  15 +-
>  drivers/gpu/drm/zte/zx_plane.c                         |   6 +-
>  drivers/gpu/ipu-v3/ipu-pre.c                           |   3 +-
>  drivers/gpu/ipu-v3/ipu-prg.c                           |   3 +-
>  drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c     |  89 +-
>  drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.h     |  49 +-
>  drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_reg.h |   6 +-
>  drivers/media/platform/sunxi/sun6i-csi/sun6i_video.c   |  11 +-
>  include/drm/drm_fourcc.h                               | 219 +---
>  include/drm/drm_framebuffer.h                          |   4 +-
>  include/drm/drm_mode_config.h                          |   5 +-
>  include/linux/image-formats.h                          | 438 ++++++-
>  lib/Kconfig                                            |   7 +-
>  lib/Makefile                                           |   3 +-
>  lib/image-formats-selftests.c                          | 325 +++++-
>  lib/image-formats.c                                    | 717 ++++++++++-
>  70 files changed, 1740 insertions(+), 1174 deletions(-)
>  delete mode 100644 drivers/gpu/drm/selftests/test-drm_format.c
>  create mode 100644 include/linux/image-formats.h
>  create mode 100644 lib/image-formats-selftests.c
>  create mode 100644 lib/image-formats.c
> 
> base-commit: de3c659c83ce88d495f2a36397071fdd0a337345
-- 
Paul Kocialkowski, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com


  parent reply	other threads:[~2019-04-17 12:38 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
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 [this message]
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=69e9a0b02c48867cca05f496dd2129b0e41d5904.camel@bootlin.com \
    --to=paul.kocialkowski@bootlin.com \
    --cc=airlied@linux.ie \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --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=maxime.ripard@bootlin.com \
    --cc=mchehab@kernel.org \
    --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.