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

Kenneth Graunke kenneth at whitecape.org
Thu Jan 15 01:49:45 PST 2015


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

(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 --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150115/19f0980f/attachment.sig>


More information about the mesa-dev mailing list