Re: [PATCH 2/2] drm/dumb-buffers: document abuses in the UAPI document

From: Icenowy Zheng

Date: Thu Feb 26 2026 - 12:16:43 EST


在 2026-02-26四的 17:01 +0100,Thomas Zimmermann写道:
> Hi
>
> Am 26.02.26 um 07:37 schrieb Icenowy Zheng:
> > Although the current DRM_IOCTL_MODE_CREATE_DUMB interface design
> > only
> > suits linear buffers, some KMS drivers abuse it for AFBC
> > framebuffers.
> >
> > Mention it in the interface document, and clarifying that it's not
> > recommended.
> >
> > Signed-off-by: Icenowy Zheng <zhengxingda@xxxxxxxxxxx>
> > ---
> >   include/uapi/drm/drm_mode.h | 4 ++++
> >   1 file changed, 4 insertions(+)
> >
> > diff --git a/include/uapi/drm/drm_mode.h
> > b/include/uapi/drm/drm_mode.h
> > index cbbbfc1dfe2b8..02b6fa7ade355 100644
> > --- a/include/uapi/drm/drm_mode.h
> > +++ b/include/uapi/drm/drm_mode.h
> > @@ -1256,6 +1256,10 @@ struct drm_mode_crtc_page_flip_target {
>
> Since you're at it, you should move the line at [1] right here as the
> first sentence of this paragraph. Then continue with 'Do not
> attempt'.
>
> With that change, the previous paragraphs refer to pixel formats and
> the
> final one refers to framebuffer layout.
>
>
> >    * Do not attempt to allocate anything but linear framebuffer
> > memory
> >    * with single-plane RGB data. Allocation of other framebuffer
> >    * layouts requires dedicated ioctls in the respective DRM
> > driver.
> > + * There exists drivers exploiting this interface for framebuffers
>
> 'exists user-space software'

Ah the drivers seem to be also criminal to accept this kind of usage,
it's why I thought about writing "drivers" here.

Thanks
Icenowy

>
> > + * with modifiers other than DRM_FORMAT_MOD_LINEAR, but this is
>
> Rather 'with non-linear layout'.  The reference to MOD_LINEAR seems
> out
> of place here.
>
> > + * incorrect usage with undefined behavior, and should not be
> > + * replicated.
>
> Best regards
> Thomas
>
> [1]
> https://elixir.bootlin.com/linux/v6.19/source/include/uapi/drm/drm_mode.h#L1216
>
> >    */
> >   struct drm_mode_create_dumb {
> >    __u32 height;