dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Paul Kocialkowski <paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Cc: Maarten Lankhorst
	<maarten.lankhorst-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	Maxime Ripard
	<maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>,
	Sean Paul <sean-p7yTbzM4H96eqtR555YLDQ@public.gmane.org>,
	David Airlie <airlied-cv59FeDIM0c@public.gmane.org>,
	Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
	Thomas Petazzoni
	<thomas.petazzoni-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
	Daniel Vetter <daniel-/w4YWyX8dFk@public.gmane.org>,
	Paul Kocialkowski
	<paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
Subject: [PATCH v2 10/43] drm/fourcc: Add format helpers for checking YUV planes disposition
Date: Fri, 23 Nov 2018 10:24:42 +0100	[thread overview]
Message-ID: <20181123092515.2511-11-paul.kocialkowski@bootlin.com> (raw)
In-Reply-To: <20181123092515.2511-1-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>

This introduces new format helpers that use the previously-introduced
format info helpers for checking YUV planes disposition.

Only the format fourcc is required by these helpers and the formats are
iterated from the list.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
---
 drivers/gpu/drm/drm_fourcc.c | 60 ++++++++++++++++++++++++++++++++++++
 include/drm/drm_fourcc.h     |  3 ++
 2 files changed, 63 insertions(+)

diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
index f85650c3463a..b56e773f9f63 100644
--- a/drivers/gpu/drm/drm_fourcc.c
+++ b/drivers/gpu/drm/drm_fourcc.c
@@ -432,6 +432,66 @@ bool drm_format_is_yuv(uint32_t format)
 }
 EXPORT_SYMBOL(drm_format_is_yuv);
 
