Module: Mesa Branch: master Commit: 0f0a9e3ee752f1746d6dba748522fb3e15e4af1a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0f0a9e3ee752f1746d6dba748522fb3e15e4af1a
Author: Alex Deucher <[email protected]> Date: Thu Aug 20 12:10:42 2009 -0400 r600: try and get everything in the draw in one IB fixes corruption issues with apps like teapot and geartrain. --- src/mesa/drivers/dri/r600/r700_render.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/r600/r700_render.c b/src/mesa/drivers/dri/r600/r700_render.c index 58b4491..80df78f 100644 --- a/src/mesa/drivers/dri/r600/r700_render.c +++ b/src/mesa/drivers/dri/r600/r700_render.c @@ -341,10 +341,9 @@ void r700EmitState(GLcontext * ctx) return; rcommonEnsureCmdBufSpace(&context->radeon, - context->radeon.hw.max_state_size, __FUNCTION__); + 652, __FUNCTION__); r700SendSQConfig(context); - r700SendUCPState(context); r700SendContextStates(context); r700SendViewportState(context, 0); @@ -357,10 +356,18 @@ static GLboolean r700RunRender(GLcontext * ctx, struct tnl_pipeline_stage *stage) { context_t *context = R700_CONTEXT(ctx); - unsigned int i; + radeonContextPtr radeon = &context->radeon; + unsigned int i, ind_count = 0; TNLcontext *tnl = TNL_CONTEXT(ctx); struct vertex_buffer *vb = &tnl->vb; + for (i = 0; i < vb->PrimitiveCount; i++) + ind_count += vb->Primitive[i].count + 10; + + /* just an estimate, need to properly calculate this */ + rcommonEnsureCmdBufSpace(&context->radeon, + radeon->hw.max_state_size + ind_count, __FUNCTION__); + r700Start3D(context); r700UpdateShaders(ctx); _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
