Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3943734yba; Wed, 17 Apr 2019 00:57:24 -0700 (PDT) X-Google-Smtp-Source: APXvYqymp8bRg+iMAzc4WcGLx3M6vQIWl3kXYjzEWfi4IZN1XoAFQGw2ejFKIFTlBy6YY5yXGcr8 X-Received: by 2002:a62:4852:: with SMTP id v79mr87061997pfa.72.1555487844137; Wed, 17 Apr 2019 00:57:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555487844; cv=none; d=google.com; s=arc-20160816; b=sMHktbGV+QNdVbSY/DVwKruNSRtJxHgm1PdkWqd5fCer/gQvF27nffdlDMfQkOLAl2 vLFm1BTChGBB8Mp14rraiYRnm9gw1aMBl/8m6Py1I7YRAT6l9/Yv4B4/9tnBdD4DTY1g R/Rta3bUs5iIXihWDNFNpoXbGIATZbEtWlfritUQDXBoA5L9I5jKqepgHyruSVNugrxs HgGJ9/vtvMYlV8fUad/GudP7qYW8jST9m3HO4N4myS0PDxTKFyUplKljp08RLaqVfFb+ HGvsloM/gdft/wDdrxCNqASJbqw/pH22YvsfBVoCpe/IhGMLUdMQHPYTaYNmtk+V2Iwq Prrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=D4rKqJFKMc5TuAzmZGrqDPN+8bq15P8YMIwqoUYib7Q=; b=rsuiRTO3w99BT8aIhqYIWvfFMGnMf93myEgMMR2nhFT8tF+Cr/2ZKoHtdN4R/I4N6q zo/3wAM7H5G3neGoCzZiQJwSlrGu8uGVJ/1GhdFVibUTuoiAEmYpOTfU+YPlysDO36/X 7SlnhpH2D9Py6CqHYY3Cmu40cZt3OMF3ibTff4J6EDw10vNJp4XMavZWpgcgeXKhOvxX IOw6oms6Wh2Smu8EmULjRbssMan/oj/7I5kOqEXHh/Q/miIIbj+PhJlY821Mk/hAiAwT mnX27ZlybiCsSFeCcLawYBwSX0McifXB83AZFXueyaduPhtqrIVcK8nN+LdN+4UMcZ7P Ey+w== 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 y4si41777710pgv.154.2019.04.17.00.57.09; Wed, 17 Apr 2019 00:57:24 -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 S1731171AbfDQHzB (ORCPT + 99 others); Wed, 17 Apr 2019 03:55:01 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:33927 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726895AbfDQHy7 (ORCPT ); Wed, 17 Apr 2019 03:54:59 -0400 X-Originating-IP: 90.88.160.238 Received: from localhost (aaubervilliers-681-1-42-238.w90-88.abo.wanadoo.fr [90.88.160.238]) (Authenticated sender: maxime.ripard@bootlin.com) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id D6484E000F; Wed, 17 Apr 2019 07:54:54 +0000 (UTC) From: Maxime Ripard To: Daniel Vetter , David Airlie , Maarten Lankhorst , Sean Paul , Maxime Ripard , Mauro Carvalho Chehab Cc: Sakari Ailus , Hans Verkuil , Laurent Pinchart , Thomas Petazzoni , Paul Kocialkowski , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH 00/20] drm: Split out the formats API and move it to a common place Date: Wed, 17 Apr 2019 09:54:26 +0200 Message-Id: X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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, 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 -- git-series 0.9.1