diff options
| author | Carlos Eduardo Gallo Filho <[email protected]> | 2023-09-26 14:15:18 +0000 |
|---|---|---|
| committer | Thomas Zimmermann <[email protected]> | 2023-10-12 07:51:19 +0000 |
| commit | f2f455981a34ce8ca88a41458c09494b387d344f (patch) | |
| tree | c1ebcccfa2da094958fd9574f51c495a4740250a | |
| parent | fbdev: Replace fb_pgprotect() with pgprot_framebuffer() (diff) | |
| download | kernel-f2f455981a34ce8ca88a41458c09494b387d344f.tar.gz kernel-f2f455981a34ce8ca88a41458c09494b387d344f.zip | |
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/[email protected]
[2] https://patchwork.freedesktop.org/patch/msgid/[email protected]
Signed-off-by: Carlos Eduardo Gallo Filho <[email protected]>
Reviewed-by: André Almeida <[email protected]>
Signed-off-by: Thomas Zimmermann <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
| -rw-r--r-- | include/drm/drm_fourcc.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h index 532ae78ca747..ccf91daa4307 100644 --- a/include/drm/drm_fourcc.h +++ b/include/drm/drm_fourcc.h @@ -22,6 +22,7 @@ #ifndef __DRM_FOURCC_H__ #define __DRM_FOURCC_H__ +#include <linux/math.h> #include <linux/types.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) 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) return height; - return height / info->vsub; + return DIV_ROUND_UP(height, info->vsub); } const struct drm_format_info *__drm_format_info(u32 format); |
