[Intel-gfx] [PATCH 2/2] drm/i915: use semaphores for the display plane
Ben Widawsky
ben at bwidawsk.net
Thu Mar 22 17:07:09 CET 2012
On Thu, 22 Mar 2012 09:56:07 +0000
Chris Wilson <chris at chris-wilson.co.uk> wrote:
> On Wed, 21 Mar 2012 17:19:13 -0700, Ben Widawsky <ben at bwidawsk.net>
> wrote:
> > In theory this will have performance and power improvements.
> > Performance because we don't need to stall when the scanout BO is
> > busy, and power because we don't have to stall when the BO is busy
> > ie. we can get the work done sooner and put the CPU to sleep (and
> > one less interrupt required).
> >
> > Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> > ---
> > drivers/gpu/drm/i915/i915_gem.c | 8 +++-----
> > 1 file changed, 3 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_gem.c
> > b/drivers/gpu/drm/i915/i915_gem.c index ce2fee5..96ad162 100644
> > --- a/drivers/gpu/drm/i915/i915_gem.c
> > +++ b/drivers/gpu/drm/i915/i915_gem.c
> > @@ -3041,9 +3041,7 @@ int i915_gem_object_set_cache_level(struct
> > drm_i915_gem_object *obj,
> > * any flushes to be pipelined (for pageflips).
> > *
> > * For the display plane, we want to be in the GTT but out of any
> > write
> > - * domains. So in many ways this looks like set_to_gtt_domain()
> > apart from the
> > - * ability to pipeline the waits, pinning and any additional
> > subtleties
> > - * that may differentiate the display plane from ordinary buffers.
> > + * domains. So in many ways this looks like set_to_gtt_domain().
> ...apart from the whole pinning and pipelining. It looks less like
> set-to-gtt-domain over time.
>
> Not an improvement. I'll be the first to admit that it is not a great
> comment, but at least it does try to capture why we don't just treat
> the display plane as GTT. A better comment would explain our concept
> of display plane and pipelining.
Separate patch though, don't you think? And it is now pipe-lining the
waits, so I'm confused why you don't think it's an improvement.
>
> > */
> > int
> > i915_gem_object_pin_to_display_plane(struct drm_i915_gem_object
> > *obj, @@ -3058,8 +3056,8 @@
> > i915_gem_object_pin_to_display_plane(struct drm_i915_gem_object
> > *obj, return ret;
> > if (pipelined != obj->ring) {
> > - ret = i915_gem_object_wait_rendering(obj);
> > - if (ret == -ERESTARTSYS)
> > + ret = i915_gem_object_sync(obj, pipelined);
> > + if (ret)
> > return ret;
> > }
>
> This looks eerily familiar.
Yes. Danvet enlightened me that you'd done these patches before, but he
said they no longer applied and I couldn't find them in my mail
anywhere so I wasn't sure how similar it was or wasn't. Assuming I redo
this one, I'll be sure to add a note in the commit.
> -Chris
>
More information about the Intel-gfx
mailing list