i965: Always re-emit the pipeline select during invariant state emission
authorChris Wilson <chris@chris-wilson.co.uk>
Sun, 23 Aug 2015 08:24:57 +0000 (09:24 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 24 Aug 2015 07:57:55 +0000 (08:57 +0100)
commit4e5752e2b78243a71766538f62ca0a80488047a7
tree544fa0a867548816c2287ee0be6f81271b14bef4
parenta83c36b5c0c64c717ced76db89bab900006648aa
i965: Always re-emit the pipeline select during invariant state emission

On the older platforms where we don't have logical contexts preserving
state across batches, we emit the invariant state setup on every batch
using the brw_invariant_state atom. This includes the pipeline selection
which is cached with the introduction of

commit 0e0e23ef537c9add672ff322f34e129a07edc55e
Author: Jordan Justen <jordan.l.justen@intel.com>
Date:   Wed Apr 22 11:43:50 2015 -0700

    i965/state: Emit pipeline select when changing pipelines

However, we do not reset the cache between batches on context-less
platforms resulting in us not setting the pipeline selection and can
cause GPU hangs if a media pipelined was loaded in the meantime (e.g.
mixing mplayer/gstreamer using libva and gnome-shell). A simple solution
is to just forcibly re-emit the pipeline select along with the invariant
state and reset the cache at that point.

Reported-and-tested-by: Tomasz C. <tomaszc@o2.pl>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91254
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Cc: "10.6 11.0" <mesa-stable@lists.freedesktop.org>
src/mesa/drivers/dri/i965/brw_misc_state.c