swr: fix crash in swr_update_derived following st/mesa state changes
authorBruce Cherniak <bruce.cherniak@intel.com>
Thu, 2 Mar 2017 04:58:36 +0000 (22:58 -0600)
committerTim Rowley <timothy.o.rowley@intel.com>
Thu, 2 Mar 2017 19:39:56 +0000 (13:39 -0600)
commita7b8d50bcb56b5d093aee24a722f2a5288b79b14
tree08821eff90778a9eca0a2f8a0937b0c17e916df6
parent74aa6fd9a0b5e137101720fb0ddb43cb06a47f28
swr: fix crash in swr_update_derived following st/mesa state changes

Recent change to st/mesa state update logic caused major regressions to
swr validation code.

swr uses the same validation logic (swr_update_derived) for both draw
and Clear calls.  New st/mesa state update logic results in certain state
objects not being set/bound during Clear.  This was causing null ptr
exceptions.  Creation of static dummy state objects allows setting these
pointers during Clear validation, without interfering with relevant state
validation.

Once fixed, new logic also highlighted an error in dirty bit checking for
fragment shader and clip validation.

(The alternative is to have a simplified validation routine for Clear.
Which may do that at some point.)

Reviewed-by: Tim Rowley <timothy.o.rowley@intel.com>
src/gallium/drivers/swr/swr_shader.cpp
src/gallium/drivers/swr/swr_state.cpp