intel: Don't do the extra MI_FLUSH in flushing except when doing glFlush().

Everything other than "make sure the last rendering ends up visible on the
screen" doesn't need that behavior.
This commit is contained in:
Eric Anholt 2009-02-09 15:55:15 -08:00
parent 0b63f6449e
commit 01bc4d441f

View file

@ -365,9 +365,8 @@ intelInvalidateState(GLcontext * ctx, GLuint new_state)
intel->vtbl.invalidate_state( intel, new_state );
}
void
intelFlush(GLcontext * ctx)
static void
intel_flush(GLcontext *ctx, GLboolean needs_mi_flush)
{
struct intel_context *intel = intel_context(ctx);
@ -381,12 +380,25 @@ intelFlush(GLcontext * ctx)
* lands onscreen in a timely manner, even if the X Server doesn't trigger
* a flush for us.
*/
intel_batchbuffer_emit_mi_flush(intel->batch);
if (needs_mi_flush)
intel_batchbuffer_emit_mi_flush(intel->batch);
if (intel->batch->map != intel->batch->ptr)
intel_batchbuffer_flush(intel->batch);
}
void
intelFlush(GLcontext * ctx)
{
intel_flush(ctx, GL_FALSE);
}
static void
intel_glFlush(GLcontext *ctx)
{
intel_flush(ctx, GL_TRUE);
}
void
intelFinish(GLcontext * ctx)
{
@ -413,7 +425,7 @@ intelInitDriverFunctions(struct dd_function_table *functions)
{
_mesa_init_driver_functions(functions);
functions->Flush = intelFlush;
functions->Flush = intel_glFlush;
functions->Finish = intelFinish;
functions->GetString = intelGetString;
functions->UpdateState = intelInvalidateState;