• Lowry Li's avatar
    drm: Add per-plane pixel blend mode property · a5ec8332
    Lowry Li authored
    Pixel blend modes represent the alpha blending equation
    selection, describing how the pixels from the current
    plane are composited with the background.
    
    Adds a pixel_blend_mode to drm_plane_state and a
    blend_mode_property to drm_plane, and related support
    functions.
    
    Defines three blend modes in drm_blend.h.
    
    Changes since v1:
     - Moves the blending equation into the DOC comment
     - Refines the comments of drm_plane_create_blend_mode_property to not
       enumerate the #defines, but instead the string values
     - Uses fg.* instead of pixel.* and plane_alpha instead of plane.alpha
    Changes since v2:
     - Refines the comments of drm_plane_create_blend_mode_property:
          1) Puts the descriptions (after the ":") on a new line
          2) Adds explaining why @supported_modes need PREMUL as default
    Changes since v3:
     - Refines drm_plane_create_blend_mode_property(). drm_property_add_enum()
       can calculate the index itself just fine, so no point in having the
       caller pass it in.
     - Since the current DRM assumption is that alpha is premultiplied
       as default, define DRM_MODE_BLEND_PREMULTI as 0 will be better.
     - Refines some comments.
    Changes since v4:
     - Adds comments in drm_blend.h.
     - Removes setting default value in drm_plane_create_blend_mode_property()
       as it is already in __drm_atomic_helper_plane_reset().
     - Fixes to use state->pixel_blend_mode instead of using
       plane->state->pixel_blend_mode in reset function.
     - Rebases on drm-misc-next.
    Reviewed-by: default avatarLiviu Dudau <liviu.dudau@arm.com>
    Signed-off-by: default avatarLowry Li <lowry.li@arm.com>
    Signed-off-by: default avatarAyan Kumar Halder <ayan.halder@arm.com>
    Reviewed-by: default avatarSean Paul <seanpaul@chromium.org>
    Link: https://patchwork.freedesktop.org/patch/245734/
    a5ec8332
drm_atomic_helper.c 119 KB