From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: Don't list gens one by bone in the VMA creation function Date: Fri, 10 Jan 2014 18:33:46 +0100 Message-ID: <20140110173346.GI4770@phenom.ffwll.local> References: <1389368872-2711-1-git-send-email-damien.lespiau@intel.com> <20140110170915.GF4770@phenom.ffwll.local> <20140110171638.GA1214@bwidawsk.net> <20140110173249.GH4770@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-ee0-f52.google.com (mail-ee0-f52.google.com [74.125.83.52]) by gabe.freedesktop.org (Postfix) with ESMTP id 30337FBE4E for ; Fri, 10 Jan 2014 09:32:29 -0800 (PST) Received: by mail-ee0-f52.google.com with SMTP id d17so2056174eek.11 for ; Fri, 10 Jan 2014 09:32:28 -0800 (PST) Content-Disposition: inline In-Reply-To: <20140110173249.GH4770@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: Ben Widawsky Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org On Fri, Jan 10, 2014 at 06:32:49PM +0100, Daniel Vetter wrote: > On Fri, Jan 10, 2014 at 09:16:39AM -0800, Ben Widawsky wrote: > > On Fri, Jan 10, 2014 at 06:09:15PM +0100, Daniel Vetter wrote: > > > On Fri, Jan 10, 2014 at 03:47:52PM +0000, Damien Lespiau wrote: > > > > There are only two cases here, pre and post SNB (PPGTT). > > > > > > > > Signed-off-by: Damien Lespiau > > > > --- > > > > drivers/gpu/drm/i915/i915_gem_gtt.c | 14 ++------------ > > > > 1 file changed, 2 insertions(+), 12 deletions(-) > > > > > > > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > > > > index 3192089..866ca90 100644 > > > > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > > > > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > > > > @@ -1795,10 +1795,7 @@ static struct i915_vma *__i915_gem_vma_create(struct drm_i915_gem_object *obj, > > > > vma->vm = vm; > > > > vma->obj = obj; > > > > > > > > - switch (INTEL_INFO(vm->dev)->gen) { > > > > - case 8: > > > > - case 7: > > > > - case 6: > > > > + if (INTEL_INFO(vm->dev)->gen >= 6) { > > > > if (i915_is_ggtt(vm)) { > > > > vma->unbind_vma = ggtt_unbind_vma; > > > > vma->bind_vma = ggtt_bind_vma; > > > > > > Imo we should move the ->bind/unbind_vma functions into the global > > > dev_prive->gt vtable - The personality we set here neither changes with > > > the vma, the address space but the hw generation. So I'll reject this > > > cleanup as not going far enough ;-) > > > -Daniel > > > > Actually, it was wrong to begin with anyway. gen6 shouldn't have PPGTT > > functions. > > If you want to go this far you can coalesce much more. _Everyone_ whether > ppgtt or ggtt can use the same functions, which just call the insert/clear > entries of the right vm. The exception is gen6 which needs to bind > according to flags. > > All the few remaining checks for has_*_mapping we still have splattered > over the code can be garbage-collected and converted to unconditional > calls to ->vma_bind with the right flags set, since vma_bind will > short-circuit correctly on gen6 (and not care anywhere else really). s/gen6/aliasing_ppgtt/ in the above, i.e. it depends upon the runtime option we're using in the driver ... Idea still holds. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch