drm: Add drm_framebuffer_plane_{width,height}()
Add variants of drm_format_plane_{width,height}() that take an entire fb object instead of just the format. These should be more efficent as they can just look up the format info from the fb->format pointer rather than having to look it up (using a linear search based on the format). Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Link: http://patchwork.freedesktop.org/patch/msgid/1479498793-31021-30-git-send-email-ville.syrjala@linux.intel.com
This commit is contained in:
parent
801c8fe831
commit
8f8f6a6c3c
|
@ -793,3 +793,47 @@ void drm_framebuffer_remove(struct drm_framebuffer *fb)
|
|||
drm_framebuffer_unreference(fb);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_framebuffer_remove);
|
||||
|
||||
/**
|
||||
* drm_framebuffer_plane_width - width of the plane given the first plane
|
||||
* @width: width of the first plane
|
||||
* @fb: the framebuffer
|
||||
* @plane: plane index
|
||||
*
|
||||
* Returns:
|
||||
* The width of @plane, given that the width of the first plane is @width.
|
||||
*/
|
||||
int drm_framebuffer_plane_width(int width,
|
||||
const struct drm_framebuffer *fb, int plane)
|
||||
{
|
||||
if (plane >= fb->format->num_planes)
|
||||
return 0;
|
||||
|
||||
if (plane == 0)
|
||||
return width;
|
||||
|
||||
return width / fb->format->hsub;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_framebuffer_plane_width);
|
||||
|
||||
/**
|
||||
* drm_framebuffer_plane_height - height of the plane given the first plane
|
||||
* @height: height of the first plane
|
||||
* @fb: the framebuffer
|
||||
* @plane: plane index
|
||||
*
|
||||
* Returns:
|
||||
* The height of @plane, given that the height of the first plane is @height.
|
||||
*/
|
||||
int drm_framebuffer_plane_height(int height,
|
||||
const struct drm_framebuffer *fb, int plane)
|
||||
{
|
||||
if (plane >= fb->format->num_planes)
|
||||
return 0;
|
||||
|
||||
if (plane == 0)
|
||||
return height;
|
||||
|
||||
return height / fb->format->vsub;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_framebuffer_plane_height);
|
||||
|
|
|
@ -286,4 +286,10 @@ static inline void drm_framebuffer_assign(struct drm_framebuffer **p,
|
|||
struct drm_framebuffer, head); \
|
||||
&fb->head != (&(dev)->mode_config.fb_list); \
|
||||
fb = list_next_entry(fb, head))
|
||||
|
||||
int drm_framebuffer_plane_width(int width,
|
||||
const struct drm_framebuffer *fb, int plane);
|
||||
int drm_framebuffer_plane_height(int height,
|
||||
const struct drm_framebuffer *fb, int plane);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue