[Mesa-dev] [PATCH] i965: Prefer Meta over the BLT for BlitFramebuffer.

Jason Ekstrand jason at jlekstrand.net
Thu Jan 15 07:09:40 PST 2015


On Jan 15, 2015 1:49 AM, "Kenneth Graunke" <kenneth at whitecape.org> wrote:
>
> On Thursday, January 15, 2015 01:41:14 AM Kenneth Graunke wrote:
> > There's some debate about whether we should use Meta or BLORP,
> > but either should run circles around the BLT engine.
> >
> > Improves performance in "copypixrate -blit -back" (from Mesa demos)
> > by 232.037% +/- 3.15795% (n=10) on Broadwell GT3e.
> >
> > Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> > ---
> >  src/mesa/drivers/dri/i965/intel_fbo.c | 14 +++++++-------
> >  1 file changed, 7 insertions(+), 7 deletions(-)
> >
> > Ben: this might be a good candidate for your braswell branch.
> >
> > Jason: I bet this will affect your PBO upload path.  I suspect it may
> > make it a lot faster on Gen8+, as you might've been getting the BLT
> > engine when trying to use BlitFramebuffer.  I haven't tested.
> >
> > diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c
b/src/mesa/drivers/dri/i965/intel_fbo.c
> > index 37ac613f..b54c11d 100644
> > --- a/src/mesa/drivers/dri/i965/intel_fbo.c
> > +++ b/src/mesa/drivers/dri/i965/intel_fbo.c
> > @@ -882,6 +882,13 @@ intel_blit_framebuffer(struct gl_context *ctx,
> >     if (mask == 0x0)
> >        return;
> >
> > +   mask = _mesa_meta_BlitFramebuffer(ctx,
> > +                                     srcX0, srcY0, srcX1, srcY1,
> > +                                     dstX0, dstY0, dstX1, dstY1,
> > +                                     mask, filter);
> > +   if (mask == 0x0)
> > +      return;
> > +
> >     if (brw->gen >= 8 && (mask & GL_STENCIL_BUFFER_BIT)) {
> >        brw_meta_fbo_stencil_blit(brw_context(ctx),
> >                                  srcX0, srcY0, srcX1, srcY1,
> > @@ -899,13 +906,6 @@ intel_blit_framebuffer(struct gl_context *ctx,
> >     if (mask == 0x0)
> >        return;
> >
> > -   mask = _mesa_meta_BlitFramebuffer(ctx,
> > -                                     srcX0, srcY0, srcX1, srcY1,
> > -                                     dstX0, dstY0, dstX1, dstY1,
> > -                                     mask, filter);
> > -   if (mask == 0x0)
> > -      return;
> > -
> >     _swrast_BlitFramebuffer(ctx,
> >                             srcX0, srcY0, srcX1, srcY1,
> >                             dstX0, dstY0, dstX1, dstY1,
> >
>
> Just realized there isn't enough context for this patch to make any sense.
> It changes the ordering to:
>
> 1. BLORP
> 2. Meta
> 3. Gen8 Stencil Blit (special case)
> 4. BLT
> 5. Software
>
> Previously, the order was:
>
> 1. BLORP
> 2. Gen8 Stencil Blit (special case)
> 3. Meta
> 4. BLT
> 5. Software

Those lists don't seem to match the patch. The patch moves meta up a ways.
In the lists it looks like you just swap meta and stencil which, as you
mentioned, does nothing.

Also, it won't affect the speed of my PBO code as it calls meta
explicitly.  That could change and doing so might make it faster on older
gens where we have blorp, but I'm not sure.
--Jason

>
> (Meta doesn't handle stencil blits today, so moving it above the Gen8
stencil
>  blit special case shouldn't have any effect.)
>
> --Ken
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150115/9c1be961/attachment.html>


More information about the mesa-dev mailing list