mesa/src/intel
Jose Maria Casanova Crespo 62f37ee53d i965/fs: unspills shoudn't use grf127 as dest since Gen8+
At 232ed89802 "i965/fs: Register allocator
shoudn't use grf127 for sends dest" we didn't take into account the case
of SEND instructions that are not send_from_grf. But since Gen7+ although
the backend still uses MRFs internally for sends they are finally
assigned to a GRFs.

In the case of unspills the backend assigns directly as source its
destination because it is suppose to be available. So we always have a
source-destination overlap. If the reg_allocator assigns registers that
include the grf127 we fail the validation rule that affects Gen8+
"r127 must not be used for return address when there is a src and dest
overlap in send instruction."

So this patch activates the grf127_send_hack_node for Gen8+ and if we
have any register spilled we add interferences to the destination of
the unspill operations.

We also need to avoid that opt_bank_conflicts() optimization, that runs
after the register allocation, doesn't move things around, causing the
grf127 to be used in the condition we were avoiding.

Fixes piglit test tests/spec/arb_compute_shader/linker/bug-93840.shader_test
and some shader-db crashed because of the grf127 validation rule..

v2: make sure that opt_bank_conflicts() optimization doesn't change
the use of grf127. (Caio)

Found by Caio Marcelo de Oliveira Filho

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107193
Fixes: 232ed89802 "i965/fs: Register allocator shoudn't use grf127 for sends dest"
Cc: 18.1 <mesa-stable@lists.freedesktop.org>
Cc: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Cc: Jason Ekstrand <jason@jlekstrand.net>

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
2018-07-12 18:02:26 +02:00
..
blorp intel/anv,blorp,i965: Implement the SKL 16x MSAA SIMD32 workaround 2018-06-28 13:25:18 -07:00
common intel/batch_decoder: Recurse for all 2nd level batches 2018-07-09 16:40:54 -07:00
compiler i965/fs: unspills shoudn't use grf127 as dest since Gen8+ 2018-07-12 18:02:26 +02:00
dev intel: devinfo: add simulator id 2018-07-05 11:57:45 +01:00
genxml intel/genxml: Add bitmasks for CS_DEBUG_MODE2/INSTPM. 2018-06-18 14:41:38 -07:00
isl meson: fix i965/anv/isl genX static lib names 2018-06-18 12:03:24 +01:00
tools intel/tools/dump_gpu: Add option to print ppgtt mappings. 2018-07-10 09:05:44 -07:00
vulkan anv/android: Fix type error in call to vk_errorf() 2018-07-11 11:09:19 -07:00
Android.blorp.mk intel: android: remove libdrm_intel requirement 2017-03-30 19:07:23 +01:00
Android.common.mk android: link libmesa_intel_common with zlib and expat 2017-08-02 10:30:50 +03:00
Android.compiler.mk android: fix build issues with brw_nir_trig_workarounds.c 2017-10-04 07:39:05 +03:00
Android.dev.mk android: Use local i915_drm.h rather than the system one. 2018-03-23 10:05:02 -07:00
Android.genxml.mk intel/genxml/icl: Generate packing headers 2018-02-15 16:14:55 -08:00
Android.isl.mk intel/isl/icl: Build and use gen11 surface state emit functions 2018-02-15 16:14:55 -08:00
Android.mk intel: Add missing includes for building on Android 2018-03-06 00:14:22 -08:00
Android.vulkan.mk vulkan: Drop vk_android_native_buffer.xml 2018-04-10 19:29:49 -07:00
Makefile.am intel: tools: import intel_aubdump 2018-07-05 11:57:45 +01:00
Makefile.blorp.am blorp: automake: add TODO to the tarball 2017-02-24 17:37:00 +00:00
Makefile.common.am automake: intel: correctly append to the LIBADD variable 2017-11-08 14:23:57 +00:00
Makefile.compiler.am intel/isl: Add format conversion code 2018-05-09 11:16:33 -07:00
Makefile.dev.am intel: Split gen_device_info out into libintel_dev 2018-03-05 09:47:37 -08:00
Makefile.genxml.am intel: genxml: automake: include gen_bits_header.py in the tarball 2017-04-05 13:16:28 +01:00
Makefile.isl.am intel/isl: Add format conversion code 2018-05-09 11:16:33 -07:00
Makefile.sources anv: Add KHR_display extension to anv [v7] 2018-06-19 14:17:46 -07:00
Makefile.tools.am intel: Move batch decoder/disassembler from tools/ to common/ 2018-05-02 09:27:56 -07:00
Makefile.vulkan.am anv/android: Fix Autotools build for VK_ANDROID_native_buffer 2018-07-11 11:09:16 -07:00
meson.build intel/common: Use isl for decoder surface formats 2018-03-05 09:51:04 -08:00