]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/nouveau: Compute dumb-buffer sizes with drm_mode_size_dumb()
authorThomas Zimmermann <tzimmermann@suse.de>
Thu, 21 Aug 2025 08:17:21 +0000 (10:17 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 29 Sep 2025 12:00:57 +0000 (14:00 +0200)
Call drm_mode_size_dumb() to compute dumb-buffer scanline pitch and
buffer size. Align the pitch to a multiple of 256.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Cc: Karol Herbst <kherbst@redhat.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: Danilo Krummrich <dakr@kernel.org>
Link: https://lore.kernel.org/r/20250821081918.79786-15-tzimmermann@suse.de
drivers/gpu/drm/nouveau/nouveau_display.c

index 805d0a87aa54612ae6d753b929bbaa4a81029a79..54aed3656a4c7c216175c2e712051495430c13a3 100644 (file)
@@ -30,6 +30,7 @@
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_client_event.h>
 #include <drm/drm_crtc_helper.h>
+#include <drm/drm_dumb_buffers.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_probe_helper.h>
@@ -807,9 +808,9 @@ nouveau_display_dumb_create(struct drm_file *file_priv, struct drm_device *dev,
        uint32_t domain;
        int ret;
 
-       args->pitch = roundup(args->width * (args->bpp / 8), 256);
-       args->size = args->pitch * args->height;
-       args->size = roundup(args->size, PAGE_SIZE);
+       ret = drm_mode_size_dumb(dev, args, SZ_256, 0);
+       if (ret)
+               return ret;
 
        /* Use VRAM if there is any ; otherwise fallback to system memory */
        if (nouveau_drm(dev)->client.device.info.ram_size != 0)