summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/r200/r200_lock.c
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2004-09-22 06:27:02 +0000
committerEric Anholt <[email protected]>2004-09-22 06:27:02 +0000
commit0c8f8d3dc9d60ed34eeca7f3606651420a81753c (patch)
tree3876839944c4194d4eac39863e96b64c4cfd7683 /src/mesa/drivers/dri/r200/r200_lock.c
parent029ee9c680cd097b82d3d301b3854d57993d4464 (diff)
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.
Diffstat (limited to 'src/mesa/drivers/dri/r200/r200_lock.c')
-rw-r--r--src/mesa/drivers/dri/r200/r200_lock.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/r200/r200_lock.c b/src/mesa/drivers/dri/r200/r200_lock.c
index 1700d31e169..539a4be619b 100644
--- a/src/mesa/drivers/dri/r200/r200_lock.c
+++ b/src/mesa/drivers/dri/r200/r200_lock.c
@@ -116,4 +116,6 @@ void r200GetLock( r200ContextPtr rmesa, GLuint flags )
for ( i = 0 ; i < rmesa->nr_heaps ; i++ ) {
DRI_AGE_TEXTURES( rmesa->texture_heaps[ i ] );
}
+
+ rmesa->lost_context = GL_TRUE;
}