diff mbox series

[v2,1/1] drm/doc: document drm_mode_get_plane

Message ID 20210422181004.34247-2-leandro.ribeiro@collabora.com (mailing list archive)
State New, archived
Headers show
Series Document drm_mode_get_plane | expand

Commit Message

Leandro Ribeiro April 22, 2021, 6:10 p.m. UTC
Add a small description and document struct fields of
drm_mode_get_plane.

Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
---
 include/uapi/drm/drm_mode.h | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

--
2.31.1

Comments

Pekka Paalanen April 23, 2021, 11:11 a.m. UTC | #1
On Thu, 22 Apr 2021 15:10:04 -0300
Leandro Ribeiro <leandro.ribeiro@collabora.com> wrote:

> Add a small description and document struct fields of
> drm_mode_get_plane.
> 
> Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
> ---
>  include/uapi/drm/drm_mode.h | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index a5e76aa06ad5..3e85de928db9 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -312,16 +312,32 @@ struct drm_mode_set_plane {
>  	__u32 src_w;
>  };
> 
> +/**
> + * struct drm_mode_get_plane - Get plane metadata.
> + *
> + * Userspace can perform a GETPLANE ioctl to retrieve information about a
> + * plane.
> + */
>  struct drm_mode_get_plane {
> +	/** @plane_id: Object ID of the plane. */
>  	__u32 plane_id;
> 
> +	/** @crtc_id: Object ID of the current CRTC. */
>  	__u32 crtc_id;
> +	/** @fb_id: Object ID of the current fb. */
>  	__u32 fb_id;
> 
> +	/** @possible_crtcs: Bitmask of CRTC's compatible with the plane. */

This should probably explain what the bits in the mask correspond to.
As in, which CRTC does bit 0 refer to, and so on.

>  	__u32 possible_crtcs;
> +	/** @gamma_size: Size of the legacy gamma table. */

What are the units? Entries? Bytes?

>  	__u32 gamma_size;
> 
> +	/** @count_format_types: Number of formats. */
>  	__u32 count_format_types;
> +	/**
> +	 * @format_type_ptr: Pointer to ``__u32`` array of formats that are
> +	 * supported by the plane. These formats do not require modifiers.

I wonder if the "do not require modifiers" is again going too far in
making a difference between this list and IN_FORMATS?

> +	 */
>  	__u64 format_type_ptr;
>  };

Other than those, looks like a significant improvement to me.


Thanks,
pq

> 
> --
> 2.31.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Leandro Ribeiro April 23, 2021, 9:30 p.m. UTC | #2
On 4/23/21 8:11 AM, Pekka Paalanen wrote:
> On Thu, 22 Apr 2021 15:10:04 -0300
> Leandro Ribeiro <leandro.ribeiro@collabora.com> wrote:
> 
>> Add a small description and document struct fields of
>> drm_mode_get_plane.
>>
>> Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
>> ---
>>  include/uapi/drm/drm_mode.h | 16 ++++++++++++++++
>>  1 file changed, 16 insertions(+)
>>
>> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
>> index a5e76aa06ad5..3e85de928db9 100644
>> --- a/include/uapi/drm/drm_mode.h
>> +++ b/include/uapi/drm/drm_mode.h
>> @@ -312,16 +312,32 @@ struct drm_mode_set_plane {
>>  	__u32 src_w;
>>  };
>>
>> +/**
>> + * struct drm_mode_get_plane - Get plane metadata.
>> + *
>> + * Userspace can perform a GETPLANE ioctl to retrieve information about a
>> + * plane.
>> + */
>>  struct drm_mode_get_plane {
>> +	/** @plane_id: Object ID of the plane. */
>>  	__u32 plane_id;
>>
>> +	/** @crtc_id: Object ID of the current CRTC. */
>>  	__u32 crtc_id;
>> +	/** @fb_id: Object ID of the current fb. */
>>  	__u32 fb_id;
>>
>> +	/** @possible_crtcs: Bitmask of CRTC's compatible with the plane. */
> 
> This should probably explain what the bits in the mask correspond to.
> As in, which CRTC does bit 0 refer to, and so on.
> 

What about:

"possible_crtcs: Bitmask of CRTC's compatible with the plane. CRTC's are
created and they receive an index, which corresponds to their position
in the bitmask. CRTC with index 0 will be in bit 0, and so on."

>>  	__u32 possible_crtcs;
>> +	/** @gamma_size: Size of the legacy gamma table. */
> 
> What are the units? Entries? Bytes?
> 

The number of entries. I'll update to "gamma_size: Number of entries of
the legacy gamma lookup table" in the next version.

>>  	__u32 gamma_size;
>>
>> +	/** @count_format_types: Number of formats. */
>>  	__u32 count_format_types;
>> +	/**
>> +	 * @format_type_ptr: Pointer to ``__u32`` array of formats that are
>> +	 * supported by the plane. These formats do not require modifiers.
> 
> I wonder if the "do not require modifiers" is again going too far in
> making a difference between this list and IN_FORMATS?
> 

Yes that's true, I'll drop this phrase.

>> +	 */
>>  	__u64 format_type_ptr;
>>  };
> 
> Other than those, looks like a significant improvement to me.
> 
> 
> Thanks,
> pq
> 
>>
>> --
>> 2.31.1
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
Pekka Paalanen April 26, 2021, 7:36 a.m. UTC | #3
On Fri, 23 Apr 2021 18:30:33 -0300
Leandro Ribeiro <leandro.ribeiro@collabora.com> wrote:

