Mesa (master): intel: Flush when mapping buffer objects so writes don' t get reordered.

Eric Anholt anholt at kemper.freedesktop.org
Fri Jul 3 01:56:25 UTC 2009


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

Author: Eric Anholt <eric at anholt.net>
Date:   Thu Jul  2 18:02:44 2009 -0700

intel: Flush when mapping buffer objects so writes don't get reordered.

While GEM covers this for execution it knows about, it doesn't know about
the batchbuffer we're preparing.  Fixes piglit vbo-map-remap.c testcase.

---

 src/mesa/drivers/dri/intel/intel_buffer_objects.c |    3 +++
 src/mesa/drivers/dri/intel/intel_regions.c        |    2 ++
 2 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_buffer_objects.c b/src/mesa/drivers/dri/intel/intel_buffer_objects.c
index 9408b0c..9600557 100644
--- a/src/mesa/drivers/dri/intel/intel_buffer_objects.c
+++ b/src/mesa/drivers/dri/intel/intel_buffer_objects.c
@@ -243,6 +243,9 @@ intel_bufferobj_map(GLcontext * ctx,
       return obj->Pointer;
    }
 
+   if (!read_only)
+      intelFlush(ctx);
+
    if (intel_obj->region)
       intel_bufferobj_cow(intel, intel_obj);
 
diff --git a/src/mesa/drivers/dri/intel/intel_regions.c b/src/mesa/drivers/dri/intel/intel_regions.c
index 97a0aa5..7525cd9 100644
--- a/src/mesa/drivers/dri/intel/intel_regions.c
+++ b/src/mesa/drivers/dri/intel/intel_regions.c
@@ -111,6 +111,8 @@ debug_backtrace(void)
 GLubyte *
 intel_region_map(struct intel_context *intel, struct intel_region *region)
 {
+   intelFlush(&intel->ctx);
+
    _DBG("%s %p\n", __FUNCTION__, region);
    if (!region->map_refcount++) {
       if (region->pbo)




More information about the mesa-commit mailing list