Message ID | 20250613090431.127087-8-tzimmermann@suse.de |
---|---|
State | New |
Headers | show |
Series | drm/dumb-buffers: Fix and improve buffer-size calculation | expand |
2025년 6월 13일 (금) 오후 6:05, Thomas Zimmermann <tzimmermann@suse.de>님이 작성: > > Call drm_mode_size_dumb() to compute dumb-buffer scanline pitch and > buffer size. No alignment required. > Acked-by : Inki Dae <inki.dae@samsung.com> Thanks, Inki Dae > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > Cc: Inki Dae <inki.dae@samsung.com> > Cc: Seung-Woo Kim <sw0312.kim@samsung.com> > Cc: Kyungmin Park <kyungmin.park@samsung.com> > Cc: Krzysztof Kozlowski <krzk@kernel.org> > Cc: Alim Akhtar <alim.akhtar@samsung.com> > --- > drivers/gpu/drm/exynos/exynos_drm_gem.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c > index 4787fee4696f..ffa1c02b4b1e 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c > @@ -11,6 +11,7 @@ > #include <linux/shmem_fs.h> > #include <linux/module.h> > > +#include <drm/drm_dumb_buffers.h> > #include <drm/drm_prime.h> > #include <drm/drm_vma_manager.h> > #include <drm/exynos_drm.h> > @@ -330,15 +331,16 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv, > unsigned int flags; > int ret; > > + ret = drm_mode_size_dumb(dev, args, 0, 0); > + if (ret) > + return ret; > + > /* > * allocate memory to be used for framebuffer. > * - this callback would be called by user application > * with DRM_IOCTL_MODE_CREATE_DUMB command. > */ > > - args->pitch = args->width * ((args->bpp + 7) / 8); > - args->size = args->pitch * args->height; > - > if (is_drm_iommu_supported(dev)) > flags = EXYNOS_BO_NONCONTIG | EXYNOS_BO_WC; > else > -- > 2.49.0 > >
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c index 4787fee4696f..ffa1c02b4b1e 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c @@ -11,6 +11,7 @@ #include <linux/shmem_fs.h> #include <linux/module.h> +#include <drm/drm_dumb_buffers.h> #include <drm/drm_prime.h> #include <drm/drm_vma_manager.h> #include <drm/exynos_drm.h> @@ -330,15 +331,16 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv, unsigned int flags; int ret; + ret = drm_mode_size_dumb(dev, args, 0, 0); + if (ret) + return ret; + /* * allocate memory to be used for framebuffer. * - this callback would be called by user application * with DRM_IOCTL_MODE_CREATE_DUMB command. */ - args->pitch = args->width * ((args->bpp + 7) / 8); - args->size = args->pitch * args->height; - if (is_drm_iommu_supported(dev)) flags = EXYNOS_BO_NONCONTIG | EXYNOS_BO_WC; else
Call drm_mode_size_dumb() to compute dumb-buffer scanline pitch and buffer size. No alignment required. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Cc: Inki Dae <inki.dae@samsung.com> Cc: Seung-Woo Kim <sw0312.kim@samsung.com> Cc: Kyungmin Park <kyungmin.park@samsung.com> Cc: Krzysztof Kozlowski <krzk@kernel.org> Cc: Alim Akhtar <alim.akhtar@samsung.com> --- drivers/gpu/drm/exynos/exynos_drm_gem.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)