The previous code would emit a full set of state during the first EmitState on
authorEric Anholt <anholt@FreeBSD.org>
Wed, 22 Sep 2004 06:27:02 +0000 (06:27 +0000)
committerEric Anholt <anholt@FreeBSD.org>
Wed, 22 Sep 2004 06:27:02 +0000 (06:27 +0000)
commit0c8f8d3dc9d60ed34eeca7f3606651420a81753c
tree3876839944c4194d4eac39863e96b64c4cfd7683
parent029ee9c680cd097b82d3d301b3854d57993d4464
The previous code would emit a full set of state during the first EmitState on
a new cmdbuf, to ensure that state wasn't lost across UNLOCK/LOCK pairs (in the
case of context switching).  This was rather inefficient.  Instead, after
flushing a cmdbuf, mark the state as needing to be saved on UNLOCK.  Then, at
the beginning of flushing a cmdbuf, if we actually have lost the context, go
back and emit a new cmdbuf with the full set of state, before continuing with
the cmdbuf flush.  Also, remove the dirty/clean atom lists, since atoms are
emitted in a fixed order these days, and go with a simpler single list.

Provides a 14% improvement in ipers performance in my tests, along with other
apps.
src/mesa/drivers/dri/r200/r200_cmdbuf.c
src/mesa/drivers/dri/r200/r200_context.c
src/mesa/drivers/dri/r200/r200_context.h
src/mesa/drivers/dri/r200/r200_ioctl.c
src/mesa/drivers/dri/r200/r200_ioctl.h
src/mesa/drivers/dri/r200/r200_lock.c
src/mesa/drivers/dri/r200/r200_lock.h
src/mesa/drivers/dri/r200/r200_state_init.c