summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2017-03-21 21:12:15 +0300
committerVille Syrjälä <ville.syrjala@linux.intel.com>2017-03-22 20:44:15 +0300
commit33f673aa55e96ee37bb85200a24e4da12ba4d3f2 (patch)
tree86a08eb6df418b21701d82447268100fb4aa5556
parent568c5e453666fd8e0a8b11b440291f59e4da28c8 (diff)
downloadlinux-33f673aa55e96ee37bb85200a24e4da12ba4d3f2.tar.xz
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: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170321181218.10042-3-ville.syrjala@linux.intel.com Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
-rw-r--r--drivers/gpu/drm/drm_framebuffer.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c
index 1138f90a7d5d..69e4c1487420 100644
--- a/drivers/gpu/drm/drm_framebuffer.c
+++ b/drivers/gpu/drm/drm_framebuffer.c
@@ -132,7 +132,7 @@ static int fb_plane_width(int width,
if (plane == 0)
return width;
- return width / format->hsub;
+ return DIV_ROUND_UP(width, format->hsub);
}
static int fb_plane_height(int height,
@@ -141,7 +141,7 @@ static int fb_plane_height(int height,
if (plane == 0)
return height;
- return height / format->vsub;
+ return DIV_ROUND_UP(height, format->vsub);
}
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;
}
- if (r->width == 0 || r->width % info->hsub) {
+ if (r->width == 0) {
DRM_DEBUG_KMS("bad framebuffer width %u\n", r->width);
return -EINVAL;
}
- if (r->height == 0 || r->height % info->vsub) {
+ if (r->height == 0) {
DRM_DEBUG_KMS("bad framebuffer height %u\n", r->height);
return -EINVAL;
}