mesa/src
Iago Toral Quiroga 80b0483ea9 broadcom/compiler: avoid using ldvary sequence to hide latency of branching
This can cause us to stomp the contents of r5 before we have a chance to read
it, like this:

0x3d103186bb800000 nop                           ; nop                         ; ldvary.r0
0x3d105686bbf40000 nop                           ; mov rf26, r5                ; ldvary.r1
0x020000ef0000d000 bu.allna  232, r:unif (0x0000001c / 0.000000)
0x3d1096c6bbf40000 nop                           ; mov rf27, r5                ; ldvary.r2

Here, the MOV in the last instruction is supposed to read r5 produced from
ldvary.r0, but because we have inserted the bu instruction in between now
that read happens at the same time that ldvary.r1 updates r5, stomping the
value we were supposed to read.

Fix this by disallowing injection of a branch instruction in between an ldvary
instruction and its write to the r5 register 2 instructions later.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7062
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19616>
(cherry picked from commit 1174f37609)
2022-11-09 21:22:06 +00:00
..
amd ac/nir,radv: rework and fix NGG queries enables for VS/TES 2022-11-09 21:22:06 +00:00
android_stub
asahi asahi: Identify counts for compute kernels 2022-10-29 19:23:51 +00:00
broadcom broadcom/compiler: avoid using ldvary sequence to hide latency of branching 2022-11-09 21:22:06 +00:00
c11 c11: Getting the macro guard of HAVE_PTHREAD in c11/threads.h to be consistence with util/u_uthread.h 2022-10-20 03:04:56 +00:00
compiler nir: Don't reorder volatile intrinsics 2022-11-09 21:22:06 +00:00
drm-shim
egl egl/wgl: Implement interop methods 2022-11-02 18:11:41 +00:00
etnaviv util/mesa/wide: Rename _SIMPLE_MTX_INITIALIZER_NP to SIMPLE_MTX_INITIALIZER 2022-10-14 03:27:41 +00:00
freedreno tu: tu: Clear patchControlPoints dirty state with static patchControlPoints 2022-11-09 21:22:05 +00:00
gallium panfrost: Copy resources when necessary 2022-11-09 21:22:06 +00:00
gbm utils: Merge util/debug.* into util/u_debug.* and remove util/debug.* 2022-11-02 07:25:39 +00:00
getopt
glx glx: Fixes apple/apple_visual.c that include non-exist util/debug.h 2022-11-09 21:22:05 +00:00
gtest
hgl
imagination nir: Drop infer_non_readable option for nir_opt_access() 2022-11-02 03:42:04 +00:00
imgui
intel intel: Don't cross DWORD boundaries with byte scratch load/store 2022-11-09 21:22:06 +00:00
loader loader/dri3: Add DRI performance option to wait for next buffer on swap 2022-10-25 08:30:35 +00:00
mapi mapi: Remove the need of _MTX_INITIALIZER_NP by using simple_mtx_t/SIMPLE_MTX_INITIALIZER in stub.c 2022-10-20 01:32:47 +00:00
mesa mesa/st: Query driver for interop data 2022-11-02 18:11:41 +00:00
microsoft utils: Merge util/debug.* into util/u_debug.* and remove util/debug.* 2022-11-02 07:25:39 +00:00
nouveau nv50/ir/nir: ignore sampler for TXF/TXQ ops. 2022-11-02 12:29:34 +00:00
panfrost panfrost: Precompile shaders 2022-11-02 16:52:11 +00:00
tool
util utils: Merge util/debug.* into util/u_debug.* and remove util/debug.* 2022-11-02 07:25:39 +00:00
virtio utils: Merge util/debug.* into util/u_debug.* and remove util/debug.* 2022-11-02 07:25:39 +00:00
vulkan vulkan/wsi/display: Reset connector state in vkReleaseDisplay(). 2022-11-09 21:22:06 +00:00
meson.build