From: Daniel Vetter <daniel@ffwll.ch>
To: Simon Ser <contact@emersion.fr>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
Pekka Paalanen <pekka.paalanen@collabora.com>,
Leandro Ribeiro <leandro.ribeiro@collabora.com>,
dri-devel@lists.freedesktop.org
Subject: Re: [PATCH] drm: document drm_mode_get_property
Date: Wed, 21 Jul 2021 13:39:36 +0200 [thread overview]
Message-ID: <YPgHeJ4gcKI1YaUa@phenom.ffwll.local> (raw)
In-Reply-To: <1tz9tpGFTp14Rdm6Qrih80WnzsUdM9GdHBqcT7t0zuc@cp3-web-021.plabs.ch>
On Wed, Jul 21, 2021 at 06:49:32AM +0000, Simon Ser wrote:
> It's not obvious what the fields mean and how they should be used.
> The most important detail is the link to drm_property.flags, which
> describes how property types work.
>
> Signed-off-by: Simon Ser <contact@emersion.fr>
> Cc: Pekka Paalanen <pekka.paalanen@collabora.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Leandro Ribeiro <leandro.ribeiro@collabora.com>
> ---
> include/uapi/drm/drm_mode.h | 52 ++++++++++++++++++++++++++++++++++---
> 1 file changed, 48 insertions(+), 4 deletions(-)
>
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index 98bf130feda5..dfdb595875aa 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -546,17 +546,61 @@ struct drm_mode_property_enum {
> char name[DRM_PROP_NAME_LEN];
> };
>
> +/**
> + * struct drm_mode_get_property - Get property metadata.
> + *
> + * User-space can perform a GETPROPERTY ioctl to retrieve information about a
> + * property.
> + *
> + * The meaning of the @values_ptr field changes depending on the property type.
> + * See &drm_property.flags for more details.
> + *
> + * The @enum_blob_ptr and @count_enum_blobs fields are only meaningful when the
> + * property has the type &DRM_MODE_PROP_ENUM or &DRM_MODE_PROP_BITMASK. For
> + * backwards compatibility, the kernel will always set @count_enum_blobs to
> + * zero when the property has the type &DRM_MODE_PROP_BLOB. User-space must
> + * ignore these two fields if the property has a different type.
> + *
> + * User-space is expected to retrieve values and enums by performing this ioctl
> + * at least twice: the first time to retrieve the number of elements, the
> + * second time to retrieve the elements themselves.
> + *
> + * To retrieve the number of elements, set @count_values and @count_enum_blobs
> + * to zero, then call the ioctl. @count_values will be updated with the number
> + * of elements. If the property has the type &DRM_MODE_PROP_ENUM or
> + * &DRM_MODE_PROP_BITMASK, @count_enum_blobs will be updated as well.
> + *
> + * To retrieve the elements themselves, allocate an array for @values_ptr and
> + * set @count_values to its capacity. If the property has the type
> + * &DRM_MODE_PROP_ENUM or &DRM_MODE_PROP_BITMASK, allocate an array for
> + * @enum_blob_ptr and set @count_enum_blobs to its capacity. Calling the ioctl
> + * again will fill the arrays.
I think it would be really good to link to
https://dri.freedesktop.org/docs/drm/gpu/drm-kms.html#modeset-base-object-abstraction
for all the property related ioctl. That entire class vs instance
confusion is pretty common I think, which is why I even made a nice
picture about it :-)
> + */
> struct drm_mode_get_property {
> - __u64 values_ptr; /* values and blob lengths */
> - __u64 enum_blob_ptr; /* enum and blob id ptrs */
> + /** @values_ptr: Pointer to a ``__u64`` array. */
> + __u64 values_ptr;
> + /** @enum_blob_ptr: Pointer to a struct drm_mode_property_enum array. */
I guess would be nice to also document that drm_mode_property_enum.
Especially whether we also have this nice confusion between value and
bitmask there too (I guess so).
> + __u64 enum_blob_ptr;
>
> + /**
> + * @prop_id: Object ID of the property which should be retrieved. Set
> + * by the caller.
> + */
> __u32 prop_id;
> + /**
> + * @flags: ``DRM_MODE_PROP_*`` bitfield. See &drm_property.flags for
> + * a definition of the flags.
> + */
> __u32 flags;
> + /**
> + * @name: Symbolic property name. User-space should use this field to
> + * recognize properties.
> + */
> char name[DRM_PROP_NAME_LEN];
>
> + /** @count_values: Number of elements in @values_ptr. */
> __u32 count_values;
> - /* This is only used to count enum values, not blobs. The _blobs is
> - * simply because of a historical reason, i.e. backwards compat. */
> + /** @count_enum_blobs: Number of elements in @enum_blob_ptr. */
> __u32 count_enum_blobs;
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> };
>
> --
> 2.32.0
>
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
next prev parent reply other threads:[~2021-07-21 11:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-21 6:49 [PATCH] drm: document drm_mode_get_property Simon Ser
2021-07-21 11:39 ` Daniel Vetter [this message]
2021-07-26 8:34 ` Simon Ser
2021-07-27 9:26 ` Daniel Vetter
2021-07-27 9:27 ` Simon Ser
2021-07-22 7:32 ` Pekka Paalanen
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=YPgHeJ4gcKI1YaUa@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=contact@emersion.fr \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=leandro.ribeiro@collabora.com \
--cc=pekka.paalanen@collabora.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.