diff options
author | Damien Lespiau <damien.lespiau@intel.com> | 2015-02-27 06:15:19 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-02-27 12:10:54 -0500 |
commit | b5d0e9bfa645560d2a15acd788b88628fc17f5f3 (patch) | |
tree | 0aaffc1c33759aa8aa305910ec75971c147eebe5 | |
parent | b321803dfbe46faeb54e8e758148be40e628225e (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.c | 39 |
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 | } |