All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Luca Ceresoli" <luca.ceresoli@bootlin.com>
To: "Louis Chauvet" <louis.chauvet@bootlin.com>,
	"Haneen Mohammed" <hamohammed.sa@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Melissa Wen" <melissa.srw@gmail.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>, <jose.exposito89@gmail.com>,
	"Jonathan Corbet" <corbet@lwn.net>
Cc: <victoria@system76.com>, <sebastian.wick@redhat.com>,
	<thomas.petazzoni@bootlin.com>, <dri-devel@lists.freedesktop.org>,
	<linux-kernel@vger.kernel.org>, <linux-doc@vger.kernel.org>
Subject: Re: [PATCH RESEND v2 19/32] drm/vkms: Introduce config for plane zpos property
Date: Fri, 19 Dec 2025 18:08:30 +0100	[thread overview]
Message-ID: <DF2CXBF8ZCSQ.28C9DWKRIFW8Y@bootlin.com> (raw)
In-Reply-To: <20251029-vkms-all-config-v2-19-a49a2d4cba26@bootlin.com>

On Wed Oct 29, 2025 at 3:36 PM CET, Louis Chauvet wrote:
> VKMS can render plane in any order. Introduce the appropriate
> configuration.
>
> Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>

> --- a/drivers/gpu/drm/vkms/tests/vkms_config_test.c
> +++ b/drivers/gpu/drm/vkms/tests/vkms_config_test.c

