summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/radeon
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2009-01-15 16:25:37 +1000
committerDave Airlie <airlied@linux.ie>2009-01-15 16:38:59 +1000
commit0c0a55a21158e1f97cf140c0a1c0531c06751873 (patch)
tree5a4d2c03e7c316384e298ad48e404816c687b0ef /src/mesa/drivers/dri/radeon
parent47e3a7d7942d722bc679852fec167cc3a8b5bdd4 (diff)
r100/r200: move to new atom style emission
Diffstat (limited to 'src/mesa/drivers/dri/radeon')
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_ioctl.c15
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_state_init.c4
2 files changed, 13 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_ioctl.c b/src/mesa/drivers/dri/radeon/radeon_ioctl.c
index 2b02d0b71f..cd0f90d748 100644
--- a/src/mesa/drivers/dri/radeon/radeon_ioctl.c
+++ b/src/mesa/drivers/dri/radeon/radeon_ioctl.c
@@ -170,6 +170,7 @@ void radeonEmitState( r100ContextPtr rmesa )
{
struct radeon_state_atom *atom;
char *dest;
+ uint32_t dwords;
if (RADEON_DEBUG & (DEBUG_STATE|DEBUG_PRIMS))
fprintf(stderr, "%s\n", __FUNCTION__);
@@ -212,11 +213,17 @@ void radeonEmitState( r100ContextPtr rmesa )
atom->is_tcl)
atom->dirty = GL_FALSE;
if (atom->dirty) {
- if (atom->check(rmesa->radeon.glCtx, 0)) {
+ dwords = atom->check(rmesa->radeon.glCtx, atom);
+ if (dwords) {
int size = atom->cmd_size * 4;
- memcpy(dest, atom->cmd, size);
- dest += size;
- rmesa->store.cmd_used += size;
+
+ if (atom->emit) {
+ (*atom->emit)(rmesa->radeon.glCtx, atom);
+ } else {
+ memcpy(dest, atom->cmd, size);
+ dest += size;
+ rmesa->store.cmd_used += size;
+ }
atom->dirty = GL_FALSE;
}
}
diff --git a/src/mesa/drivers/dri/radeon/radeon_state_init.c b/src/mesa/drivers/dri/radeon/radeon_state_init.c
index affa9313c9..f39fae8186 100644
--- a/src/mesa/drivers/dri/radeon/radeon_state_init.c
+++ b/src/mesa/drivers/dri/radeon/radeon_state_init.c
@@ -99,14 +99,14 @@ static int cmdscl( int offset, int stride, int count )
#define CHECK( NM, FLAG ) \
static int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom ) \
{ \
- return FLAG; \
+ return FLAG ? atom->cmd_size : 0; \
}
#define TCL_CHECK( NM, FLAG ) \
static int check_##NM( GLcontext *ctx, struct radeon_state_atom *atom ) \
{ \
r100ContextPtr rmesa = R100_CONTEXT(ctx); \
- return !rmesa->radeon.TclFallback && (FLAG); \
+ return (!rmesa->radeon.TclFallback && (FLAG)) ? atom->cmd_size : 0; \
}