* [PATCH] drm/i915: Don't list gens one by bone in the VMA creation function @ 2014-01-10 15:47 Damien Lespiau 2014-01-10 17:09 ` Daniel Vetter 0 siblings, 1 reply; 5+ messages in thread From: Damien Lespiau @ 2014-01-10 15:47 UTC (permalink / raw) To: intel-gfx There are only two cases here, pre and post SNB (PPGTT). Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> --- 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; @@ -1806,17 +1803,10 @@ static struct i915_vma *__i915_gem_vma_create(struct drm_i915_gem_object *obj, vma->unbind_vma = ppgtt_unbind_vma; vma->bind_vma = ppgtt_bind_vma; } - break; - case 5: - case 4: - case 3: - case 2: + } else { BUG_ON(!i915_is_ggtt(vm)); vma->unbind_vma = i915_ggtt_unbind_vma; vma->bind_vma = i915_ggtt_bind_vma; - break; - default: - BUG(); } /* Keep GGTT vmas first to make debug easier */ -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/i915: Don't list gens one by bone in the VMA creation function 2014-01-10 15:47 [PATCH] drm/i915: Don't list gens one by bone in the VMA creation function Damien Lespiau @ 2014-01-10 17:09 ` Daniel Vetter 2014-01-10 17:16 ` Ben Widawsky 0 siblings, 1 reply; 5+ messages in thread From: Daniel Vetter @ 2014-01-10 17:09 UTC (permalink / raw) To: Damien Lespiau; +Cc: intel-gfx 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 <damien.lespiau@intel.com> > --- > 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 > @@ -1806,17 +1803,10 @@ static struct i915_vma *__i915_gem_vma_create(struct drm_i915_gem_object *obj, > vma->unbind_vma = ppgtt_unbind_vma; > vma->bind_vma = ppgtt_bind_vma; > } > - break; > - case 5: > - case 4: > - case 3: > - case 2: > + } else { > BUG_ON(!i915_is_ggtt(vm)); > vma->unbind_vma = i915_ggtt_unbind_vma; > vma->bind_vma = i915_ggtt_bind_vma; > - break; > - default: > - BUG(); > } > > /* Keep GGTT vmas first to make debug easier */ > -- > 1.8.3.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/i915: Don't list gens one by bone in the VMA creation function 2014-01-10 17:09 ` Daniel Vetter @ 2014-01-10 17:16 ` Ben Widawsky 2014-01-10 17:32 ` Daniel Vetter 0 siblings, 1 reply; 5+ messages in thread From: Ben Widawsky @ 2014-01-10 17:16 UTC (permalink / raw) To: Daniel Vetter; +Cc: intel-gfx 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 <damien.lespiau@intel.com> > > --- > > 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. > > > @@ -1806,17 +1803,10 @@ static struct i915_vma *__i915_gem_vma_create(struct drm_i915_gem_object *obj, > > vma->unbind_vma = ppgtt_unbind_vma; > > vma->bind_vma = ppgtt_bind_vma; > > } > > - break; > > - case 5: > > - case 4: > > - case 3: > > - case 2: > > + } else { > > BUG_ON(!i915_is_ggtt(vm)); > > vma->unbind_vma = i915_ggtt_unbind_vma; > > vma->bind_vma = i915_ggtt_bind_vma; > > - break; > > - default: > > - BUG(); > > } > > > > /* Keep GGTT vmas first to make debug easier */ > > -- > > 1.8.3.1 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Daniel Vetter > Software Engineer, Intel Corporation > +41 (0) 79 365 57 48 - http://blog.ffwll.ch > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ben Widawsky, Intel Open Source Technology Center ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/i915: Don't list gens one by bone in the VMA creation function 2014-01-10 17:16 ` Ben Widawsky @ 2014-01-10 17:32 ` Daniel Vetter 2014-01-10 17:33 ` Daniel Vetter 0 siblings, 1 reply; 5+ messages in thread From: Daniel Vetter @ 2014-01-10 17:32 UTC (permalink / raw) To: Ben Widawsky; +Cc: intel-gfx 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 <damien.lespiau@intel.com> > > > --- > > > 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). -Daniel > > > > > > @@ -1806,17 +1803,10 @@ static struct i915_vma *__i915_gem_vma_create(struct drm_i915_gem_object *obj, > > > vma->unbind_vma = ppgtt_unbind_vma; > > > vma->bind_vma = ppgtt_bind_vma; > > > } > > > - break; > > > - case 5: > > > - case 4: > > > - case 3: > > > - case 2: > > > + } else { > > > BUG_ON(!i915_is_ggtt(vm)); > > > vma->unbind_vma = i915_ggtt_unbind_vma; > > > vma->bind_vma = i915_ggtt_bind_vma; > > > - break; > > > - default: > > > - BUG(); > > > } > > > > > > /* Keep GGTT vmas first to make debug easier */ > > > -- > > > 1.8.3.1 > > > > > > _______________________________________________ > > > Intel-gfx mailing list > > > Intel-gfx@lists.freedesktop.org > > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > > > -- > > Daniel Vetter > > Software Engineer, Intel Corporation > > +41 (0) 79 365 57 48 - http://blog.ffwll.ch > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Ben Widawsky, Intel Open Source Technology Center -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/i915: Don't list gens one by bone in the VMA creation function 2014-01-10 17:32 ` Daniel Vetter @ 2014-01-10 17:33 ` Daniel Vetter 0 siblings, 0 replies; 5+ messages in thread From: Daniel Vetter @ 2014-01-10 17:33 UTC (permalink / raw) To: Ben Widawsky; +Cc: intel-gfx 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 <damien.lespiau@intel.com> > > > > --- > > > > 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-01-10 17:32 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-01-10 15:47 [PATCH] drm/i915: Don't list gens one by bone in the VMA creation function Damien Lespiau 2014-01-10 17:09 ` Daniel Vetter 2014-01-10 17:16 ` Ben Widawsky 2014-01-10 17:32 ` Daniel Vetter 2014-01-10 17:33 ` Daniel Vetter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox