summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r200/r200_cmdbuf.c
diff options
context:
space:
mode:
authorEric Anholt <anholt@FreeBSD.org>2004-10-02 05:22:19 +0000
committerEric Anholt <anholt@FreeBSD.org>2004-10-02 05:22:19 +0000
commit599ea624a3b95f397d7837a0254c39c9bd0ab0ed (patch)
tree17f7971e37b1cdd5022a7524f7be07bf895c7e6b /src/mesa/drivers/dri/r200/r200_cmdbuf.c
parente5856a2960b6a65e1e5bb55d98a7e40498b5bf6d (diff)
If an application cleared before any state had been emitted, that clear would
happen before any state had been set, causing a hang later on. Fix this by calling r200Flush instead of FIREVERTICES (which checks if any state has been emitted but not flushed, before calling Flush) in r200Clear. While here, add some more debugging info which was useful, and remove an unnecessary save/restore in BackUpAndEmit.
Diffstat (limited to 'src/mesa/drivers/dri/r200/r200_cmdbuf.c')
-rw-r--r--src/mesa/drivers/dri/r200/r200_cmdbuf.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/r200/r200_cmdbuf.c b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
index 5cdb3657f9..531ec8933a 100644
--- a/src/mesa/drivers/dri/r200/r200_cmdbuf.c
+++ b/src/mesa/drivers/dri/r200/r200_cmdbuf.c
@@ -112,6 +112,9 @@ static void r200SaveHwState( r200ContextPtr rmesa )
struct r200_state_atom *atom;
char * dest = rmesa->backup_store.cmd_buf;
+ if (R200_DEBUG & DEBUG_STATE)
+ fprintf(stderr, "%s\n", __FUNCTION__);
+
rmesa->backup_store.cmd_used = 0;
foreach( atom, &rmesa->hw.atomlist ) {
@@ -120,10 +123,14 @@ static void r200SaveHwState( r200ContextPtr rmesa )
memcpy( dest, atom->cmd, size);
dest += size;
rmesa->backup_store.cmd_used += size;
+ if (R200_DEBUG & DEBUG_STATE)
+ print_state_atom( atom );
}
}
assert( rmesa->backup_store.cmd_used <= R200_CMD_BUF_SZ );
+ if (R200_DEBUG & DEBUG_STATE)
+ fprintf(stderr, "Returning to r200EmitState\n");
}
void r200EmitState( r200ContextPtr rmesa )