[PATCH v4 03/14] drm: Use drm_format_info() in DRM core code
Tomi Valkeinen
tomi.valkeinen at ti.com
Wed Sep 14 13:23:09 UTC 2016
On 08/09/16 17:44, Laurent Pinchart wrote:
> Replace calls to the drm_format_*() helper functions with direct use of
> the drm_format_info structure. This improves efficiency by removing
> duplicate lookups.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> drivers/gpu/drm/drm_fb_cma_helper.c | 23 ++++----
> drivers/gpu/drm/drm_framebuffer.c | 102 +++++-------------------------------
> 2 files changed, 25 insertions(+), 100 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
> index 1fd6eac1400c..fac4f06f8485 100644
> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
> @@ -176,20 +176,20 @@ struct drm_framebuffer *drm_fb_cma_create_with_funcs(struct drm_device *dev,
> struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd,
> const struct drm_framebuffer_funcs *funcs)
> {
> + const struct drm_format_info *info;
> struct drm_fb_cma *fb_cma;
> struct drm_gem_cma_object *objs[4];
> struct drm_gem_object *obj;
> - unsigned int hsub;
> - unsigned int vsub;
> int ret;
> int i;
>
> - hsub = drm_format_horz_chroma_subsampling(mode_cmd->pixel_format);
> - vsub = drm_format_vert_chroma_subsampling(mode_cmd->pixel_format);
> + info = drm_format_info(mode_cmd->pixel_format);
> + if (!info)
> + return ERR_PTR(-EINVAL);
>
> - for (i = 0; i < drm_format_num_planes(mode_cmd->pixel_format); i++) {
> - unsigned int width = mode_cmd->width / (i ? hsub : 1);
> - unsigned int height = mode_cmd->height / (i ? vsub : 1);
> + for (i = 0; i < info->num_planes; i++) {
> + unsigned int width = mode_cmd->width / (i ? info->hsub : 1);
> + unsigned int height = mode_cmd->height / (i ? info->vsub : 1);
> unsigned int min_size;
>
> obj = drm_gem_object_lookup(file_priv, mode_cmd->handles[i]);
> @@ -200,7 +200,7 @@ struct drm_framebuffer *drm_fb_cma_create_with_funcs(struct drm_device *dev,
> }
>
> min_size = (height - 1) * mode_cmd->pitches[i]
> - + width * drm_format_plane_cpp(mode_cmd->pixel_format, i)
> + + width * info->cpp[i]
> + mode_cmd->offsets[i];
>
> if (obj->size < min_size) {
> @@ -269,12 +269,15 @@ EXPORT_SYMBOL_GPL(drm_fb_cma_get_gem_obj);
> static void drm_fb_cma_describe(struct drm_framebuffer *fb, struct seq_file *m)
> {
> struct drm_fb_cma *fb_cma = to_fb_cma(fb);
> - int i, n = drm_format_num_planes(fb->pixel_format);
> + const struct drm_format_info *info;
> + int i;
>
> seq_printf(m, "fb: %dx%d@%4.4s\n", fb->width, fb->height,
> (char *)&fb->pixel_format);
>
> - for (i = 0; i < n; i++) {
> + info = drm_format_info(fb->pixel_format);
> +
> + for (i = 0; i < info->num_planes; i++) {
> seq_printf(m, " %d: offset=%d pitch=%d, obj: ",
> i, fb->offsets[i], fb->pitches[i]);
> drm_gem_cma_describe(fb_cma->obj[i], m);
This change doesn't seem to improve the function. Afaics, only the num
planes is retrieved and used.
Tomi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20160914/675c2d72/attachment.sig>
More information about the dri-devel
mailing list