Commit 645d91f6 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Use pipe A primary plane .max_stride() as the global stride limit

Let's assume that the primary plane for pipe A has the highest max
stride of all planes, and we'll use that as the global limit when
creating a new framebuffer.
Reviewed-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180907152413.15761-4-ville.syrjala@linux.intel.com
parent ddd5713d
...@@ -14432,31 +14432,18 @@ static ...@@ -14432,31 +14432,18 @@ static
u32 intel_fb_pitch_limit(struct drm_i915_private *dev_priv, u32 intel_fb_pitch_limit(struct drm_i915_private *dev_priv,
uint64_t fb_modifier, uint32_t pixel_format) uint64_t fb_modifier, uint32_t pixel_format)
{ {
u32 gen = INTEL_GEN(dev_priv); struct intel_crtc *crtc;
struct intel_plane *plane;
if (gen >= 9) {
int cpp = drm_format_plane_cpp(pixel_format, 0);
/* "The stride in bytes must not exceed the of the size of 8K /*
* pixels and 32K bytes." * We assume the primary plane for pipe A has
* the highest stride limits of them all.
*/ */
return min(8192 * cpp, 32768); crtc = intel_get_crtc_for_pipe(dev_priv, PIPE_A);
} else if (gen >= 5 && !HAS_GMCH_DISPLAY(dev_priv)) { plane = to_intel_plane(crtc->base.primary);
return 32*1024;
} else if (gen >= 4) { return plane->max_stride(plane, pixel_format, fb_modifier,
if (fb_modifier == I915_FORMAT_MOD_X_TILED) DRM_MODE_ROTATE_0);
return 16*1024;
else
return 32*1024;
} else if (gen >= 3) {
if (fb_modifier == I915_FORMAT_MOD_X_TILED)
return 8*1024;
else
return 16*1024;
} else {
/* XXX DSPC is limited to 4k tiled */
return 8*1024;
}
} }
static int intel_framebuffer_init(struct intel_framebuffer *intel_fb, static int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
......
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