mbox series

[RFC,v2,0/3] Support for Solid Fill Planes

Message ID 20221222221441.6980-1-quic_jesszhan@quicinc.com
Headers show
Series Support for Solid Fill Planes | expand

Message

Jessica Zhang Dec. 22, 2022, 10:14 p.m. UTC
Introduce and add support for a solid_fill property. When the solid_fill
property is set, and the framebuffer is set to NULL, memory fetch will be
disabled.

In addition, loosen the NULL FB checks within the atomic commit callstack
to allow a NULL FB when the solid_fill property is set and add FB checks
in methods where the FB was previously assumed to be non-NULL.

Finally, have the DPU driver use drm_plane_state.solid_fill and instead of
dpu_plane_state.color_fill, and add extra checks in the DPU atomic commit
callstack to account for a NULL FB in cases where solid_fill is set.

Some drivers support hardware that have optimizations for solid fill
planes. This series aims to expose these capabilities to userspace as
some compositors have a solid fill flag (ex. SOLID_COLOR in the Android
hardware composer HAL) that can be set by apps like the Android Gears
app.

Userspace can set the solid_fill property to a blob containing the
appropriate version number and solid fill color (in RGB323232 format) and
setting the framebuffer to NULL.

Note: Currently, there's only one version of the solid_fill blob property.
However if other drivers want to support a similar feature, but require
more than just the solid fill color, they can extend this feature by
creating additional versions of the drm_solid_fill struct.

Changes in V2:
- Dropped SOLID_FILL_FORMAT property (Simon)
- Switched to implementing solid_fill property as a blob (Simon, Dmitry)
- Changed to checks for if solid_fill_blob is set (Dmitry)
- Abstracted (plane_state && !solid_fill_blob) checks to helper method
  (Dmitry)
- Removed DPU_PLANE_COLOR_FILL_FLAG
- Fixed whitespace and indentation issues (Dmitry)

Jessica Zhang (3):
  drm: Introduce solid fill property for drm plane
  drm: Adjust atomic checks for solid fill color
  drm/msm/dpu: Use color_fill property for DPU planes

 drivers/gpu/drm/drm_atomic.c              | 69 +++++++++++++----------
 drivers/gpu/drm/drm_atomic_helper.c       | 34 ++++++-----
 drivers/gpu/drm/drm_atomic_state_helper.c |  9 +++
 drivers/gpu/drm/drm_atomic_uapi.c         | 64 +++++++++++++++++++++
 drivers/gpu/drm/drm_blend.c               | 17 ++++++
 drivers/gpu/drm/drm_plane.c               | 20 +++++--
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c  |  9 ++-
 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 69 +++++++++++++++--------
 include/drm/drm_atomic_helper.h           |  6 +-
 include/drm/drm_blend.h                   |  1 +
 include/drm/drm_plane.h                   | 34 +++++++++++
 11 files changed, 257 insertions(+), 75 deletions(-)