i965: Split Gen4-5 BlitFramebuffer code; prefer BLT over Meta.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 5 Mar 2015 02:14:31 +0000 (18:14 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 5 Mar 2015 18:36:03 +0000 (10:36 -0800)
commitaa0705c06c03d2b882ac7b185ed123bc8a10d716
treec5cf900b7eb0e45c40363f4f2cdbac3fca949f8e
parent4ddd981e407f9e97fcbb862c241f1ce165616fd4
i965: Split Gen4-5 BlitFramebuffer code; prefer BLT over Meta.

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
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Cc: "10.5" <mesa-stable@lists.freedesktop.org>
src/mesa/drivers/dri/i965/intel_fbo.c