Mesa (master): i965: Prefer Meta over the BLT for BlitFramebuffer.

Kenneth Graunke kwg at kemper.freedesktop.org
Wed Feb 18 06:08:16 UTC 2015


Module: Mesa
Branch: master
Commit: d523fefa756eef9c7a2c0d91cf4c2df10b89ed2a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d523fefa756eef9c7a2c0d91cf4c2df10b89ed2a

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Jan 15 01:41:14 2015 -0800

i965: Prefer Meta over the BLT for BlitFramebuffer.

There's some debate about whether we should use Meta or BLORP,
but either should run circles around the BLT engine.

In particular, this means that Gen8+ will use the 3D engine for blits,
like we do on Gen6-7.

Improves performance in "copypixrate -blit -back" (from Mesa demos)
by 232.037% +/- 3.15795% (n=10) on Broadwell GT3e.

v2: Rebase on Laura's changes.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Matt Turner <mattst88 at gmail.com>
Cc: "10.5" <mesa-stable at lists.freedesktop.org>

---

 src/mesa/drivers/dri/i965/intel_fbo.c |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c b/src/mesa/drivers/dri/i965/intel_fbo.c
index 3ee1a55..174cea0 100644
--- a/src/mesa/drivers/dri/i965/intel_fbo.c
+++ b/src/mesa/drivers/dri/i965/intel_fbo.c
@@ -885,6 +885,13 @@ intel_blit_framebuffer(struct gl_context *ctx,
    if (mask == 0x0)
       return;
 
+   mask = _mesa_meta_BlitFramebuffer(ctx, readFb, drawFb,
+                                     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), readFb, drawFb,
                                 srcX0, srcY0, srcX1, srcY1,
@@ -902,13 +909,6 @@ intel_blit_framebuffer(struct gl_context *ctx,
    if (mask == 0x0)
       return;
 
-   mask = _mesa_meta_BlitFramebuffer(ctx, readFb, drawFb,
-                                     srcX0, srcY0, srcX1, srcY1,
-                                     dstX0, dstY0, dstX1, dstY1,
-                                     mask, filter);
-   if (mask == 0x0)
-      return;
-
    _swrast_BlitFramebuffer(ctx, readFb, drawFb,
                            srcX0, srcY0, srcX1, srcY1,
                            dstX0, dstY0, dstX1, dstY1,




More information about the mesa-commit mailing list