]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm: Add solid fill pixel source
authorJessica Zhang <quic_jesszhan@quicinc.com>
Fri, 27 Oct 2023 22:32:53 +0000 (15:32 -0700)
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Fri, 1 Dec 2023 23:56:50 +0000 (01:56 +0200)
Add "SOLID_FILL" as a valid pixel source. If the pixel_source property is
set to "SOLID_FILL", it will display data from the drm_plane "solid_fill"
blob property.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Acked-by: Sebastian Wick <sebastian@sebastianwick.net>
Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20231027-solid-fill-v7-3-780188bfa7b2@quicinc.com
drivers/gpu/drm/drm_blend.c
include/drm/drm_plane.h

index 665c5d9b056f816d80a68da8d6a40d0d66887fad..37b31b7e5ce5dde07ee9f63842266449019a583c 100644 (file)
  *     "FB":
  *             Framebuffer source set by the "FB_ID" property.
  *
+ *     "SOLID_FILL":
+ *             Solid fill color source set by the "solid_fill" property.
+ *
  * solid_fill:
  *     solid_fill is set up with drm_plane_create_solid_fill_property(). It
  *     contains pixel data that drivers can use to fill a plane.
@@ -642,6 +645,7 @@ EXPORT_SYMBOL(drm_plane_create_blend_mode_property);
 static const struct drm_prop_enum_list drm_pixel_source_enum_list[] = {
        { DRM_PLANE_PIXEL_SOURCE_NONE, "NONE" },
        { DRM_PLANE_PIXEL_SOURCE_FB, "FB" },
+       { DRM_PLANE_PIXEL_SOURCE_SOLID_FILL, "SOLID_FILL" },
 };
 
 /**
@@ -666,6 +670,9 @@ static const struct drm_prop_enum_list drm_pixel_source_enum_list[] = {
  * "FB":
  *     Framebuffer pixel source
  *
+ * "SOLID_FILL":
+ *     Solid fill color pixel source
+ *
  * Returns:
  * Zero on success, negative errno on failure.
  */
@@ -675,7 +682,8 @@ int drm_plane_create_pixel_source_property(struct drm_plane *plane,
        struct drm_device *dev = plane->dev;
        struct drm_property *prop;
        static const unsigned int valid_source_mask = BIT(DRM_PLANE_PIXEL_SOURCE_FB) |
-                                                     BIT(DRM_PLANE_PIXEL_SOURCE_NONE);
+                                                     BIT(DRM_PLANE_PIXEL_SOURCE_NONE) |
+                                                     BIT(DRM_PLANE_PIXEL_SOURCE_SOLID_FILL);
        int i;
 
        /* FB is supported by default */
index 5bac644d4cc3405be78b7b522a02bf01208de16c..4b7af4381bbe4ffa2a14e2b84719b608807d945e 100644 (file)
@@ -43,6 +43,7 @@ enum drm_scaling_filter {
 enum drm_plane_pixel_source {
        DRM_PLANE_PIXEL_SOURCE_NONE,
        DRM_PLANE_PIXEL_SOURCE_FB,
+       DRM_PLANE_PIXEL_SOURCE_SOLID_FILL,
        DRM_PLANE_PIXEL_SOURCE_MAX
 };