+/**
+ * drm_format_is_yuv_packed - check that the format is a YUV format with data
+ * laid in a single plane
+ * @format: pixel format
+ *
+ * Returns:
+ * A boolean indicating whether the format is a packed YUV format
+ */
+bool drm_format_is_yuv_packed(uint32_t format)
+{
+	const struct drm_format_info *info;
+
+	info = drm_format_info(format);
+	if (!info)
+		return false;
+
+	return drm_format_info_is_yuv_packed(info);
+}
+EXPORT_SYMBOL(drm_format_is_yuv_packed);
+
+/**
+ * drm_format_is_yuv_semiplanar - check that the format is a YUV format with
+ * data laid in two planes (luminance and chrominance)
+ * @format: pixel format
+ *
+ * Returns:
+ * A boolean indicating whether the format is a semiplanar YUV format
+ */
+bool drm_format_is_yuv_semiplanar(uint32_t format)
+{
+	const struct drm_format_info *info;
+
+	info = drm_format_info(format);
+	if (!info)
+		return false;
+
+	return drm_format_info_is_yuv_semiplanar(info);
+}
+EXPORT_SYMBOL(drm_format_is_yuv_semiplanar);
+
+/**
+ * drm_format_is_yuv_planar - check that the format is a YUV format with data
+ * laid in three planes (one for each YUV component)
+ * @format: pixel format
+ *
+ * Returns:
+ * A boolean indicating whether the format is a planar YUV format
+ */
+bool drm_format_is_yuv_planar(uint32_t format)
+{
+	const struct drm_format_info *info;
+
+	info = drm_format_info(format);
+	if (!info)
+		return false;
+
+	return drm_format_info_is_yuv_planar(info);
+}
+EXPORT_SYMBOL(drm_format_is_yuv_planar);
+
 /**
  * drm_format_info_block_width - width in pixels of block.
  * @info: pixel format info
diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h
index f43d5ba412fb..b652b711df1a 100644
--- a/include/drm/drm_fourcc.h
+++ b/include/drm/drm_fourcc.h
@@ -200,6 +200,9 @@ int drm_format_vert_chroma_subsampling(uint32_t format);
 int drm_format_plane_width(int width, uint32_t format, int plane);
 int drm_format_plane_height(int height, uint32_t format, int plane);
 bool drm_format_is_yuv(uint32_t format);
+bool drm_format_is_yuv_packed(uint32_t format);
+bool drm_format_is_yuv_semiplanar(uint32_t format);
+bool drm_format_is_yuv_planar(uint32_t format);
 unsigned int drm_format_info_block_width(const struct drm_format_info *info,
 					 int plane);
 unsigned int drm_format_info_block_height(const struct drm_format_info *info,
-- 
2.19.1

  parent reply	other threads:[~2018-11-23  9:24 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-23  9:24 [PATCH v2 00/43] drm/sun4i: Support for linear and tiled YUV formats with the frontend Paul Kocialkowski
2018-11-23  9:24 ` [PATCH v2 03/43] drm/sun4i: Add TODO comment about supporting scaling with the backend Paul Kocialkowski
2018-11-27  8:31   ` Maxime Ripard
2018-11-23  9:24 ` [PATCH v2 09/43] drm/fourcc: Add format info helpers for checking YUV planes disposition Paul Kocialkowski
     [not found]   ` <20181123092515.2511-10-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:49     ` Maxime Ripard
2018-11-23  9:24 ` [PATCH v2 14/43] drm/sun4i: backend: Avoid counting YUV planes that use the frontend Paul Kocialkowski
     [not found]   ` <20181123092515.2511-15-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:52     ` Maxime Ripard
     [not found] ` <20181123092515.2511-1-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-23  9:24   ` [PATCH v2 01/43] drm/sun4i: Cleanup video/YUV source before enabling a layer Paul Kocialkowski
     [not found]     ` <20181123092515.2511-2-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:31       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 02/43] drm/sun4i: frontend: Replace ARGB with XRGB as supported format Paul Kocialkowski
     [not found]     ` <20181123092515.2511-3-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:31       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 04/43] drm/sun4i: backend: Add a helper and a list for supported formats Paul Kocialkowski
     [not found]     ` <20181123092515.2511-5-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:38       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 05/43] drm/sun4i: frontend: " Paul Kocialkowski
     [not found]     ` <20181123092515.2511-6-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:38       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 06/43] drm/sun4i: backend: Refine the logic behind using the frontend Paul Kocialkowski
     [not found]     ` <20181123092515.2511-7-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:39       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 07/43] drm/sun4i: backend: Use a specific function to check if a plane is supported Paul Kocialkowski
     [not found]     ` <20181123092515.2511-8-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:41       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 08/43] drm/fourcc: Add helper to check if a format uses a YUV colorspace Paul Kocialkowski
     [not found]     ` <20181123092515.2511-9-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:49       ` Maxime Ripard
2018-11-23  9:24   ` Paul Kocialkowski [this message]
     [not found]     ` <20181123092515.2511-11-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:49       ` [PATCH v2 10/43] drm/fourcc: Add format helpers for checking YUV planes disposition Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 11/43] drm/fourcc: Add format info helpers for checking YUV sub-sampling Paul Kocialkowski
     [not found]     ` <20181123092515.2511-12-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:49       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 12/43] drm/fourcc: Add format " Paul Kocialkowski
2018-11-23 16:55     ` Ayan Halder
2018-11-23 17:23       ` Ville Syrjälä
     [not found]         ` <20181123172308.GR9144-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2018-11-26  9:03           ` Paul Kocialkowski
2018-11-23  9:24   ` [PATCH v2 13/43] drm/sun4i: backend: Use explicit fourcc helpers for packed YUV422 check Paul Kocialkowski
2018-11-27  8:51     ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 15/43] drm/sun4i: Rename sun4i_backend_layer_formats to sun4i_layer_formats Paul Kocialkowski
     [not found]     ` <20181123092515.2511-16-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:52       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 16/43] drm/sun4i: frontend: Move CSC bypass setup to format update routine Paul Kocialkowski
     [not found]     ` <20181123092515.2511-17-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:53       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 17/43] drm/sun4i: frontend: Add helpers for input data mode and pixel sequence Paul Kocialkowski
     [not found]     ` <20181123092515.2511-18-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:53       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 19/43] drm/sun4i: frontend: Determine input mode based on the number of planes Paul Kocialkowski
     [not found]     ` <20181123092515.2511-20-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:55       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 20/43] drm/sun4i: frontend: Determine input format based on colorspace Paul Kocialkowski
2018-11-23  9:24   ` [PATCH v2 21/43] drm/sun4i: frontend: Add support for the BGRX8888 input format Paul Kocialkowski
     [not found]     ` <20181123092515.2511-22-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:57       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 22/43] drm/sun4i: frontend: Add support for the BGRX8888 output format Paul Kocialkowski
     [not found]     ` <20181123092515.2511-23-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  9:04       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 23/43] drm/sun4i: backend: Detail the YUV to RGB values coding explanation Paul Kocialkowski
     [not found]     ` <20181123092515.2511-24-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:57       ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 24/43] drm/sun4i: frontend: Configure and enable YUV to RGB CSC when needed Paul Kocialkowski
2018-11-23  9:24   ` [PATCH v2 25/43] drm/sun4i: frontend: Apply format sub-sampling to CH1 dimensions Paul Kocialkowski
2018-11-27  8:58     ` Maxime Ripard
2018-11-23  9:24   ` [PATCH v2 26/43] drm/sun4i: frontend: Add support for packed YUV422 input formats Paul Kocialkowski
2018-11-23  9:24   ` [PATCH v2 27/43] drm/sun4i: frontend: Add support for semi-planar YUV " Paul Kocialkowski
     [not found]     ` <20181123092515.2511-28-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  9:00       ` Maxime Ripard
2018-11-23  9:25   ` [PATCH v2 28/43] drm/sun4i: frontend: Add support for planar " Paul Kocialkowski
2018-11-23  9:25   ` [PATCH v2 29/43] drm/sun4i: Make pitch even for GEM dumb alloc as per hardware constraint Paul Kocialkowski
2018-11-27  9:02     ` Maxime Ripard
2018-11-23  9:25   ` [PATCH v2 30/43] drm/fourcc: Add definitions for Allwinner vendor and VPU tiled format Paul Kocialkowski
     [not found]     ` <20181123092515.2511-31-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  9:02       ` Maxime Ripard
2018-11-23  9:25   ` [PATCH v2 31/43] drm/sun4i: Add a dedicated ioctl call for allocating tiled buffers Paul Kocialkowski
2018-11-23 11:30     ` Brian Starkey
     [not found]       ` <20181123113019.43vrzvj42l35el7z-cyTpl0DnfLAx1Goa8x4jbQH0AcctZ4a01BehtkLrGTY@public.gmane.org>
2018-11-23 12:52         ` Paul Kocialkowski
2018-11-27  9:03       ` Maxime Ripard
2018-11-23  9:25   ` [PATCH v2 32/43] drm/sun4i: Pass modifier to backend and frontend format support helpers Paul Kocialkowski
     [not found]     ` <20181123092515.2511-33-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  9:13       ` Maxime Ripard
2018-11-23  9:25   ` [PATCH v2 33/43] drm/sun4i: frontend: Add support for tiled YUV input mode configuration Paul Kocialkowski
2018-11-23  9:25   ` [PATCH v2 34/43] drm/sun4i: Add buffer stride and offset configuration for tiling mode Paul Kocialkowski
     [not found]     ` <20181123092515.2511-35-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  9:24       ` Maxime Ripard
2018-12-04 13:30         ` Paul Kocialkowski
2018-11-23  9:25   ` [PATCH v2 35/43] drm/sun4i: frontend: Add and use helper for checking tiling support Paul Kocialkowski
2018-11-23  9:25   ` [PATCH v2 37/43] drm/sun4i: drv: Allow framebuffer modifiers in mode config Paul Kocialkowski
2018-11-23  9:25   ` [PATCH v2 38/43] drm/sun4i: Move access control before setting the register as documented Paul Kocialkowski
     [not found]     ` <20181123092515.2511-39-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  9:26       ` Maxime Ripard
2018-11-23  9:25   ` [PATCH v2 39/43] drm/sun4i: frontend: Add a quirk structure Paul Kocialkowski
2018-11-23  9:25   ` [PATCH v2 41/43] drm/sun4i: Make COEF_RDY conditional Paul Kocialkowski
2018-11-23  9:25   ` [PATCH v2 42/43] drm/sun4i: frontend: Move the FIR filter phases to our quirks Paul Kocialkowski
2018-11-23  9:24 ` [PATCH v2 18/43] drm/sun4i: frontend: Add proper definitions for format registers Paul Kocialkowski
     [not found]   ` <20181123092515.2511-19-paul.kocialkowski-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>
2018-11-27  8:54     ` Maxime Ripard
2018-11-23  9:25 ` [PATCH v2 36/43] drm/sun4i: layer: Add tiled modifier support and helper Paul Kocialkowski
2018-11-23  9:25 ` [PATCH v2 40/43] drm/sun4i: Set the coef_rdy bit right after the coef have been set Paul Kocialkowski
2018-11-23  9:25 ` [PATCH v2 43/43] drm/sun4i: frontend: Add A20-specific device-tree compatible and quirks Paul Kocialkowski

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=20181123092515.2511-11-paul.kocialkowski@bootlin.com \
    --to=paul.kocialkowski-ldxbnhwyfcjbdgjk7y7tuq@public.gmane.org \
    --cc=airlied-cv59FeDIM0c@public.gmane.org \
    --cc=daniel-/w4YWyX8dFk@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    --cc=maarten.lankhorst-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
    --cc=sean-p7yTbzM4H96eqtR555YLDQ@public.gmane.org \
    --cc=thomas.petazzoni-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
    --cc=wens-jdAy2FN1RRM@public.gmane.org \
    /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;
as well as URLs for NNTP newsgroup(s).