mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
drm: Remove plane hsub/vsub alignment requirement for core helpers
The drm_format_info_plane_{height,width} functions was implemented using regular division for the plane size calculation, which cause issues [1][2] when used on contexts where the dimensions are misaligned with relation to the subsampling factors. So, replace the regular division by the DIV_ROUND_UP macro. This allows these functions to be used in more drivers, making further work to bring more core presence on them possible. [1] http://patchwork.freedesktop.org/patch/msgid/20170321181218.10042-3-ville.syrjala@linux.intel.com [2] https://patchwork.freedesktop.org/patch/msgid/20211026225105.2783797-2-imre.deak@intel.com Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org> Reviewed-by: André Almeida <andrealmeid@igalia.com> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20230926141519.9315-2-gcarlos@disroot.org
This commit is contained in:
parent
052ddf7b86
commit
f2f455981a
@ -22,6 +22,7 @@
|
|||||||
#ifndef __DRM_FOURCC_H__
|
#ifndef __DRM_FOURCC_H__
|
||||||
#define __DRM_FOURCC_H__
|
#define __DRM_FOURCC_H__
|
||||||
|
|
||||||
|
#include <linux/math.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <uapi/drm/drm_fourcc.h>
|
#include <uapi/drm/drm_fourcc.h>
|
||||||
|
|
||||||
@ -279,7 +280,7 @@ int drm_format_info_plane_width(const struct drm_format_info *info, int width,
|
|||||||
if (plane == 0)
|
if (plane == 0)
|
||||||
return width;
|
return width;
|
||||||
|
|
||||||
return width / info->hsub;
|
return DIV_ROUND_UP(width, info->hsub);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -301,7 +302,7 @@ int drm_format_info_plane_height(const struct drm_format_info *info, int height,
|
|||||||
if (plane == 0)
|
if (plane == 0)
|
||||||
return height;
|
return height;
|
||||||
|
|
||||||
return height / info->vsub;
|
return DIV_ROUND_UP(height, info->vsub);
|
||||||
}
|
}
|
||||||
|
|
||||||
const struct drm_format_info *__drm_format_info(u32 format);
|
const struct drm_format_info *__drm_format_info(u32 format);
|
||||||
|
Loading…
Reference in New Issue
Block a user