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

Kenneth Graunke kenneth at whitecape.org
Thu Jan 15 01:41:14 PST 2015


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,
-- 
2.2.1



More information about the mesa-dev mailing list