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

Eric Anholt anholt at kemper.freedesktop.org
Wed Feb 11 02:45:37 UTC 2009


Module: Mesa
Branch: master
Commit: 01bc4d441fd6821ad9fc20d5e9544e4e587e4ff0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=01bc4d441fd6821ad9fc20d5e9544e4e587e4ff0

Author: Eric Anholt <eric at anholt.net>
Date:   Mon Feb  9 15:55:15 2009 -0800

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.

---

 src/mesa/drivers/dri/intel/intel_context.c |   22 +++++++++++++++++-----
 1 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index 7a93801..d7ccfa0 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -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,13 +380,26 @@ 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)
 {
    struct gl_framebuffer *fb = ctx->DrawBuffer;
@@ -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;




More information about the mesa-commit mailing list