diff mbox series

[v2,1/2] drm: Remove plane hsub/vsub alignment requirement for core helpers

Message ID 20230926141519.9315-2-gcarlos@disroot.org (mailing list archive)
State New, archived
Headers show
Series drm: Refactor plane size calculation by core helper functions | expand

Commit Message

Carlos Eduardo Gallo Filho Sept. 26, 2023, 2:15 p.m. UTC
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>
---
 include/drm/drm_fourcc.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

André Almeida Oct. 1, 2023, 9:09 a.m. UTC | #1
Hi Carlos,

On 9/26/23 16:15, Carlos Eduardo Gallo Filho wrote:
> 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

Prefer to use lore:

https://lore.kernel.org/dri-devel/20170321181218.10042-3-ville.syrjala@linux.intel.com/

https://lore.kernel.org/intel-gfx/20211026225105.2783797-2-imre.deak@intel.com/


Other than that,

Reviewed-by: André Almeida <andrealmeid@igalia.com>

>
> Signed-off-by: Carlos Eduardo Gallo Filho <gcarlos@disroot.org>
> ---
>   include/drm/drm_fourcc.h | 5 +++--
>   1 file 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);
diff mbox series

Patch

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);