freedreno/ir3: avoid scheduler deadlock
authorRob Clark <robclark@freedesktop.org>
Wed, 11 Mar 2015 17:21:42 +0000 (13:21 -0400)
committerRob Clark <robclark@freedesktop.org>
Sun, 15 Mar 2015 17:26:56 +0000 (13:26 -0400)
commitfeb858b788cf27b31d12ad8a00805f015d4063cc
tree21ed3fc6af3ea88167ebc34644ad4126f765f76f
parent7208e96bb810a7a6c92fd11bb7f4df8c9b7f1a2d
freedreno/ir3: avoid scheduler deadlock

Deadlock can occur if we schedule an address register write, yet some
instructions which depend on that address register value also depend on
other unscheduled instructions that depend on a different address
register value.  To solve this, before scheduling an address register
write, ensure that all the other dependencies of the instructions which
consume this address register are already scheduled.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
src/gallium/drivers/freedreno/ir3/ir3.h
src/gallium/drivers/freedreno/ir3/ir3_compiler.c
src/gallium/drivers/freedreno/ir3/ir3_sched.c