Set looks great with a couple suggestions:
* In swr_update_derived() it seems like the GS should also depend on SWR_NEW_VS
dirty since swr_generate_gs_key() references ctx->vs->info.base.
*In swr_context.h the SWR_NEW_ALL mask should be expanded by 2-bits to account
for the new dirty flags. Or
---
src/gallium/drivers/swr/swr_context.cpp| 2 +-
src/gallium/drivers/swr/swr_context.h | 25 +-
src/gallium/drivers/swr/swr_draw.cpp | 50 +--
src/gallium/drivers/swr/swr_fence_work.cpp | 21 ++
src/gallium/drivers/swr/swr_fence_work.h | 3 +
src/gallium/drivers/swr/swr_s