> @@ -606,6 +609,94 @@ static void vkms_config_test_valid_plane_color_range(struct kunit *test)
>  	vkms_config_destroy(config);
>  }
>
> +static void vkms_config_test_valid_plane_zpos(struct kunit *test)
> +{
> +	struct vkms_config *config;
> +	struct vkms_config_plane *plane_cfg;
> +
> +	config = vkms_config_default_create(false, false, false);
> +	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
> +
> +	plane_cfg = get_first_plane(config);
> +
> +	/* Valid, all color range supported */
> +	plane_cfg = get_first_plane(config);

These 2 lines should be removed? Invalid comment and duplicated line,
apparently.

> +	/* Valid, zpos disabled */
> +	vkms_config_plane_set_zpos_enabled(plane_cfg, false);
> +	vkms_config_plane_set_zpos_mutable(plane_cfg, false);
> +	vkms_config_plane_set_zpos_initial(plane_cfg, 0);
> +	vkms_config_plane_set_zpos_min(plane_cfg, 0);
> +	vkms_config_plane_set_zpos_max(plane_cfg, 0);
> +	KUNIT_EXPECT_TRUE(test, vkms_config_is_valid(config));
> +
> +	/* Valid, zpos disabled, min/max are ignored */
> +	vkms_config_plane_set_zpos_enabled(plane_cfg, false);
> +	vkms_config_plane_set_zpos_mutable(plane_cfg, false);
> +	vkms_config_plane_set_zpos_initial(plane_cfg, 8);
> +	vkms_config_plane_set_zpos_min(plane_cfg, 3);
> +	vkms_config_plane_set_zpos_max(plane_cfg, 2);
> +	KUNIT_EXPECT_TRUE(test, vkms_config_is_valid(config));
> +
> +	/* Valid, zpos enabled but initial value is out of range */
> +	vkms_config_plane_set_zpos_enabled(plane_cfg, true);
> +	vkms_config_plane_set_zpos_mutable(plane_cfg, false);
> +	vkms_config_plane_set_zpos_initial(plane_cfg, 1);
> +	vkms_config_plane_set_zpos_min(plane_cfg, 0);
> +	vkms_config_plane_set_zpos_max(plane_cfg, 0);
> +	KUNIT_EXPECT_TRUE(test, vkms_config_is_valid(config));

vkms_config_valid_plane_zpos() returns OK if mutable is false. So the test
is correct but the comment is misleading. It should read:

	/* Valid, zpos enabled but mutable disabled */

> +	/* Valid, zpos enabled with valid initial value */
> +	vkms_config_plane_set_zpos_enabled(plane_cfg, true);
> +	vkms_config_plane_set_zpos_mutable(plane_cfg, false);
> +	vkms_config_plane_set_zpos_initial(plane_cfg, 0);
> +	vkms_config_plane_set_zpos_min(plane_cfg, 0);
> +	vkms_config_plane_set_zpos_max(plane_cfg, 0);
> +	KUNIT_EXPECT_TRUE(test, vkms_config_is_valid(config));

Here the comment is misleading as well, it should still be:

	/* Valid, zpos enabled but mutable disabled */

> --- a/drivers/gpu/drm/vkms/vkms_config.c
> +++ b/drivers/gpu/drm/vkms/vkms_config.c

> @@ -249,6 +252,37 @@ bool vkms_config_valid_plane_color_range(const struct vkms_config *config,
>  }
>  EXPORT_SYMBOL_IF_KUNIT(vkms_config_valid_plane_color_range);
>
> +VISIBLE_IF_KUNIT
> +bool vkms_config_valid_plane_zpos(const struct vkms_config *config,
> +				  const struct vkms_config_plane *plane_cfg)
> +{
> +	struct drm_device *dev = config->dev ? &config->dev->drm : NULL;
> +
> +	if (!vkms_config_plane_get_zpos_enabled(plane_cfg) ||
> +	    !vkms_config_plane_get_zpos_mutable(plane_cfg))
> +		return true;
> +
> +	if (vkms_config_plane_get_zpos_initial(plane_cfg) >
> +	    vkms_config_plane_get_zpos_max(plane_cfg)) {
> +		drm_info(dev, "Configured initial zpos value bigger than zpos max\n");
> +		return false;
> +	}
> +
> +	if (vkms_config_plane_get_zpos_max(plane_cfg) <
> +	    vkms_config_plane_get_zpos_min(plane_cfg)) {
> +		drm_info(dev, "Configured zpos max value smaller than zpos min\n");
> +		return false;
> +	}
> +
> +	if (vkms_config_plane_get_zpos_initial(plane_cfg) <
> +	    vkms_config_plane_get_zpos_min(plane_cfg)) {
> +		drm_info(dev, "Configured initial zpos value smaller than zpos min\n");
> +		return false;
> +	}

Maybe merge the if(initial < min) and the if(initial > max) into a single
if(), to avoid unnecessarily detailed error reporting. Not a strong request
however, up to you.

> --- a/drivers/gpu/drm/vkms/vkms_config.h
> +++ b/drivers/gpu/drm/vkms/vkms_config.h
> @@ -51,6 +51,11 @@ struct vkms_config {
>   * @supported_color_ranges: Color range that this plane will support
>   * @supported_formats: List of supported formats
>   * @supported_formats_count: Length of @supported_formats
> + * @zpos_enabled: Enable or disable the zpos property
> + * @zpos_mutable: Make the zpos property mutable or not (ignored if @zpos_enabled is false)
> + * @zpos_initial: Initial value for zpos property (ignored if @zpos_enabled is false)
> + * @zpos_min: Minimal value for zpos property (ignored if @zpos_enabled is false)
> + * @zpos_max: Maximal value for zpos property (ignored if @zpos_enabled is false)
>   */
>  struct vkms_config_plane {
>  	struct list_head link;

[...]

> +/**
> + * vkms_config_plane_set_zpos_min() - Set the minimum zpos value
> + * @plane_cfg: Plane configuration to modify
> + * @zpos_min: Minimum zpos value
> + */
> +static inline
> +void vkms_config_plane_set_zpos_min(struct vkms_config_plane *plane_cfg,
> +				    unsigned int zpos_min)
> +{
> +	plane_cfg->zpos_min = zpos_min;
> +}
> +
> +/**
> + * vkms_config_plane_set_zpos_max() - Set the maximum zpos value
> + * @plane_cfg: Plane configuration to modify
> + * @zpos_max: Maximum zpos value
> + *
> + * Sets the maximum allowed value for the zpos property. This setting is
> + * ignored if zpos is disabled.

These two lines are not present for the other functions. I suggest removing
them here, the kdoc in struct vkms_config is already saying so.

> +/**
> + * vkms_config_plane_get_zpos_mutable() - Check if zpos property is mutable
> + * @plane_cfg: Plane configuration to check
> + *
> + * Returns:
> + * True if the zpos property is mutable for this plane, false otherwise.
> + * Returns false if zpos is disabled.

This last line is correct? There is no check in the code. I think it's OK
to leave the code as is and remove this line.

> + */
> +static inline
> +bool vkms_config_plane_get_zpos_mutable(const struct vkms_config_plane *plane_cfg)
> +{
> +	return plane_cfg->zpos_mutable;
> +}

Luca

--
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

  reply	other threads:[~2025-12-19 17:08 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-29 14:36 [PATCH RESEND v2 00/32] VKMS: Introduce multiple configFS attributes Louis Chauvet
2025-10-29 14:36 ` [PATCH RESEND v2 01/32] drm/drm_mode_config: Add helper to get plane type name Louis Chauvet
2025-11-13 14:06   ` José Expósito
2025-11-17 11:28     ` Louis Chauvet
2025-12-18 17:56   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 02/32] drm/vkms: Explicitly display plane type Louis Chauvet
2025-11-13 14:07   ` José Expósito
2025-12-18 17:56   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 03/32] drm/vkms: Use enabled/disabled instead of 1/0 for debug Louis Chauvet
2025-11-13 14:09   ` José Expósito
2025-12-18 17:57     ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 04/32] drm/vkms: Explicitly display connector status Louis Chauvet
2025-11-13 14:11   ` José Expósito
2025-12-18 17:56   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 05/32] drm/vkms: Introduce config for plane name Louis Chauvet
2025-11-13 14:17   ` José Expósito
2025-11-17 14:12     ` Louis Chauvet
2025-10-29 14:36 ` [PATCH RESEND v2 06/32] drm/vkms: Introduce configfs " Louis Chauvet
2025-11-13 14:21   ` José Expósito
2025-11-17  9:56     ` Louis Chauvet
2025-12-18 17:58       ` Luca Ceresoli
2025-12-19 15:49         ` Louis Chauvet
2025-10-29 14:36 ` [PATCH RESEND v2 07/32] drm/blend: Get a rotation name from it's bitfield Louis Chauvet
2025-11-13 14:23   ` José Expósito
2025-12-18 17:58   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 08/32] drm/vkms: Introduce config for plane rotation Louis Chauvet
2025-12-18 17:59   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 09/32] drm/vkms: Introduce configfs " Louis Chauvet
2025-12-18 17:59   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 10/32] drm/drm_color_mgmt: Expose drm_get_color_encoding_name Louis Chauvet
2025-12-18 17:59   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 11/32] drm/vkms: Introduce config for plane color encoding Louis Chauvet
2025-12-18 17:59   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 12/32] drm/vkms: Introduce configfs " Louis Chauvet
2025-12-18 17:59   ` Luca Ceresoli
2025-12-19 16:40     ` Louis Chauvet
2025-12-19 17:51       ` Louis Chauvet
2025-10-29 14:36 ` [PATCH RESEND v2 13/32] drm/drm_color_mgmt: Expose drm_get_color_range_name Louis Chauvet
2025-12-18 17:59   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 14/32] drm/vkms: Introduce config for plane color range Louis Chauvet
2025-12-18 17:59   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 15/32] drm/vkms: Introduce configfs " Louis Chauvet
2025-12-18 18:00   ` Luca Ceresoli
2025-12-19 16:55     ` Louis Chauvet
2025-10-29 14:36 ` [PATCH RESEND v2 16/32] drm/vkms: Introduce config for plane format Louis Chauvet
2025-12-19 14:55   ` Luca Ceresoli
2025-12-19 18:31     ` Louis Chauvet
2025-10-29 14:36 ` [PATCH RESEND v2 17/32] drm/vkms: Introduce configfs " Louis Chauvet
2025-12-19 17:07   ` Luca Ceresoli
2025-12-19 17:28     ` Louis Chauvet
2025-10-29 14:36 ` [PATCH RESEND v2 18/32] drm/vkms: Properly render plane using their zpos Louis Chauvet
2025-12-19 17:08   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 19/32] drm/vkms: Introduce config for plane zpos property Louis Chauvet
2025-12-19 17:08   ` Luca Ceresoli [this message]
2025-10-29 14:36 ` [PATCH RESEND v2 20/32] drm/vkms: Introduce configfs " Louis Chauvet
2025-12-19 17:08   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 21/32] drm/vkms: Introduce config for connector type Louis Chauvet
2025-12-19 17:08   ` Luca Ceresoli
2025-10-29 14:36 ` [PATCH RESEND v2 22/32] drm/vkms: Introduce configfs " Louis Chauvet
2025-12-19 17:08   ` Luca Ceresoli
2025-10-29 14:37 ` [PATCH RESEND v2 23/32] drm/connector: Export drm_get_colorspace_name Louis Chauvet
2025-12-19 17:08   ` Luca Ceresoli
2025-10-29 14:37 ` [PATCH RESEND v2 24/32] drm/vkms: Introduce config for connector supported colorspace Louis Chauvet
2025-12-19 17:08   ` Luca Ceresoli
2025-10-29 14:37 ` [PATCH RESEND v2 25/32] drm/vkms: Introduce configfs " Louis Chauvet
2025-12-19 18:56   ` Luca Ceresoli
2025-10-29 14:37 ` [PATCH RESEND v2 26/32] drm/vkms: Introduce config for connector EDID Louis Chauvet
2025-12-19 18:56   ` Luca Ceresoli
2025-10-29 14:37 ` [PATCH RESEND v2 27/32] drm/vkms: Introduce configfs " Louis Chauvet
2025-12-19 18:56   ` Luca Ceresoli
2025-10-29 14:37 ` [PATCH RESEND v2 28/32] drm/vkms: Store the enabled/disabled status for connector Louis Chauvet
2025-12-19 18:57   ` Luca Ceresoli
2025-10-29 14:37 ` [PATCH RESEND v2 29/32] drm/vkms: Rename vkms_connector_init to vkms_connector_init_static Louis Chauvet
2025-12-19 18:58   ` Luca Ceresoli
2025-12-19 19:11     ` Louis Chauvet
2025-12-19 20:47       ` Luca Ceresoli
2025-10-29 14:37 ` [PATCH RESEND v2 30/32] drm/vkms: Extract common code for connector initialization Louis Chauvet
2025-12-19 20:47   ` Luca Ceresoli
2025-10-29 14:37 ` [PATCH RESEND v2 31/32] drm/vkms: Allow to hot-add connectors Louis Chauvet
2025-12-19 20:47   ` Luca Ceresoli
2025-10-29 14:37 ` [PATCH RESEND v2 32/32] drm/vkms: Introduce configfs for dynamic connector creation Louis Chauvet
2025-12-19 20:47   ` Luca Ceresoli
2025-12-19 22:01     ` Louis Chauvet

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DF2CXBF8ZCSQ.28C9DWKRIFW8Y@bootlin.com \
    --to=luca.ceresoli@bootlin.com \
    --cc=airlied@gmail.com \
    --cc=corbet@lwn.net \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hamohammed.sa@gmail.com \
    --cc=jose.exposito89@gmail.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=louis.chauvet@bootlin.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=melissa.srw@gmail.com \
    --cc=mripard@kernel.org \
    --cc=sebastian.wick@redhat.com \
    --cc=simona@ffwll.ch \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=tzimmermann@suse.de \
    --cc=victoria@system76.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.