diff options
author | Dave Airlie <airlied@redhat.com> | 2009-02-11 16:52:56 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-02-11 16:52:56 +1000 |
commit | 7e98907eb8da936d72902fa0bb456962fe6ac551 (patch) | |
tree | ede6ae56710225af64c286ac48a18183543f3fd9 | |
parent | 832446c892caa0656f9d903c42c4e05fae44ef3d (diff) |
radeon: cleanup cmdbuffer
-rw-r--r-- | src/mesa/drivers/dri/r300/r300_cmdbuf.c | 5 | ||||
-rw-r--r-- | src/mesa/drivers/dri/r300/r300_context.c | 4 | ||||
-rw-r--r-- | src/mesa/drivers/dri/radeon/common_misc.c | 8 |
3 files changed, 11 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index bbc7157595..ec702f6eb3 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -97,12 +97,12 @@ static INLINE void r300EmitAtoms(r300ContextPtr r300, GLboolean dirty) struct radeon_state_atom *atom; int dwords; - cp_wait(r300, R300_WAIT_3D | R300_WAIT_3D_CLEAN); + cp_wait(r300, R300_WAIT_3D | R300_WAIT_3D_CLEAN); BEGIN_BATCH_NO_AUTOSTATE(2); OUT_BATCH(cmdpacket0(r300->radeon.radeonScreen, R300_TX_INVALTAGS, 1)); OUT_BATCH(R300_TX_FLUSH); END_BATCH(); - end_3d(r300); + end_3d(r300); /* Emit actual atoms */ foreach(atom, &r300->hw.atomlist) { @@ -724,6 +724,5 @@ void r300DestroyCmdBuf(r300ContextPtr r300) foreach(atom, &r300->hw.atomlist) { FREE(atom->cmd); } - rcommonDestroyCmdBuf(&r300->radeon); } diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 9ab7e3ae88..3e47888e45 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -487,15 +487,17 @@ void r300DestroyContext(__DRIcontextPrivate * driContextPriv) _swrast_DestroyContext(r300->radeon.glCtx); rcommonFlushCmdBuf(&r300->radeon, __FUNCTION__); - r300DestroyCmdBuf(r300); if (radeon->state.scissor.pClipRects) { FREE(radeon->state.scissor.pClipRects); radeon->state.scissor.pClipRects = NULL; } + r300DestroyCmdBuf(r300); + radeonCleanupContext(&r300->radeon); + /* the memory manager might be accessed when Mesa frees the shared * state, so don't destroy it earlier */ diff --git a/src/mesa/drivers/dri/radeon/common_misc.c b/src/mesa/drivers/dri/radeon/common_misc.c index 21719c69ec..333db053bb 100644 --- a/src/mesa/drivers/dri/radeon/common_misc.c +++ b/src/mesa/drivers/dri/radeon/common_misc.c @@ -866,6 +866,9 @@ void radeonCleanupContext(radeonContextPtr radeon) FILE *track; struct radeon_renderbuffer *rb; GLframebuffer *fb; + + /* free the Mesa context */ + _mesa_destroy_context(radeon->glCtx); fb = (void*)radeon->dri.drawable->driverPrivate; rb = (void *)fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer; @@ -906,12 +909,13 @@ void radeonCleanupContext(radeonContextPtr radeon) * radeon->glCtx->DriverCtx = NULL; */ - /* free the Mesa context */ - _mesa_destroy_context(radeon->glCtx); + /* free the option cache */ driDestroyOptionCache(&radeon->optionCache); + rcommonDestroyCmdBuf(radeon); + if (radeon->state.scissor.pClipRects) { FREE(radeon->state.scissor.pClipRects); radeon->state.scissor.pClipRects = 0; |