i965: Split Gen4-5 BlitFramebuffer code; prefer BLT over Meta

Graphics / Mesa 3D Graphics Library / Mesa - Kenneth Graunke [whitecape.org] - 5 March 2015 12:36 UTC

A while back I switched intel_blit_framebuffer to prefer Meta over the BLT. This meant that Gen8 platforms would start using the 3D engine for blits, just like we do on Gen6-7.5.

However, I hadn't considered Gen4-5 when making that change. The BLT engine appears to be substantially faster on 965GM than using Meta to drive the 3D engine. This isn't too surprising: original Gen4 doesn't support tile offsets (that came on G45), and the level/layer fields don't work for cubemap rendering, so for inconvenient miplevel alignments, we end up blitting or copying data to/from temporaries in order to render to it. We may as well just use the blitter.

I chose to use the BLT on Gen4-5 because they use the same ring for both 3D and BLT; Gen6+ splits it out.

Fixes regressions on 965GM due to botched tile offset code (we should fix those properly as well, but they're longstanding bugs - for now, put things back to the status quo).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89430

aa0705c i965: Split Gen4-5 BlitFramebuffer code; prefer BLT over Meta.
src/mesa/drivers/dri/i965/intel_fbo.c | 50 ++++++++++++++++++++++++++++++++-
1 file changed, 49 insertions(+), 1 deletion(-)

Upstream: cgit.freedesktop.org


  • Share