mesa/src
Ben Widawsky b069f9eafd i965/fs: Combine tex/fb_write operations (opt)
Certain platforms support the ability to sample from a texture, and write it out
to the file RT - thus saving a costly send instructions (note that this is a
potnential win if one wanted to backport to a tag that didn't have the patch
from Topi which removed excess MOVs from LOAD_PAYLOAD - 97caf5fa04),

v2: Modify the algorithm. Instead of iterating in reverse through blocks and
insts, since the last block/inst is the only thing which can benefit. Rebased
on top of Ken's patching modifying is_last_send

v3: Rebased over almost 2 months, and Incorporated feedback from Matt:
Some comment typo fixes and rewordings.
Whitespace
Move the optimization pass outside of the optimize loop

v4: Some cosmetic changes requested from Ken. These changes ensured that the
optimization function always returned true when an optimization occurred, and
false when one did not. This behavior did not exist with the original patch. As
a result, having the separate helper function which Matt did not like no longer
made sense, and so now I believe everyone should be happy.

Benchmark (n=20)   %diff
*OglBatch5         -1.4
*OglBatch7         -1.79
OglFillTexMulti    5.57
OglFillTexSingle   1.16
OglShMapPcf        0.05
OglTexFilterAniso  3.01
OglTexFilterTri    1.94

No piglit regressions:
(http://otc-gfxtest-01.jf.intel.com:8080/view/dev/job/bwidawsk/112/)

[*] I believe my measurements are incorrect for Batch5-7. If I add this new
optimization, but never emit the new instruction I see similar results.

v5: Remove declaration of combine_tex_header since v4 dropped that function
(Ben)
Remove check for impossible case of an empty block (Matt)
Set dest earlier to avoid extra special-casing in generate_tex (Matt)

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2015-04-14 15:22:47 -07:00
..
egl egl: add initial EGL_MESA_image_dma_buf_export v2.4 2015-04-01 14:10:04 +10:00
gallium radeon/llvm: Improve codegen for KILL_IF 2015-04-14 13:37:12 +00:00
gbm gbm: remove gbm_gallium_drm from the loader 2015-03-24 20:49:31 +00:00
getopt
glsl nir: Store num_direct_uniforms in the nir_shader. 2015-04-11 11:39:48 -07:00
glx glx: replace __FUNCTION__ with __func__ 2015-04-14 12:23:41 -07:00
gtest gtest: Add headers to distribution. 2014-12-12 12:11:46 -08:00
hgl hgl: traverse add-on entries 2014-12-10 14:01:01 +00:00
loader scons: Don't build loader on Windows. 2015-03-25 10:42:35 +00:00
mapi main: Added entry points for NamedRenderbufferStorage/Multisample 2015-03-25 10:05:45 +02:00
mesa i965/fs: Combine tex/fb_write operations (opt) 2015-04-14 15:22:47 -07:00
util util/ralloc: Fix extern "C" usage. 2015-04-13 12:03:26 +01:00
Makefile.am automake: add missing egl files to the tarball 2015-03-25 21:00:02 +00:00
SConscript scons: Don't build loader on Windows. 2015-03-25 10:42:35 +00:00