public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [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