> On 4/23/21 8:11 AM, Pekka Paalanen wrote:
> > On Thu, 22 Apr 2021 15:10:04 -0300
> > Leandro Ribeiro <leandro.ribeiro@collabora.com> wrote:
> >   
> >> Add a small description and document struct fields of
> >> drm_mode_get_plane.
> >>
> >> Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
> >> ---
> >>  include/uapi/drm/drm_mode.h | 16 ++++++++++++++++
> >>  1 file changed, 16 insertions(+)
> >>
> >> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> >> index a5e76aa06ad5..3e85de928db9 100644
> >> --- a/include/uapi/drm/drm_mode.h
> >> +++ b/include/uapi/drm/drm_mode.h
> >> @@ -312,16 +312,32 @@ struct drm_mode_set_plane {
> >>  	__u32 src_w;
> >>  };
> >>
> >> +/**
> >> + * struct drm_mode_get_plane - Get plane metadata.
> >> + *
> >> + * Userspace can perform a GETPLANE ioctl to retrieve information about a
> >> + * plane.
> >> + */
> >>  struct drm_mode_get_plane {
> >> +	/** @plane_id: Object ID of the plane. */
> >>  	__u32 plane_id;
> >>
> >> +	/** @crtc_id: Object ID of the current CRTC. */
> >>  	__u32 crtc_id;
> >> +	/** @fb_id: Object ID of the current fb. */
> >>  	__u32 fb_id;
> >>
> >> +	/** @possible_crtcs: Bitmask of CRTC's compatible with the plane. */  
> > 
> > This should probably explain what the bits in the mask correspond to.
> > As in, which CRTC does bit 0 refer to, and so on.
> >   
> 
> What about:
> 
> "possible_crtcs: Bitmask of CRTC's compatible with the plane. CRTC's are
> created and they receive an index, which corresponds to their position
> in the bitmask. CRTC with index 0 will be in bit 0, and so on."

This would still need to explain where can I find this index.

> >>  	__u32 possible_crtcs;
> >> +	/** @gamma_size: Size of the legacy gamma table. */  
> > 
> > What are the units? Entries? Bytes?
> >   
> 
> The number of entries. I'll update to "gamma_size: Number of entries of
> the legacy gamma lookup table" in the next version.

Sounds good!


Thanks,
pq

> >>  	__u32 gamma_size;
> >>
> >> +	/** @count_format_types: Number of formats. */
> >>  	__u32 count_format_types;
> >> +	/**
> >> +	 * @format_type_ptr: Pointer to ``__u32`` array of formats that are
> >> +	 * supported by the plane. These formats do not require modifiers.  
> > 
> > I wonder if the "do not require modifiers" is again going too far in
> > making a difference between this list and IN_FORMATS?
> >   
> 
> Yes that's true, I'll drop this phrase.
> 
> >> +	 */
> >>  	__u64 format_type_ptr;
> >>  };  
> > 
> > Other than those, looks like a significant improvement to me.
> > 
> > 
> > Thanks,
> > pq
> >   
> >>
> >> --
> >> 2.31.1
> >>
> >> _______________________________________________
> >> dri-devel mailing list
> >> dri-devel@lists.freedesktop.org
> >> https://lists.freedesktop.org/mailman/listinfo/dri-devel  
> >
Simon Ser April 26, 2021, 10:58 a.m. UTC | #4
On Monday, April 26th, 2021 at 9:36 AM, Pekka Paalanen <ppaalanen@gmail.com> wrote:

> > > This should probably explain what the bits in the mask correspond to.
> > > As in, which CRTC does bit 0 refer to, and so on.
> >
> > What about:
> >
> > "possible_crtcs: Bitmask of CRTC's compatible with the plane. CRTC's are
> > created and they receive an index, which corresponds to their position
> > in the bitmask. CRTC with index 0 will be in bit 0, and so on."
>
> This would still need to explain where can I find this index.

This closed merge request had some docs about possible CRTCs:

https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/102
Leandro Ribeiro April 26, 2021, 5:30 p.m. UTC | #5
On 4/26/21 7:58 AM, Simon Ser wrote:
> On Monday, April 26th, 2021 at 9:36 AM, Pekka Paalanen <ppaalanen@gmail.com> wrote:
> 
>>>> This should probably explain what the bits in the mask correspond to.
>>>> As in, which CRTC does bit 0 refer to, and so on.
>>>
>>> What about:
>>>
>>> "possible_crtcs: Bitmask of CRTC's compatible with the plane. CRTC's are
>>> created and they receive an index, which corresponds to their position
>>> in the bitmask. CRTC with index 0 will be in bit 0, and so on."
>>
>> This would still need to explain where can I find this index.
> 

What do you mean?

> This closed merge request had some docs about possible CRTCs:
> 
> https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/102
> 
I'm afraid I don't know exactly what you expect to be documented here
that is still missing. Could you please elaborate?

Thanks a lot!
Pekka Paalanen April 27, 2021, 7:40 a.m. UTC | #6
On Mon, 26 Apr 2021 14:30:53 -0300
Leandro Ribeiro <leandro.ribeiro@collabora.com> wrote:

> On 4/26/21 7:58 AM, Simon Ser wrote:
> > On Monday, April 26th, 2021 at 9:36 AM, Pekka Paalanen <ppaalanen@gmail.com> wrote:
> >   
> >>>> This should probably explain what the bits in the mask correspond to.
> >>>> As in, which CRTC does bit 0 refer to, and so on.  
> >>>
> >>> What about:
> >>>
> >>> "possible_crtcs: Bitmask of CRTC's compatible with the plane. CRTC's are
> >>> created and they receive an index, which corresponds to their position
> >>> in the bitmask. CRTC with index 0 will be in bit 0, and so on."  
> >>
> >> This would still need to explain where can I find this index.  
> >   
> 
> What do you mean?
> 
> > This closed merge request had some docs about possible CRTCs:
> > 
> > https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/102
> >   
> I'm afraid I don't know exactly what you expect to be documented here
> that is still missing. Could you please elaborate?
> 
> Thanks a lot!

The documentation you add is talking about "CRTC index". What defines a
CRTC object's index? How do I determine what index a CRTC object has?

The answer is, AFAIK, that the index is never stored explicitly
anywhere. You have to get the DRM resources structure, which has an
array for CRTC IDs. The index is the index to that array, IIRC. So if
one does not already know this, it is going to be really hard to figure
out what the "index" is. It might even be confused with the object ID,
which it is not but the ID might by complete accident be less than 32
so it would look ok at first glance.

If the index is already explained somewhere else, a reference to that
documentation would be enough.


Thanks,
pq
Daniel Vetter April 27, 2021, 9 a.m. UTC | #7
On Tue, Apr 27, 2021 at 10:40:24AM +0300, Pekka Paalanen wrote:
> On Mon, 26 Apr 2021 14:30:53 -0300
> Leandro Ribeiro <leandro.ribeiro@collabora.com> wrote:
> 
> > On 4/26/21 7:58 AM, Simon Ser wrote:
> > > On Monday, April 26th, 2021 at 9:36 AM, Pekka Paalanen <ppaalanen@gmail.com> wrote:
> > >   
> > >>>> This should probably explain what the bits in the mask correspond to.
> > >>>> As in, which CRTC does bit 0 refer to, and so on.  
> > >>>
> > >>> What about:
> > >>>
> > >>> "possible_crtcs: Bitmask of CRTC's compatible with the plane. CRTC's are
> > >>> created and they receive an index, which corresponds to their position
> > >>> in the bitmask. CRTC with index 0 will be in bit 0, and so on."  
> > >>
> > >> This would still need to explain where can I find this index.  
> > >   
> > 
> > What do you mean?
> > 
> > > This closed merge request had some docs about possible CRTCs:
> > > 
> > > https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/102
> > >   
> > I'm afraid I don't know exactly what you expect to be documented here
> > that is still missing. Could you please elaborate?
> > 
> > Thanks a lot!
> 
> The documentation you add is talking about "CRTC index". What defines a
> CRTC object's index? How do I determine what index a CRTC object has?
> 
> The answer is, AFAIK, that the index is never stored explicitly
> anywhere. You have to get the DRM resources structure, which has an
> array for CRTC IDs. The index is the index to that array, IIRC. So if
> one does not already know this, it is going to be really hard to figure
> out what the "index" is. It might even be confused with the object ID,
> which it is not but the ID might by complete accident be less than 32
> so it would look ok at first glance.
> 
> If the index is already explained somewhere else, a reference to that
> documentation would be enough.

