mesa/src
Francisco Jerez 8eb4f2092a intel/fs: Add support for copy-propagating a block of multiple FIXED_GRFs.
In cases where a LOAD_PAYLOAD instruction copies a single block of
sequential GRF registers into the destination (see
is_identity_payload()), splitting the block copy into a number of ACP
entries (one for each LOAD_PAYLOAD source) is undesirable, because
that prevents copy propagation into any instructions which read
multiple components at once with the same source (the barycentric
source of the LINTERP instruction is going to be the overwhelmingly
most common example).

Technically it would also be possible to do this for VGRF sources, but
there is little benefit from that since register coalesce already
covers many of those cases -- There is no way for a block of
FIXED_GRFs to be coalesced into a VGRF though.

This prevents the following shader-db regressions (including SIMD32
programs) in combination with the interpolation rework part of this
series.  On SKL:

   total instructions in shared programs: 18595160 -> 18828562 (1.26%)
   instructions in affected programs: 13374946 -> 13608348 (1.75%)
   helped: 7
   HURT: 108977

   total spills in shared programs: 9116 -> 9106 (-0.11%)
   spills in affected programs: 404 -> 394 (-2.48%)
   helped: 7
   HURT: 9

   total fills in shared programs: 8994 -> 9176 (2.02%)
   fills in affected programs: 898 -> 1080 (20.27%)
   helped: 7
   HURT: 9

   LOST:   469
   GAINED: 220

On SNB:

   total instructions in shared programs: 13996898 -> 14096222 (0.71%)
   instructions in affected programs: 8088546 -> 8187870 (1.23%)
   helped: 2
   HURT: 66520

   total spills in shared programs: 2985 -> 2961 (-0.80%)
   spills in affected programs: 632 -> 608 (-3.80%)
   helped: 2
   HURT: 0

   total fills in shared programs: 3144 -> 3128 (-0.51%)
   fills in affected programs: 1515 -> 1499 (-1.06%)
   helped: 2
   HURT: 0

   LOST:   0
   GAINED: 4

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2020-01-17 13:21:41 -08:00
..
amd aco: print assembly with CLRXdisasm for GFX6-GFX7 if found on the system 2020-01-17 17:41:32 +00:00
broadcom nir/lower_atomics_to_ssbo: Also lower barriers 2020-01-13 17:23:47 +00:00
compiler nir: Fix printing of ~0 .locations. 2020-01-16 23:29:10 +00:00
drm-shim drm-shim: fix EOF case 2019-11-13 12:39:14 +00:00
egl egl/android: Restrict minimum triple buffering for android color_buffers 2020-01-15 09:42:08 +00:00
etnaviv etnaviv: add drm-shim 2019-11-21 22:56:04 +00:00
freedreno vulkan/wsi: Use the interface from the real modifiers extension 2020-01-17 18:27:29 +00:00
gallium st/dri: do FLUSH_VERTICES before calling flush_resource 2020-01-17 15:04:35 -05:00
gbm meson: move the generic symbols check arguments to a common variable 2019-11-05 20:30:47 +00:00
getopt meson: build getopt when using msvc 2019-09-10 20:36:47 +00:00
glx dri: Avoid swapbuffer throttling in glXCopySubBufferMESA 2019-10-05 13:19:37 +00:00
gtest meson: gtest needs pthreads 2019-11-07 06:11:19 -08:00
hgl haiku: fix Mesa build 2019-10-01 10:31:02 +00:00
imgui meson: drop intel_ prefix on imgui_core 2019-12-10 15:16:02 +00:00
intel intel/fs: Add support for copy-propagating a block of multiple FIXED_GRFs. 2020-01-17 13:21:41 -08:00
loader intel: Use similar brand strings to the Windows drivers 2020-01-13 19:42:35 -08:00
mapi glapi / teximage: implement EGLImageTargetTexStorageEXT 2020-01-13 14:57:18 -08:00
mesa gallium: add st_context_iface::flush_resource to call FLUSH_VERTICES 2020-01-17 15:04:35 -05:00
panfrost panfrost/midgard: Fix swizzle for store instructions 2020-01-17 12:54:31 +00:00
util vulkan/wsi: Add a driconf option to force WSI to advertise BGRA8_UNORM first 2020-01-14 19:27:13 +00:00
vulkan vulkan/wsi: Implement VK_KHR_swapchain_mutable_format 2020-01-17 18:27:29 +00:00
meson.build meson: only build imgui when needed 2019-11-25 07:51:56 +00:00
SConscript