Commit 33f673aa authored by Ville Syrjälä's avatar Ville Syrjälä

drm: Remove fb hsub/vsub alignment requirement

Allow framebuffers dimesions to be misaligned w.r.t. the subsampling
factors. No real reason the core should have to enforce this, and
it definitely starts to cause us issues with the i915 CCS support.
So let's just lift the restriction.

Let's start to round up when computing the color plane dimesions
so that we'll not end up with too low an estimate for the memory
requirements and whatnot.

Cc: Ben Widawsky <ben@bwidawsk.net>
Cc: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170321181218.10042-3-ville.syrjala@linux.intel.comReviewed-by: default avatarBen Widawsky <ben@bwidawsk.net>
parent 568c5e45
...@@ -132,7 +132,7 @@ static int fb_plane_width(int width, ...@@ -132,7 +132,7 @@ static int fb_plane_width(int width,
if (plane == 0) if (plane == 0)
return width; return width;
return width / format->hsub; return DIV_ROUND_UP(width, format->hsub);
} }
static int fb_plane_height(int height, static int fb_plane_height(int height,
...@@ -141,7 +141,7 @@ static int fb_plane_height(int height, ...@@ -141,7 +141,7 @@ static int fb_plane_height(int height,
if (plane == 0) if (plane == 0)
return height; return height;
return height / format->vsub; return DIV_ROUND_UP(height, format->vsub);
} }
static int framebuffer_check(const struct drm_mode_fb_cmd2 *r) static int framebuffer_check(const struct drm_mode_fb_cmd2 *r)
...@@ -158,12 +158,12 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r) ...@@ -158,12 +158,12 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r)
return -EINVAL; return -EINVAL;
} }
if (r->width == 0 || r->width % info->hsub) { if (r->width == 0) {
DRM_DEBUG_KMS("bad framebuffer width %u\n", r->width); DRM_DEBUG_KMS("bad framebuffer width %u\n", r->width);
return -EINVAL; return -EINVAL;
} }
if (r->height == 0 || r->height % info->vsub) { if (r->height == 0) {
DRM_DEBUG_KMS("bad framebuffer height %u\n", r->height); DRM_DEBUG_KMS("bad framebuffer height %u\n", r->height);
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment