Re: [PATCH 2/2] drm/dumb-buffers: document abuses in the UAPI document
From: Thomas Zimmermann
Date: Thu Feb 26 2026 - 12:26:26 EST
Hi
Am 26.02.26 um 17:06 schrieb Icenowy Zheng:
在 2026-02-26四的 17:01 +0100,Thomas Zimmermann写道:
HiAh the drivers seem to be also criminal to accept this kind of usage,
Am 26.02.26 um 07:37 schrieb Icenowy Zheng:
Although the current DRM_IOCTL_MODE_CREATE_DUMB interface designSince you're at it, you should move the line at [1] right here as the
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 {
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'exists user-space software'
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
it's why I thought about writing "drivers" here.
Each driver implements dumb buffers on top of its own memory manager. They are complicit in the sense that they often never tested against the limitations of the dumb-buffer ioctl. But OTOH the limitations where never written down clearly. Only very recently did we add the code and documentation to clarify dumb-buffer semantics. [1] And not all drivers have been updated yet.
Therefore several user-space programs used dumb-buffers in an "out-of-scope fashion" and got away with it. The comments in drm_mode_size_dumb() list the known exceptions.
Best regards
Thomas
[1] https://lore.kernel.org/all/20250821081918.79786-3-tzimmermann@xxxxxxx/
Thanks
Icenowy
+ * with modifiers other than DRM_FORMAT_MOD_LINEAR, but this isRather 'with non-linear layout'. The reference to MOD_LINEAR seems
out
of place here.
+ * incorrect usage with undefined behavior, and should not beBest regards
+ * replicated.
Thomas
[1]
https://elixir.bootlin.com/linux/v6.19/source/include/uapi/drm/drm_mode.h#L1216
*/
struct drm_mode_create_dumb {
__u32 height;
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)