mbox series

[RFC,0/3] drm/vkms: add overlay plane support

Message ID 20210220143749.omaoooquudaqiawf@smtp.gmail.com (mailing list archive)
Headers show
Series drm/vkms: add overlay plane support | expand

Message

Melissa Wen Feb. 20, 2021, 2:37 p.m. UTC
Adding support to overlay type in addition to primary and cursor plane.
The planes composition relies on the z order of the active planes and
only occurs if there is a primary plane (as in the current behavior).

The first patch decouples cursor from crtc_init. It initializes the CRTC
only with primary plane, and setup the cursor plane externally. This is
a preparation to allow to initialize the overlay plane between primary
and cursor.

The second patch generalize variables and functions names to refer to
any kind of plane, not only cursor. The goal is to reuse them for
blending overlay and cursor planes to primary.

The third patch creates a module option to enable overlay, and includes
overlay to supported types of plane. When the overlay option is enabled,
one overlay plane is initialized (plus primary and cursor) and it is
included in the planes composition.

This work preserves the current results of IGT tests: kms_cursor_crc;
kms_flip and kms_writeback. In addition, subtests related to overlay in
kms_atomic and kms_plane_cursor start to pass (pointed out in the commit
message).

Melissa Wen (3):
  drm/vkms: decouple cursor plane setup from crtc_init
  drm/vkms: rename cursor to plane on ops of planes composition
  drm/vkms: add overlay support

 drivers/gpu/drm/vkms/vkms_composer.c | 49 ++++++++++++++++------------
 drivers/gpu/drm/vkms/vkms_crtc.c     |  4 +--
 drivers/gpu/drm/vkms/vkms_drv.c      |  5 +++
 drivers/gpu/drm/vkms/vkms_drv.h      |  3 +-
 drivers/gpu/drm/vkms/vkms_output.c   | 31 ++++++++++++++----
 drivers/gpu/drm/vkms/vkms_plane.c    | 20 +++++++++---
 6 files changed, 76 insertions(+), 36 deletions(-)

Comments

Thomas Zimmermann Feb. 24, 2021, 9:15 a.m. UTC | #1
Hi

Am 20.02.21 um 15:37 schrieb Melissa Wen:
> Adding support to overlay type in addition to primary and cursor plane.
> The planes composition relies on the z order of the active planes and
> only occurs if there is a primary plane (as in the current behavior).
> 
> The first patch decouples cursor from crtc_init. It initializes the CRTC
> only with primary plane, and setup the cursor plane externally. This is
> a preparation to allow to initialize the overlay plane between primary
> and cursor.
> 
> The second patch generalize variables and functions names to refer to
> any kind of plane, not only cursor. The goal is to reuse them for
> blending overlay and cursor planes to primary.

It's not directly relevant to the patchset here, but sort-of related.

Vkms is effectively shadow buffered. I'd like to promote the new helpers 
for shadow-buffered planes in drm_gem_atomic_helper.h.

There's plane state and helper functions available that automatically 
vmap and vunmap framebuffer BOs. You can safe the rsp code in vkms. It 
would also help with testing the shadow-plane helpers.

Best regards
Thomas

> 
> The third patch creates a module option to enable overlay, and includes
> overlay to supported types of plane. When the overlay option is enabled,
> one overlay plane is initialized (plus primary and cursor) and it is
> included in the planes composition.
> 
> This work preserves the current results of IGT tests: kms_cursor_crc;
> kms_flip and kms_writeback. In addition, subtests related to overlay in
> kms_atomic and kms_plane_cursor start to pass (pointed out in the commit
> message).
> 
> Melissa Wen (3):
>    drm/vkms: decouple cursor plane setup from crtc_init
>    drm/vkms: rename cursor to plane on ops of planes composition
>    drm/vkms: add overlay support
> 
>   drivers/gpu/drm/vkms/vkms_composer.c | 49 ++++++++++++++++------------
>   drivers/gpu/drm/vkms/vkms_crtc.c     |  4 +--
>   drivers/gpu/drm/vkms/vkms_drv.c      |  5 +++
>   drivers/gpu/drm/vkms/vkms_drv.h      |  3 +-
>   drivers/gpu/drm/vkms/vkms_output.c   | 31 ++++++++++++++----
>   drivers/gpu/drm/vkms/vkms_plane.c    | 20 +++++++++---
>   6 files changed, 76 insertions(+), 36 deletions(-)
>