Re: [PATCH] drm: Document the alpha blending rules

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 22, 2018 at 11:14:17AM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> 
> Document the fact that the use of a framebuffer with alpha implies
> pre-multipled alpha blending, and that the crtc background color
> is assumed to be black.
> 
> Not sure drm_fourcc.h is the best place for the uapi docs, but
> couldn't think of anything better really.

I started to documented the plane blending rules in the docs for atomic
properties:

https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#plane-composition-properties

It already mentions that the background color is black:

"Note that all the property extensions described here apply either to the
plane or the CRTC (e.g. for the background color, which currently is not
exposed and assumed to be black)."

Iirc the alpha property patches will add more docs in this area and
clarify all the blending rules a bit more.

> Cc: Mario Kleiner <mario.kleiner.de@xxxxxxxxx>
> Cc: Stefan Schake <stschake@xxxxxxxxx>
> Cc: Eric Anholt <eric@xxxxxxxxxx>
> Cc: Adrian Salido <salidoa@xxxxxxxxxx>
> Cc: Sean Paul <seanpaul@xxxxxxxxxxxx>
> Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> ---
>  drivers/gpu/drm/drm_plane.c   | 6 ++++++
>  include/uapi/drm/drm_fourcc.h | 7 +++++++
>  2 files changed, 13 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index 143041666096..21e3a560811d 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -48,6 +48,12 @@
>   *
>   * The type of a plane is exposed in the immutable "type" enumeration property,
>   * which has one of the following values: "Overlay", "Primary", "Cursor".
> + *
> + * Use of a framebuffer with alpha implies that the plane will use
> + * pre-multiplied alpha blending: Dc = Sc + (1.0 - Sa) * Dc,
> + * where Sa is source alpha, Sc is source color, and Dc is destination
> + * color. The crtc background color below all the planes is assumed to
> + * be black.

Maybe we just need to add a sphinx link to the plane composition
properties section here? Since kerneldoc is just plain rst we can do this.

>   */
>  
>  static unsigned int drm_num_planes(struct drm_device *dev)
> diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h
> index e04613d30a13..8b889a6adcd4 100644
> --- a/include/uapi/drm/drm_fourcc.h
> +++ b/include/uapi/drm/drm_fourcc.h
> @@ -35,6 +35,13 @@ extern "C" {
>  
>  #define DRM_FORMAT_BIG_ENDIAN (1<<31) /* format is big endian instead of little endian */
>  
> +/*
> + * Note that using any format with alpha (A) implies pre-multiplied
> + * alpha blending: Dc = Sc + (1.0 - Sa) * Dc, where Sa is source alpha,
> + * Sc is source color, and Dc is destination color. The crtc background
> + * color below all the planes is assumed to be black.
> + */

This sounds like perfect fodder for a DOC overview section for
drm_fourcc.[hc]. We already include the function docs into the overall
kerneldoc.
-Daniel

> +
>  /* color index */
>  #define DRM_FORMAT_C8		fourcc_code('C', '8', ' ', ' ') /* [7:0] C */
>  
> -- 
> 2.16.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux