Merge commit 'origin/master' into gallium-map-range
[mesa.git] / src / mesa / vbo / vbo_exec_draw.c
index 59e176b8375e535a33eeb108c35929870849edfc..6f8d1f8eb0786176c69a061c28f9adf16b27a241 100644 (file)
@@ -240,6 +240,13 @@ static void vbo_exec_vtx_unmap( struct vbo_exec_context *exec )
 
    if (exec->vtx.bufferobj->Name) {
       GLcontext *ctx = exec->ctx;
+      GLintptr offset = exec->vtx.buffer_used;
+      GLsizeiptr length = (exec->vtx.buffer_ptr - exec->vtx.buffer_map) * sizeof(float);
+      
+      if(ctx->Driver.FlushMappedBufferRange)
+         ctx->Driver.FlushMappedBufferRange(ctx, target,
+                                            offset, length,
+                                            exec->vtx.bufferobj);
 
       exec->vtx.buffer_used += (exec->vtx.buffer_ptr -
                                 exec->vtx.buffer_map) * sizeof(float);
@@ -286,11 +293,8 @@ void vbo_exec_vtx_map( struct vbo_exec_context *exec )
                                                exec->vtx.bufferobj);
       exec->vtx.buffer_ptr = exec->vtx.buffer_map;
    }
-
-   if (exec->vtx.buffer_map) {
-      exec->vtx.buffer_map += exec->vtx.buffer_used / sizeof(float);
-   }
-   else {
+   
+   if (!exec->vtx.buffer_map) {
       exec->vtx.buffer_used = 0;
 
       ctx->Driver.BufferData(ctx, target,