diff mbox

drm/i915: Only scan for a potential fb is the object is pinned to the display

Message ID 1389385583-7811-1-git-send-email-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson Jan. 10, 2014, 8:26 p.m. UTC
Only objects pinned to the display engine can be an active framebuffer,
so we can refine the current check for any pinned object to be a
pinned-display object.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_gem_execbuffer.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Comments

Ben Widawsky Jan. 10, 2014, 8:41 p.m. UTC | #1
On Fri, Jan 10, 2014 at 08:26:23PM +0000, Chris Wilson wrote:
> Only objects pinned to the display engine can be an active framebuffer,
> so we can refine the current check for any pinned object to be a
> pinned-display object.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/i915_gem_execbuffer.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index 8c11037eb2d2..04b0271d48ff 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -949,9 +949,7 @@ i915_gem_execbuffer_move_to_active(struct list_head *vmas,
>  		if (obj->base.write_domain) {
>  			obj->dirty = 1;
>  			obj->last_write_seqno = intel_ring_get_seqno(ring);
> -			/* check for potential scanout */
> -			if (i915_gem_obj_ggtt_bound(obj) &&
> -			    i915_gem_obj_to_ggtt(obj)->pin_count)
> +			if (obj->pin_display) /* check for potential scanout */
>  				intel_mark_fb_busy(obj, ring);
>  		}
>  

This was an error during PPGTT development:
commit d7f46fc4e7323887494db13f063a8e59861fefb0
Author: Ben Widawsky <benjamin.widawsky@intel.com>
Date:   Fri Dec 6 14:10:55 2013 -0800

    drm/i915: Make pin count per VMA

Could be squashed if ppgtt isn't merged.
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Chris Wilson Jan. 10, 2014, 8:46 p.m. UTC | #2
On Fri, Jan 10, 2014 at 12:41:49PM -0800, Ben Widawsky wrote:
> On Fri, Jan 10, 2014 at 08:26:23PM +0000, Chris Wilson wrote:
> > Only objects pinned to the display engine can be an active framebuffer,
> > so we can refine the current check for any pinned object to be a
> > pinned-display object.
> > 
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > ---
> >  drivers/gpu/drm/i915/i915_gem_execbuffer.c | 4 +---
> >  1 file changed, 1 insertion(+), 3 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> > index 8c11037eb2d2..04b0271d48ff 100644
> > --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> > +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> > @@ -949,9 +949,7 @@ i915_gem_execbuffer_move_to_active(struct list_head *vmas,
> >  		if (obj->base.write_domain) {
> >  			obj->dirty = 1;
> >  			obj->last_write_seqno = intel_ring_get_seqno(ring);
> > -			/* check for potential scanout */
> > -			if (i915_gem_obj_ggtt_bound(obj) &&
> > -			    i915_gem_obj_to_ggtt(obj)->pin_count)
> > +			if (obj->pin_display) /* check for potential scanout */
> >  				intel_mark_fb_busy(obj, ring);
> >  		}
> >  
> 
> This was an error during PPGTT development:
> commit d7f46fc4e7323887494db13f063a8e59861fefb0
> Author: Ben Widawsky <benjamin.widawsky@intel.com>
> Date:   Fri Dec 6 14:10:55 2013 -0800
> 
>     drm/i915: Make pin count per VMA

It's been discussed before (frontbuffer tracking) so I was surprised
that this patch wasn't already on the list.
-Chris
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 8c11037eb2d2..04b0271d48ff 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -949,9 +949,7 @@  i915_gem_execbuffer_move_to_active(struct list_head *vmas,
 		if (obj->base.write_domain) {
 			obj->dirty = 1;
 			obj->last_write_seqno = intel_ring_get_seqno(ring);
-			/* check for potential scanout */
-			if (i915_gem_obj_ggtt_bound(obj) &&
-			    i915_gem_obj_to_ggtt(obj)->pin_count)
+			if (obj->pin_display) /* check for potential scanout */
 				intel_mark_fb_busy(obj, ring);
 		}