From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 05/11] drm/i915: Check framebuffer stride more thoroughly Date: Thu, 1 Nov 2012 16:06:37 +0200 Message-ID: <20121101140637.GM3791@intel.com> References: <1351698624-26626-1-git-send-email-ville.syrjala@linux.intel.com> <1351698624-26626-6-git-send-email-ville.syrjala@linux.intel.com> <20121031132511.4184abfd@jbarnes-desktop> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 4457E9E75A for ; Thu, 1 Nov 2012 07:06:41 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20121031132511.4184abfd@jbarnes-desktop> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Jesse Barnes Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org On Wed, Oct 31, 2012 at 01:25:11PM -0700, Jesse Barnes wrote: > On Wed, 31 Oct 2012 17:50:18 +0200 > ville.syrjala@linux.intel.com wrote: > = > > From: Ville Syrj=E4l=E4 > > = > > Make sure the the framebuffer stride is smaller than 32k. That > > seems to be the limit on recent hardware. Not quite sure if > > <=3DGen4 has smaller limits. > > = > > Also when using a tiled memory make sure the object stride matches > > the framebuffer stride. > > = > > Signed-off-by: Ville Syrj=E4l=E4 > > --- > > = > > I had an earlier version a long time ago that tried to use smaller stri= de limits > > on <=3DGen4, but as there isn't clear information what those limits are= , I decided > > to just check for the 32K limit everywhere. It's definitely an upper bo= und for > > the older hardware as well. > > = > > drivers/gpu/drm/i915/intel_display.c | 8 ++++++++ > > 1 files changed, 8 insertions(+), 0 deletions(-) > > = > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i91= 5/intel_display.c > > index b42637b..f431f2a 100644 > > --- a/drivers/gpu/drm/i915/intel_display.c > > +++ b/drivers/gpu/drm/i915/intel_display.c > > @@ -8235,6 +8235,14 @@ int intel_framebuffer_init(struct drm_device *de= v, > > if (mode_cmd->pitches[0] & 63) > > return -EINVAL; > > = > > + /* FIXME <=3D Gen4 stride limits are bit unclear */ > > + if (mode_cmd->pitches[0] > 32768) > > + return -EINVAL; > > + > > + if (obj->tiling_mode !=3D I915_TILING_NONE && > > + mode_cmd->pitches[0] !=3D obj->stride) > > + return -EINVAL; > > + > > /* Reject formats not supported by any plane early. */ > > switch (mode_cmd->pixel_format) { > > case DRM_FORMAT_C8: > = > The bspec archive should have the pre-gen4 info, but this is a good > start. I trawled through them when I made the original patch, but the information in the specs was lacking. Eg. for some registers they just state something like "for tiled surfaces the stride is limited to N", with no mention what the untiled limit is. So if someone wants to figure out the real limits, the best option would be to test on real HW. Currently I have access only to Gen5+ HW, so I can't do it myself. -- = Ville Syrj=E4l=E4 Intel OTC