lkml.org 
[lkml]   [2023]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH RFC v5 02/10] drm: Introduce solid fill DRM plane property
    From


    On 8/4/2023 6:27 AM, Dmitry Baryshkov wrote:
    > On Fri, 28 Jul 2023 at 20:03, Jessica Zhang <quic_jesszhan@quicinc.com> wrote:
    >>
    >> Document and add support for solid_fill property to drm_plane. In
    >> addition, add support for setting and getting the values for solid_fill.
    >>
    >> To enable solid fill planes, userspace must assign a property blob to
    >> the "solid_fill" plane property containing the following information:
    >>
    >> struct drm_mode_solid_fill {
    >> u32 version;
    >> u32 r, g, b;
    >> };
    >>
    >> Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com>
    >> ---
    >> drivers/gpu/drm/drm_atomic_state_helper.c | 9 +++++
    >> drivers/gpu/drm/drm_atomic_uapi.c | 55 +++++++++++++++++++++++++++++++
    >> drivers/gpu/drm/drm_blend.c | 30 +++++++++++++++++
    >> include/drm/drm_blend.h | 1 +
    >> include/drm/drm_plane.h | 35 ++++++++++++++++++++
    >> include/uapi/drm/drm_mode.h | 24 ++++++++++++++
    >> 6 files changed, 154 insertions(+)
    >>
    >
    > [skipped most of the patch]
    >
    >> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
    >> index 43691058d28f..53c8efa5ad7f 100644
    >> --- a/include/uapi/drm/drm_mode.h
    >> +++ b/include/uapi/drm/drm_mode.h
    >> @@ -259,6 +259,30 @@ struct drm_mode_modeinfo {
    >> char name[DRM_DISPLAY_MODE_LEN];
    >> };
    >>
    >> +/**
    >> + * struct drm_mode_solid_fill - User info for solid fill planes
    >> + *
    >> + * This is the userspace API solid fill information structure.
    >> + *
    >> + * Userspace can enable solid fill planes by assigning the plane "solid_fill"
    >> + * property to a blob containing a single drm_mode_solid_fill struct populated with an RGB323232
    >> + * color and setting the pixel source to "SOLID_FILL".
    >> + *
    >> + * For information on the plane property, see drm_plane_create_solid_fill_property()
    >> + *
    >> + * @version: Version of the blob. Currently, there is only support for version == 1
    >> + * @r: Red color value of single pixel
    >> + * @g: Green color value of single pixel
    >> + * @b: Blue color value of single pixel
    >> + */
    >> +struct drm_mode_solid_fill {
    >> + __u32 version;
    >> + __u32 r;
    >> + __u32 g;
    >> + __u32 b;
    >
    > Another thought about the drm_mode_solid_fill uABI. I still think we
    > should add alpha here. The reason is the following:
    >
    > It is true that we have drm_plane_state::alpha and the plane's
    > "alpha" property. However it is documented as "the plane-wide opacity
    > [...] It can be combined with pixel alpha. The pixel values in the
    > framebuffers are expected to not be pre-multiplied by the global alpha
    > associated to the plane.".
    >
    > I can imagine a use case, when a user might want to enable plane-wide
    > opacity, set "pixel blend mode" to "Coverage" and then switch between
    > partially opaque framebuffer and partially opaque solid-fill without
    > touching the plane's alpha value.

    Hi Dmitry,

    I don't really agree that adding a solid fill alpha would be a good
    idea. Since the intent behind solid fill is to have a single color for
    the entire plane, I think it makes more sense to have solid fill rely on
    the global plane alpha.

    As stated in earlier discussions, I think having both a solid_fill.alpha
    and a plane_state.alpha would be redundant and serve to confuse the user
    as to which one to set.

    Thanks,

    Jessica Zhang

    >
    > --
    > With best wishes
    > Dmitry

    \
     
     \ /
      Last update: 2023-08-07 23:42    [W:2.231 / U:0.936 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site