I think if we do this we should have a DOC: section in the drm_mode.h uapi
header which explains how the index is computed, and then we reference
that everywhere. Because otherwise there's going to be a _lot_ of
duplication of this all over. Kernel-internally we solve this by just
referencing drm_foo_index() family of functions, but for the uapi there's
really nothing, so needs text.

-Daniel
Leandro Ribeiro April 28, 2021, 9:42 p.m. UTC | #8
On 4/27/21 6:00 AM, Daniel Vetter wrote:
> On Tue, Apr 27, 2021 at 10:40:24AM +0300, Pekka Paalanen wrote:
>> On Mon, 26 Apr 2021 14:30:53 -0300
>> Leandro Ribeiro <leandro.ribeiro@collabora.com> wrote:
>>
>>> On 4/26/21 7:58 AM, Simon Ser wrote:
>>>> On Monday, April 26th, 2021 at 9:36 AM, Pekka Paalanen <ppaalanen@gmail.com> wrote:
>>>>   
>>>>>>> This should probably explain what the bits in the mask correspond to.
>>>>>>> As in, which CRTC does bit 0 refer to, and so on.  
>>>>>>
>>>>>> What about:
>>>>>>
>>>>>> "possible_crtcs: Bitmask of CRTC's compatible with the plane. CRTC's are
>>>>>> created and they receive an index, which corresponds to their position
>>>>>> in the bitmask. CRTC with index 0 will be in bit 0, and so on."  
>>>>>
>>>>> This would still need to explain where can I find this index.  
>>>>   
>>>
>>> What do you mean?
>>>
>>>> This closed merge request had some docs about possible CRTCs:
>>>>
>>>> https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/102
>>>>   
>>> I'm afraid I don't know exactly what you expect to be documented here
>>> that is still missing. Could you please elaborate?
>>>
>>> Thanks a lot!
>>
>> The documentation you add is talking about "CRTC index". What defines a
>> CRTC object's index? How do I determine what index a CRTC object has?
>>
>> The answer is, AFAIK, that the index is never stored explicitly
>> anywhere. You have to get the DRM resources structure, which has an
>> array for CRTC IDs. The index is the index to that array, IIRC. So if
>> one does not already know this, it is going to be really hard to figure
>> out what the "index" is. It might even be confused with the object ID,
>> which it is not but the ID might by complete accident be less than 32
>> so it would look ok at first glance.
>>
>> If the index is already explained somewhere else, a reference to that
>> documentation would be enough.
> 
> I think if we do this we should have a DOC: section in the drm_mode.h uapi
> header which explains how the index is computed, and then we reference
> that everywhere. Because otherwise there's going to be a _lot_ of
> duplication of this all over. Kernel-internally we solve this by just
> referencing drm_foo_index() family of functions, but for the uapi there's
> really nothing, so needs text.
> 
> -Daniel
>
Ok, I've sent a v3 with a small section to document how to get the index
of a CRTC object from userspace perspective. But I could only find two
comments that would benefit from it (at least in "Userland interfaces"
page).

Thanks!
diff mbox series

Patch

diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index a5e76aa06ad5..3e85de928db9 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -312,16 +312,32 @@  struct drm_mode_set_plane {
 	__u32 src_w;
 };

+/**
+ * struct drm_mode_get_plane - Get plane metadata.
+ *
+ * Userspace can perform a GETPLANE ioctl to retrieve information about a
+ * plane.
+ */
 struct drm_mode_get_plane {
+	/** @plane_id: Object ID of the plane. */
 	__u32 plane_id;

+	/** @crtc_id: Object ID of the current CRTC. */
 	__u32 crtc_id;
+	/** @fb_id: Object ID of the current fb. */
 	__u32 fb_id;

+	/** @possible_crtcs: Bitmask of CRTC's compatible with the plane. */
 	__u32 possible_crtcs;
+	/** @gamma_size: Size of the legacy gamma table. */
 	__u32 gamma_size;

+	/** @count_format_types: Number of formats. */
 	__u32 count_format_types;
+	/**
+	 * @format_type_ptr: Pointer to ``__u32`` array of formats that are
+	 * supported by the plane. These formats do not require modifiers.
+	 */
 	__u64 format_type_ptr;
 };