intel: Don't try to do work for BufferSubData with a size of 0.
authorEric Anholt <eric@anholt.net>
Fri, 20 Aug 2010 19:36:34 +0000 (12:36 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 20 Aug 2010 19:36:34 +0000 (12:36 -0700)
If we hit the linear blit path, we'd come up with a pitch of 0, then
divide by zero.

Fixes vbo-subdata-zero, made for bug #28931 (warsow).

src/mesa/drivers/dri/intel/intel_buffer_objects.c

index 8ab41f8d279086672bec19f423ebb7dadce9c0e4..117d4daf3babb23147763eaf412a6ba2f7f93bfc 100644 (file)
@@ -202,6 +202,9 @@ intel_bufferobj_subdata(GLcontext * ctx,
    struct intel_context *intel = intel_context(ctx);
    struct intel_buffer_object *intel_obj = intel_buffer_object(obj);
 
+   if (size == 0)
+      return;
+
    assert(intel_obj);
 
    if (intel_obj->region)
@@ -426,6 +429,9 @@ intel_bufferobj_flush_mapped_range(GLcontext *ctx, GLenum target,
    if (intel_obj->range_map_buffer == NULL)
       return;
 
+   if (length == 0)
+      return;
+
    temp_bo = drm_intel_bo_alloc(intel->bufmgr, "range map flush", length, 64);
 
    drm_intel_bo_subdata(temp_bo, 0, length, intel_obj->range_map_buffer);