On Thu, Jun 20, 2013 at 05:14:20PM +0100, Chris Wilson wrote: > Report back the user error of attempting to setup a CRTC with an invalid > framebuffer pitch. This is trickier than it should be as on gen4, there > is a restriction that tiled surfaces must have a stride less than 16k - > which is less than the largest supported CRTC size. > > v2: Fix the limits for gen3 > v3: Move check into intel_framebuffer_init() and fix VLV limits. (vsyrjala) > > References: https://bugs.freedesktop.org/show_bug.cgi?id=65099 > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/intel_display.c | 25 +++++++++++++++++++++---- > 1 file changed, 21 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 03a5ed0..ed84c57 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -9223,6 +9223,7 @@ int intel_framebuffer_init(struct drm_device *dev, > struct drm_mode_fb_cmd2 *mode_cmd, > struct drm_i915_gem_object *obj) > { > + int pitch_limit; > int ret; > > if (obj->tiling_mode == I915_TILING_Y) { > @@ -9236,10 +9237,26 @@ int intel_framebuffer_init(struct drm_device *dev, > return -EINVAL; > } > > - /* FIXME <= Gen4 stride limits are bit unclear */ > - if (mode_cmd->pitches[0] > 32768) { > - DRM_DEBUG("pitch (%d) must be at less than 32768\n", > - mode_cmd->pitches[0]); > + if (INTEL_INFO(dev)->gen > 4 && !IS_VALLEYVIEW(dev)) { I believe Daniel wants to use >= for such gen checks, and I tend to agree that it would make things a bit easier to parse. > + pitch_limit = 32*1024; > + } else if (INTEL_INFO(dev)->gen > 3) { > + if (obj->tiling_mode) > + pitch_limit = 16*1024; > + else > + pitch_limit = 32*1024; > + } else if (INTEL_INFO(dev)->gen > 2) { > + if (obj->tiling_mode) > + pitch_limit = 8*1024; > + else > + pitch_limit = 16*1024; > + } else > + /* XXX DSPC is limited to 4k tiled */ > + pitch_limit = 8*1024; > + > + if (mode_cmd->pitches[0] > pitch_limit) { > + DRM_DEBUG("%s pitch (%d) must be at less than %d\n", > + obj->tiling_mode ? "tiled" : "linear", > + mode_cmd->pitches[0], pitch_limit); > return -EINVAL; > } > > -- > 1.8.3.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrj?l? Intel OTC