mesa/src
Kenneth Graunke bafbe7c23a intel/compiler: Set NoMask on cr0 access for float controls mode
This is trying to clear a bit in the control register.  However, it's
executing with whatever channel mask happens to be active.  Typically
this is the one at the start of the program, so at least some channels
will be active.  Typically the first channel will be active due to
packed dispatch, but that's not always guaranteed.  Without NoMask,
the float controls writes may randomly not happen.

Recent GPUs also seem to have a hang issue when the first instruction in
the shader doesn't have any active channels.  Having an instruction with
NoMask at the start of the program works around the issue.  See HSD bug
14017989577.  In our case, the float controls preamble was breaking that
restriction every time, causing us to run into this problem frequently.

Thanks to Tapani Pälli for finding this hang issue, and Francisco
Jerez and Lionel Landwerlin for helping pinpoint this issue during
review of a workaround patch in !20194.

Fixes GPU hangs in Elder Scrolls Online, Witcher 3, and likely more.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7639
Fixes: 9da56ffc52 ("i965/fs: add emit_shader_float_controls_execution_mode() and aux functions")
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20214>
2022-12-08 09:54:09 +00:00
..
amd aco: Add s_delay_alu support for GFX11+ 2022-12-07 22:05:25 +00:00
android_stub
asahi agx: Lower VBOs in NIR 2022-12-02 06:25:20 +00:00
broadcom v3dv: fix job serialization for single sync path 2022-12-01 14:08:56 +00:00
c11 c11: Remove _MTX_INITIALIZER_NP for windows 2022-11-09 04:38:28 +00:00
compiler glsl: dont create temps for builtin function inputs 2022-12-08 05:22:27 +00:00
drm-shim drm-shim: drop gnu99 override 2022-09-16 02:06:38 +00:00
egl egl+glx: Always support no_error contexts. 2022-12-05 19:26:41 +00:00
etnaviv tree-wide: Use __func__ instead of __FUNCTION__ in non-gallium code 2022-11-22 06:53:46 +00:00
freedreno tu: allow using resolve engine for SRGB MSAA resolves 2022-12-07 11:55:51 +00:00
gallium virgl: lower FMA and MULADD 2022-12-08 08:40:53 +00:00
gbm dri: Add createNewScreen into the __DRI_MESA extension. 2022-12-05 19:26:41 +00:00
getopt
glx glx: fix xshm check to init xshm_opcode. 2022-12-06 22:31:14 +00:00
gtest gtest: Fix maybe-uninitialized compiler warning 2022-06-29 21:02:18 +00:00
hgl
imagination pvr: Add empty PDS program 2022-12-05 14:46:07 +00:00
imgui
intel intel/compiler: Set NoMask on cr0 access for float controls mode 2022-12-08 09:54:09 +00:00
loader dri: Introduce internal Mesa DRI driver loader extension. 2022-12-05 19:26:41 +00:00
mapi mapi: update gles 1.1 extention packet link 2022-11-20 15:14:01 +00:00
mesa st/mesa: stop using redundant st_context::vp,tcp,tep,gp,fp,cp 2022-12-07 09:12:41 +00:00
microsoft dzn: Don't crash when libd3d12.so can't be found 2022-12-04 01:07:08 +00:00
nouveau drm-shim/nouveau: fix the shim to work with nvif ioctl. 2022-11-09 21:21:22 +00:00
panfrost panfrost: Enable AFBC of more formats 2022-12-01 02:03:15 +00:00
tool pps: make pps-producer RT only on freedreno 2022-11-15 21:21:42 +00:00
util util: minor refactor _mesa_sha1_print() 2022-12-07 12:59:33 +00:00
virtio venus: scrub ignored fields for descriptor writes for push descriptor 2022-12-08 01:56:35 +00:00
vulkan vulkan: VkPolygonMode has a bit more than two values 2022-12-08 00:40:11 +00:00
meson.build meson: build radeon drm-shim also for r300 and r600 2022-11-16 14:37:47 +00:00