aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Lespiau <damien.lespiau@intel.com>2015-02-27 06:15:19 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-02-27 12:10:54 -0500
commitb5d0e9bfa645560d2a15acd788b88628fc17f5f3 (patch)
tree0aaffc1c33759aa8aa305910ec75971c147eebe5
parentb321803dfbe46faeb54e8e758148be40e628225e (diff)
drm/i915/skl: Adjust intel_fb_align_height() for Yb/Yf tiling
We now need the bpp of the fb as Yf tiling has different tile widths depending on it. v2: Rebased for the new addfb2 interface. (Tvrtko Ursulin) v3: Rebased for fb modifier changes. (Tvrtko Ursulin) v4: Added missing case and 128-bit pixel warning. (Damien Lespiau) Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> (v3) Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/intel_display.c39
1 files changed, 37 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 8076bce85160..34629758c571 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2195,9 +2195,44 @@ intel_fb_align_height(struct drm_device *dev, int height,
2195 uint64_t fb_format_modifier) 2195 uint64_t fb_format_modifier)
2196{ 2196{
2197 int tile_height; 2197 int tile_height;
2198 uint32_t bits_per_pixel;
2198 2199
2199 tile_height = fb_format_modifier == I915_FORMAT_MOD_X_TILED ? 2200 switch (fb_format_modifier) {
2200 (IS_GEN2(dev) ? 16 : 8) : 1; 2201 case DRM_FORMAT_MOD_NONE:
2202 tile_height = 1;
2203 break;
2204 case I915_FORMAT_MOD_X_TILED:
2205 tile_height = IS_GEN2(dev) ? 16 : 8;
2206 break;
2207 case I915_FORMAT_MOD_Y_TILED:
2208 tile_height = 32;
2209 break;
2210 case I915_FORMAT_MOD_Yf_TILED:
2211 bits_per_pixel = drm_format_plane_cpp(pixel_format, 0) * 8;
2212 switch (bits_per_pixel) {
2213 default:
2214 case 8:
2215 tile_height = 64;
2216 break;
2217 case 16:
2218 case 32:
2219 tile_height = 32;
2220 break;
2221 case 64:
2222 tile_height = 16;
2223 break;
2224 case 128:
2225 WARN_ONCE(1,
2226 "128-bit pixels are not supported for display!");
2227 tile_height = 16;
2228 break;
2229 }
2230 break;
2231 default:
2232 MISSING_CASE(fb_format_modifier);
2233 tile_height = 1;
2234 break;
2235 }
2201 2236
2202 return ALIGN(height, tile_height); 2237 return ALIGN(height, tile_height);
2203} 2238}