On Fri, 4 Aug 2023 at 16:44, Sebastian Wick <sebastian.wick@xxxxxxxxxx> wrote: > > On Fri, Aug 4, 2023 at 3:27 PM Dmitry Baryshkov > <dmitry.baryshkov@xxxxxxxxxx> wrote: > > > > On Fri, 28 Jul 2023 at 20:03, Jessica Zhang <quic_jesszhan@xxxxxxxxxxx> 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@xxxxxxxxxxx> > > > --- > > > 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. > > The only reason I see against this is that there might be some > hardware which supports only RGB but not alpha on planes and they > could then not use this property. Fair enough. > Maybe another COLOR_FILL enum value > with alpha might be better? Maybe just doing the alpha via the alpha > property is good enough. One of our customers has a use case for setting the opaque solid fill, while keeping the plane's alpha intact. -- With best wishes Dmitry