i965/fs: Make emit_shader_time_end() insert before EOT.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 27 Feb 2015 06:55:54 +0000 (22:55 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 9 Mar 2015 23:07:04 +0000 (16:07 -0700)
commit4ebeb71573ad44f7657810dc5dd2c9030e3e63db
tree00329a9d4e619753cc998bb884c0a44b2bfbd63f
parente43af8d09f919d02b5ac0810c1c0f1783cbef6ef
i965/fs: Make emit_shader_time_end() insert before EOT.

Previously, we emitted the shader-time epilogue from emit_fb_writes(),
during the middle of looping through color regions (or emit_urb_writes
for the VS).  This is duplicated several times and rather awkward.

I need to fix a bug in our FB write handling, and it will be a lot
easier if we move emit_shader_time_end() out of there.

Now, we simply emit FB writes/URB writes, and subsequently have
emit_shader_time_end() insert instructions before the final SEND with
EOT.  Not only is this simpler, it's actually a slight improvement:
we now include the MOVs to set up the final FB write payload in our
shader-time measurements.

Note that INTEL_DEBUG=shader_time only exists on Gen7+, and uses
send-from-GRF.  (In the past, we might have hit trouble where both
attempt to use MRFs for messages; that's not a problem now.)

v2: Rebase on v3 of the previous patch and other shader_time fixes.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com> [v1]
Acked-by: Matt Turner <mattst88@gmail.com>
Cc: mesa-stable@lists.freedesktop.org
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp