All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: dri-devel@lists.freedesktop.org
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>,
	Chen-Yu Tsai <wens@csie.org>,
	Daniel Vetter <daniel.vetter@intel.com>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Sean Paul <seanpaul@chromium.org>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, thomas@vitsch.nl
Subject: Re: [PATCH 06/19] drm/blend: Add a generic alpha property
Date: Tue, 09 Jan 2018 14:34:47 +0200	[thread overview]
Message-ID: <2691997.qmgyvrLtFu@avalon> (raw)
In-Reply-To: <5c765fc730d75cb362dc37bcdb3b3aeacc7bdb30.1515494838.git-series.maxime.ripard@free-electrons.com>

Hi Maxime,

Thank you for the patch.

On Tuesday, 9 January 2018 12:56:25 EET Maxime Ripard wrote:
> Some drivers duplicate the logic to create a property to store a per-plane
> alpha.
> 
> Let's create a helper in order to move that to the core.
> 
> Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
>  Documentation/gpu/kms-properties.csv |  2 +-
>  drivers/gpu/drm/drm_atomic.c         |  4 ++++-
>  drivers/gpu/drm/drm_atomic_helper.c  |  1 +-
>  drivers/gpu/drm/drm_blend.c          | 32 +++++++++++++++++++++++++++++-
>  include/drm/drm_blend.h              |  1 +-
>  include/drm/drm_plane.h              |  6 +++++-
>  6 files changed, 45 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/gpu/kms-properties.csv
> b/Documentation/gpu/kms-properties.csv index 927b65e14219..a3c3969c1992
> 100644
> --- a/Documentation/gpu/kms-properties.csv
> +++ b/Documentation/gpu/kms-properties.csv
> @@ -99,5 +99,5 @@ radeon,DVI-I,“coherent”,RANGE,"Min=0, Max=1",Connector,TBD
> ,,"""underscan vborder""",RANGE,"Min=0, Max=128",Connector,TBD
>  ,Audio,“audio”,ENUM,"{ ""off"", ""on"", ""auto"" }",Connector,TBD
>  ,FMT Dithering,“dither”,ENUM,"{ ""off"", ""on"" }",Connector,TBD
> -rcar-du,Generic,"""alpha""",RANGE,"Min=0, Max=255",Plane,TBD
> +,,"""alpha""",RANGE,"Min=0, Max=255",Plane,Opacity of the plane from
> transparent (0) to opaque (255) ,,"""colorkey""",RANGE,"Min=0,
> Max=0x01ffffff",Plane,TBD

I think more documentation is needed. You should explain how the property 
operates and which formats it is applicable to. For instance you need to 
clarify what happens for format that contain an alpha component.

> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> index c2da5585e201..ade18cf62c89 100644
> --- a/drivers/gpu/drm/drm_atomic.c
> +++ b/drivers/gpu/drm/drm_atomic.c
> @@ -749,6 +749,8 @@ static int drm_atomic_plane_set_property(struct
> drm_plane *plane, state->src_w = val;
>  	} else if (property == config->prop_src_h) {
>  		state->src_h = val;
> +	} else if (property == plane->alpha_property) {
> +		state->alpha = val;
>  	} else if (property == plane->rotation_property) {
>  		if (!is_power_of_2(val & DRM_MODE_ROTATE_MASK))
>  			return -EINVAL;
> @@ -810,6 +812,8 @@ drm_atomic_plane_get_property(struct drm_plane *plane,
>  		*val = state->src_w;
>  	} else if (property == config->prop_src_h) {
>  		*val = state->src_h;
> +	} else if (property == plane->alpha_property) {
> +		*val = state->alpha;
>  	} else if (property == plane->rotation_property) {
>  		*val = state->rotation;
>  	} else if (property == plane->zpos_property) {
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c
> b/drivers/gpu/drm/drm_atomic_helper.c index 71d712f1b56a..018993df4c18
> 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -3372,6 +3372,7 @@ void drm_atomic_helper_plane_reset(struct drm_plane
> *plane)
> 
>  	if (plane->state) {
>  		plane->state->plane = plane;
> +		plane->state->alpha = 255;

If you keep the ability to select an initial value other than fully opaque 
(see my comment below about that) you should reset to that value instead of 
hardcoding 255.

>  		plane->state->rotation = DRM_MODE_ROTATE_0;
>  	}
>  }
> diff --git a/drivers/gpu/drm/drm_blend.c b/drivers/gpu/drm/drm_blend.c
> index 2e5e089dd912..8eea2a8af458 100644
> --- a/drivers/gpu/drm/drm_blend.c
> +++ b/drivers/gpu/drm/drm_blend.c
> @@ -104,6 +104,38 @@
>   */
> 
>  /**
> + * drm_plane_create_alpha_property - create a new alpha property
> + * @plane: drm plane
> + * @alpha: initial value of alpha, from 0 (transparent) to 255 (opaque)

Do you have a use case for initializing the alpha value to something else than 
fully opaque ?

> + * This function initializes a generic, mutable, alpha property and
> + * enables support for it in the DRM core.
> + *
> + * Drivers can then attach this property to their plane to enable
> + * support for configurable plane alpha.

The function attaches the property to the plane, is the documentation outdated 
?

> + * Returns:
> + * 0 on success, negative error code on failure.
> + */
> +int drm_plane_create_alpha_property(struct drm_plane *plane, u8 alpha)
> +{
> +	struct drm_property *prop;
> +
> +	prop = drm_property_create_range(plane->dev, 0, "alpha", 0, 255);

Do you think the 0-255 range will fit all use cases ?

> +	if (!prop)
> +		return -ENOMEM;
> +
> +	drm_object_attach_property(&plane->base, prop, alpha);
> +	plane->alpha_property = prop;
> +
> +	if (plane->state)
> +		plane->state->alpha = alpha;
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL(drm_plane_create_alpha_property);
> +
> +/**
>   * drm_plane_create_rotation_property - create a new rotation property
>   * @plane: drm plane
>   * @rotation: initial value of the rotation property
> diff --git a/include/drm/drm_blend.h b/include/drm/drm_blend.h
> index 17606026590b..5979a8fce453 100644
> --- a/include/drm/drm_blend.h
> +++ b/include/drm/drm_blend.h
> @@ -36,6 +36,7 @@ static inline bool drm_rotation_90_or_270(unsigned int
> rotation) return rotation & (DRM_MODE_ROTATE_90 | DRM_MODE_ROTATE_270);
>  }
> 
> +int drm_plane_create_alpha_property(struct drm_plane *plane, u8 alpha);
>  int drm_plane_create_rotation_property(struct drm_plane *plane,
>  				       unsigned int rotation,
>  				       unsigned int supported_rotations);
> diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
> index 571615079230..a5e26064b132 100644
> --- a/include/drm/drm_plane.h
> +++ b/include/drm/drm_plane.h
> @@ -42,6 +42,7 @@ struct drm_modeset_acquire_ctx;
>   *	plane (in 16.16)
>   * @src_w: width of visible portion of plane (in 16.16)
>   * @src_h: height of visible portion of plane (in 16.16)
> + * @alpha: opacity of the plane
>   * @rotation: rotation of the plane
>   * @zpos: priority of the given plane on crtc (optional)
>   *	Note that multiple active planes on the same crtc can have an identical
> @@ -105,6 +106,9 @@ struct drm_plane_state {
>  	uint32_t src_x, src_y;
>  	uint32_t src_h, src_w;
> 
> +	/* Plane opacity */
> +	u8 alpha;
> +
>  	/* Plane rotation */
>  	unsigned int rotation;
> 
> @@ -481,6 +485,7 @@ enum drm_plane_type {
>   * @funcs: helper functions
>   * @properties: property tracking for this plane
>   * @type: type of plane (overlay, primary, cursor)
> + * @alpha_property: alpha property for this plane
>   * @zpos_property: zpos property for this plane
>   * @rotation_property: rotation property for this plane
>   * @helper_private: mid-layer private data
> @@ -546,6 +551,7 @@ struct drm_plane {
>  	 */
>  	struct drm_plane_state *state;
> 
> +	struct drm_property *alpha_property;
>  	struct drm_property *zpos_property;
>  	struct drm_property *rotation_property;
>  };

-- 
Regards,

Laurent Pinchart

WARNING: multiple messages have this Message-ID (diff)
From: laurent.pinchart@ideasonboard.com (Laurent Pinchart)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 06/19] drm/blend: Add a generic alpha property
Date: Tue, 09 Jan 2018 14:34:47 +0200	[thread overview]
Message-ID: <2691997.qmgyvrLtFu@avalon> (raw)
In-Reply-To: <5c765fc730d75cb362dc37bcdb3b3aeacc7bdb30.1515494838.git-series.maxime.ripard@free-electrons.com>

Hi Maxime,

Thank you for the patch.

On Tuesday, 9 January 2018 12:56:25 EET Maxime Ripard wrote:
> Some drivers duplicate the logic to create a property to store a per-plane
> alpha.
> 
> Let's create a helper in order to move that to the core.
> 
> Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
>  Documentation/gpu/kms-properties.csv |  2 +-
>  drivers/gpu/drm/drm_atomic.c         |  4 ++++-
>  drivers/gpu/drm/drm_atomic_helper.c  |  1 +-
>  drivers/gpu/drm/drm_blend.c          | 32 +++++++++++++++++++++++++++++-
>  include/drm/drm_blend.h              |  1 +-
>  include/drm/drm_plane.h              |  6 +++++-
>  6 files changed, 45 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/gpu/kms-properties.csv
> b/Documentation/gpu/kms-properties.csv index 927b65e14219..a3c3969c1992
> 100644
> --- a/Documentation/gpu/kms-properties.csv
> +++ b/Documentation/gpu/kms-properties.csv
> @@ -99,5 +99,5 @@ radeon,DVI-I,?coherent?,RANGE,"Min=0, Max=1",Connector,TBD
> ,,"""underscan vborder""",RANGE,"Min=0, Max=128",Connector,TBD
>  ,Audio,?audio?,ENUM,"{ ""off"", ""on"", ""auto"" }",Connector,TBD
>  ,FMT Dithering,?dither?,ENUM,"{ ""off"", ""on"" }",Connector,TBD
> -rcar-du,Generic,"""alpha""",RANGE,"Min=0, Max=255",Plane,TBD
> +,,"""alpha""",RANGE,"Min=0, Max=255",Plane,Opacity of the plane from
> transparent (0) to opaque (255) ,,"""colorkey""",RANGE,"Min=0,
> Max=0x01ffffff",Plane,TBD

I think more documentation is needed. You should explain how the property 
operates and which formats it is applicable to. For instance you need to 
clarify what happens for format that contain an alpha component.

> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> index c2da5585e201..ade18cf62c89 100644
> --- a/drivers/gpu/drm/drm_atomic.c
> +++ b/drivers/gpu/drm/drm_atomic.c
> @@ -749,6 +749,8 @@ static int drm_atomic_plane_set_property(struct
> drm_plane *plane, state->src_w = val;
>  	} else if (property == config->prop_src_h) {
>  		state->src_h = val;
> +	} else if (property == plane->alpha_property) {
> +		state->alpha = val;
>  	} else if (property == plane->rotation_property) {
>  		if (!is_power_of_2(val & DRM_MODE_ROTATE_MASK))
>  			return -EINVAL;
> @@ -810,6 +812,8 @@ drm_atomic_plane_get_property(struct drm_plane *plane,
>  		*val = state->src_w;
>  	} else if (property == config->prop_src_h) {
>  		*val = state->src_h;
> +	} else if (property == plane->alpha_property) {
> +		*val = state->alpha;
>  	} else if (property == plane->rotation_property) {
>  		*val = state->rotation;
>  	} else if (property == plane->zpos_property) {
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c
> b/drivers/gpu/drm/drm_atomic_helper.c index 71d712f1b56a..018993df4c18
> 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -3372,6 +3372,7 @@ void drm_atomic_helper_plane_reset(struct drm_plane
> *plane)
> 
>  	if (plane->state) {
>  		plane->state->plane = plane;
> +		plane->state->alpha = 255;

If you keep the ability to select an initial value other than fully opaque 
(see my comment below about that) you should reset to that value instead of 
hardcoding 255.

>  		plane->state->rotation = DRM_MODE_ROTATE_0;
>  	}
>  }
> diff --git a/drivers/gpu/drm/drm_blend.c b/drivers/gpu/drm/drm_blend.c
> index 2e5e089dd912..8eea2a8af458 100644
> --- a/drivers/gpu/drm/drm_blend.c
> +++ b/drivers/gpu/drm/drm_blend.c
> @@ -104,6 +104,38 @@
>   */
> 
>  /**
> + * drm_plane_create_alpha_property - create a new alpha property
> + * @plane: drm plane
> + * @alpha: initial value of alpha, from 0 (transparent) to 255 (opaque)

Do you have a use case for initializing the alpha value to something else than 
fully opaque ?

> + * This function initializes a generic, mutable, alpha property and
> + * enables support for it in the DRM core.
> + *
> + * Drivers can then attach this property to their plane to enable
> + * support for configurable plane alpha.

The function attaches the property to the plane, is the documentation outdated 
?

> + * Returns:
> + * 0 on success, negative error code on failure.
> + */
> +int drm_plane_create_alpha_property(struct drm_plane *plane, u8 alpha)
> +{
> +	struct drm_property *prop;
> +
> +	prop = drm_property_create_range(plane->dev, 0, "alpha", 0, 255);

Do you think the 0-255 range will fit all use cases ?

> +	if (!prop)
> +		return -ENOMEM;
> +
> +	drm_object_attach_property(&plane->base, prop, alpha);
> +	plane->alpha_property = prop;
> +
> +	if (plane->state)
> +		plane->state->alpha = alpha;
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL(drm_plane_create_alpha_property);
> +
> +/**
>   * drm_plane_create_rotation_property - create a new rotation property
>   * @plane: drm plane
>   * @rotation: initial value of the rotation property
> diff --git a/include/drm/drm_blend.h b/include/drm/drm_blend.h
> index 17606026590b..5979a8fce453 100644
> --- a/include/drm/drm_blend.h
> +++ b/include/drm/drm_blend.h
> @@ -36,6 +36,7 @@ static inline bool drm_rotation_90_or_270(unsigned int
> rotation) return rotation & (DRM_MODE_ROTATE_90 | DRM_MODE_ROTATE_270);
>  }
> 
> +int drm_plane_create_alpha_property(struct drm_plane *plane, u8 alpha);
>  int drm_plane_create_rotation_property(struct drm_plane *plane,
>  				       unsigned int rotation,
>  				       unsigned int supported_rotations);
> diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
> index 571615079230..a5e26064b132 100644
> --- a/include/drm/drm_plane.h
> +++ b/include/drm/drm_plane.h
> @@ -42,6 +42,7 @@ struct drm_modeset_acquire_ctx;
>   *	plane (in 16.16)
>   * @src_w: width of visible portion of plane (in 16.16)
>   * @src_h: height of visible portion of plane (in 16.16)
> + * @alpha: opacity of the plane
>   * @rotation: rotation of the plane
>   * @zpos: priority of the given plane on crtc (optional)
>   *	Note that multiple active planes on the same crtc can have an identical
> @@ -105,6 +106,9 @@ struct drm_plane_state {
>  	uint32_t src_x, src_y;
>  	uint32_t src_h, src_w;
> 
> +	/* Plane opacity */
> +	u8 alpha;
> +
>  	/* Plane rotation */
>  	unsigned int rotation;
> 
> @@ -481,6 +485,7 @@ enum drm_plane_type {
>   * @funcs: helper functions
>   * @properties: property tracking for this plane
>   * @type: type of plane (overlay, primary, cursor)
> + * @alpha_property: alpha property for this plane
>   * @zpos_property: zpos property for this plane
>   * @rotation_property: rotation property for this plane
>   * @helper_private: mid-layer private data
> @@ -546,6 +551,7 @@ struct drm_plane {
>  	 */
>  	struct drm_plane_state *state;
> 
> +	struct drm_property *alpha_property;
>  	struct drm_property *zpos_property;
>  	struct drm_property *rotation_property;
>  };

-- 
Regards,

Laurent Pinchart

  parent reply	other threads:[~2018-01-09 12:34 UTC|newest]

Thread overview: 125+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-09 10:56 [PATCH 00/19] drm/sun4i: Support more planes, zpos and plane-wide alpha Maxime Ripard
2018-01-09 10:56 ` Maxime Ripard
2018-01-09 10:56 ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 01/19] drm/fourcc: Add a function to tell if the format embeds alpha Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:26   ` Boris Brezillon
2018-01-09 12:26     ` Boris Brezillon
2018-01-09 12:29   ` Laurent Pinchart
2018-01-09 12:29     ` Laurent Pinchart
2018-01-09 12:29     ` Laurent Pinchart
2018-01-09 13:28     ` Maxime Ripard
2018-01-09 13:28       ` Maxime Ripard
2018-01-09 13:28       ` Maxime Ripard
2018-01-15 15:47       ` Ayan Halder
2018-01-15 15:47         ` Ayan Halder
2018-01-15 15:47         ` Ayan Halder
2018-01-16 20:17         ` Maxime Ripard
2018-01-17 17:55           ` Ayan Halder
2018-01-16 10:37       ` Ayan Halder
2018-01-16 10:37         ` Ayan Halder
2018-01-09 10:56 ` [PATCH 02/19] drm/atmel-hlcdc: Use the alpha format helper Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:27   ` Boris Brezillon
2018-01-09 12:27     ` Boris Brezillon
2018-01-09 12:27     ` Boris Brezillon
2018-01-09 10:56 ` [PATCH 03/19] drm/exynos: " Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-12  1:20   ` Inki Dae
2018-01-12  1:20     ` Inki Dae
2018-01-09 10:56 ` [PATCH 04/19] drm/rockchip: " Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-16  0:42   ` Sandy Huang
2018-01-16  0:42     ` Sandy Huang
2018-01-16  0:42     ` Sandy Huang
2018-01-09 10:56 ` [PATCH 05/19] drm/vc4: " Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:34   ` Daniel Vetter
2018-01-09 12:34     ` Daniel Vetter
2018-01-09 12:34     ` Daniel Vetter
2018-01-09 17:34   ` Eric Anholt
2018-01-09 17:34     ` Eric Anholt
2018-01-09 17:34     ` Eric Anholt
2018-01-09 10:56 ` [PATCH 06/19] drm/blend: Add a generic alpha property Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:31   ` Boris Brezillon
2018-01-09 12:31     ` Boris Brezillon
2018-01-09 12:31     ` Boris Brezillon
2018-01-09 12:32   ` Daniel Vetter
2018-01-09 12:32     ` Daniel Vetter
2018-01-09 12:32     ` Daniel Vetter
2018-01-09 13:53     ` Maxime Ripard
2018-01-09 13:53       ` Maxime Ripard
2018-01-09 13:53       ` Maxime Ripard
2018-01-09 14:28       ` Daniel Vetter
2018-01-09 14:28         ` Daniel Vetter
2018-01-09 14:28         ` Daniel Vetter
2018-01-11 15:58         ` Maxime Ripard
2018-01-11 15:58           ` Maxime Ripard
2018-01-11 15:58           ` Maxime Ripard
2018-01-11 16:36           ` Daniel Vetter
2018-01-11 16:36             ` Daniel Vetter
2018-01-11 16:36             ` Daniel Vetter
2018-01-11 18:34             ` Laurent Pinchart
2018-01-11 18:34               ` Laurent Pinchart
2018-01-11 18:34               ` Laurent Pinchart
2018-01-17  9:20               ` Maxime Ripard
2018-01-17  9:20                 ` Maxime Ripard
2018-01-17  9:20                 ` Maxime Ripard
2018-01-17  9:30                 ` Daniel Vetter
2018-01-17  9:30                   ` Daniel Vetter
2018-01-17  9:30                   ` Daniel Vetter
2018-01-09 12:34   ` Laurent Pinchart [this message]
2018-01-09 12:34     ` Laurent Pinchart
2018-01-09 13:59     ` Maxime Ripard
2018-01-09 13:59       ` Maxime Ripard
2018-01-09 13:59       ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 07/19] drm/atmel-hclcdc: Convert to the new " Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:31   ` Boris Brezillon
2018-01-09 12:31     ` Boris Brezillon
2018-01-09 12:31     ` Boris Brezillon
2018-01-09 10:56 ` [PATCH 08/19] drm/rcar-du: " Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:37   ` Laurent Pinchart
2018-01-09 12:37     ` Laurent Pinchart
2018-01-09 12:37     ` Laurent Pinchart
2018-01-09 10:56 ` [PATCH 09/19] drm/sun4i: backend: Fix structure indentation Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 10/19] drm/sun4i: backend: Fix define typo Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 11/19] drm/sun4i: framebuffer: Add a custom atomic_check Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 12/19] drm/sun4i: backend: Move the coord function in the shared part Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 13/19] drm/sun4i: backend: Set a default zpos in our reset hook Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 14/19] drm/sun4i: backend: Add support for zpos Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 15/19] drm/sun4i: backend: Check for the number of alpha planes Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 16/19] drm/sun4i: backend: Assign the pipes automatically Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 17/19] drm/sun4i: backend: Make zpos configurable Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 18/19] drm/sun4i: Add support for plane alpha Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 19/19] drm/sun4i: backend: Remove ARGB spoofing Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard

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=2691997.qmgyvrLtFu@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=boris.brezillon@free-electrons.com \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maxime.ripard@free-electrons.com \
    --cc=seanpaul@chromium.org \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=thomas@vitsch.nl \
    --cc=wens@csie.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 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.