Re: [PATCH RESEND v2 2/3] drm/vkms: add support for multiple overlay planes

From: Melissa Wen
Date: Sun Jan 09 2022 - 12:01:07 EST


On 01/07, José Expósito wrote:
> Create 8 overlay planes instead of 1 when the "enable_overlay" module
> parameter is set.
>
> The following igt-gpu-tools tests were executed without finding
> regressions. Notice than the numbers are identical:
>
> | master branch | this patch |
> | SUCCESS | SKIP | FAIL | SUCCESS | SKIP | FAIL |
> kms_atomic | 10 | 02 | 00 | 10 | 02 | 00 |
> kms_plane_cursor | 09 | 45 | 00 | 09 | 45 | 00 |
> kms_plane_multiple | 01 | 23 | 00 | 01 | 23 | 00 |
> kms_writeback | 04 | 00 | 00 | 04 | 00 | 00 |

I checked that several testcases from kms_cursor_crc are failing after
recent changes in the test. However, this regression is not caused by
these changes and need futher investigation for fixing.

That said, this patch lgtm.

Reviewed-by: Melissa Wen <mwen@xxxxxxxxxx>
>
> Signed-off-by: José Expósito <jose.exposito89@xxxxxxxxx>
>
> ---
>
> v2:
>
> - Set the number of overlay planes as a constant instead of as a
> module parameter (Melissa Wen)
>
> - Add a test results in the commit message (Melissa Wen)
> ---
> drivers/gpu/drm/vkms/vkms_drv.h | 2 ++
> drivers/gpu/drm/vkms/vkms_output.c | 9 ++++++---
> 2 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_drv.h
> index d48c23d40ce5..9496fdc900b8 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.h
> +++ b/drivers/gpu/drm/vkms/vkms_drv.h
> @@ -20,6 +20,8 @@
> #define XRES_MAX 8192
> #define YRES_MAX 8192
>
> +#define NUM_OVERLAY_PLANES 8
> +
> struct vkms_writeback_job {
> struct dma_buf_map map[DRM_FORMAT_MAX_PLANES];
> struct dma_buf_map data[DRM_FORMAT_MAX_PLANES];
> diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms_output.c
> index 2e805b2d36ae..ba0e82ae549a 100644
> --- a/drivers/gpu/drm/vkms/vkms_output.c
> +++ b/drivers/gpu/drm/vkms/vkms_output.c
> @@ -57,15 +57,18 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
> struct vkms_plane *primary, *cursor = NULL;
> int ret;
> int writeback;
> + unsigned int n;
>
> primary = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_PRIMARY, index);
> if (IS_ERR(primary))
> return PTR_ERR(primary);
>
> if (vkmsdev->config->overlay) {
> - ret = vkms_add_overlay_plane(vkmsdev, index, crtc);
> - if (ret)
> - return ret;
> + for (n = 0; n < NUM_OVERLAY_PLANES; n++) {
> + ret = vkms_add_overlay_plane(vkmsdev, index, crtc);
> + if (ret)
> + return ret;
> + }
> }
>
> if (vkmsdev->config->cursor) {
> --
> 2.25.1
>

Attachment: signature.asc
Description: PGP signature