diff options
author | Kenneth Graunke <kenneth@whitecape.org> | 2015-01-15 01:41:14 -0800 |
---|---|---|
committer | Kenneth Graunke <kenneth@whitecape.org> | 2015-02-17 22:06:06 -0800 |
commit | d523fefa756eef9c7a2c0d91cf4c2df10b89ed2a (patch) | |
tree | 7e716cdf6a3d27092ce6bd145d2aaeca2be7b6ac /src/mesa/drivers/dri/i965/intel_fbo.c | |
parent | bb33a31c3830945ae768ebdaeb686291bdf897fa (diff) | |
download | external_mesa3d-d523fefa756eef9c7a2c0d91cf4c2df10b89ed2a.zip external_mesa3d-d523fefa756eef9c7a2c0d91cf4c2df10b89ed2a.tar.gz external_mesa3d-d523fefa756eef9c7a2c0d91cf4c2df10b89ed2a.tar.bz2 |
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@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Cc: "10.5" <mesa-stable@lists.freedesktop.org>
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_fbo.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_fbo.c | 14 |
1 files 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, |