This makes the code a lot cleaner, and theoretically faster (not many real world tests use this GL extension).
Cc: Eric Anholt <e...@anholt.net> Cc: Daniel Vetter <daniel.vet...@ffwll.ch> Cc: Mesa Devs <mesa-dev@lists.freedesktop.org> Signed-off-by: Ben Widawsky <b...@bwidawsk.net> --- src/mesa/drivers/dri/intel/intel_buffer_objects.c | 48 ++------------------ 1 files changed, 5 insertions(+), 43 deletions(-) diff --git a/src/mesa/drivers/dri/intel/intel_buffer_objects.c b/src/mesa/drivers/dri/intel/intel_buffer_objects.c index d35a50e..91dddce 100644 --- a/src/mesa/drivers/dri/intel/intel_buffer_objects.c +++ b/src/mesa/drivers/dri/intel/intel_buffer_objects.c @@ -296,8 +296,6 @@ intel_bufferobj_get_subdata(struct gl_context * ctx, } } - - /** * Called via glMapBufferRange and glMapBuffer * @@ -363,50 +361,14 @@ intel_bufferobj_map_range(struct gl_context * ctx, return NULL; } - /* If the user doesn't care about existing buffer contents and mapping - * would cause us to block, then throw out the old buffer. - */ - if (!(access & GL_MAP_UNSYNCHRONIZED_BIT) && - (access & GL_MAP_INVALIDATE_BUFFER_BIT) && - drm_intel_bo_busy(intel_obj->buffer)) { - drm_intel_bo_unreference(intel_obj->buffer); - intel_bufferobj_alloc_buffer(intel, intel_obj); - } - - /* If the user is mapping a range of an active buffer object but - * doesn't require the current contents of that range, make a new - * BO, and we'll copy what they put in there out at unmap or - * FlushRange time. - */ if ((access & GL_MAP_INVALIDATE_RANGE_BIT) && - drm_intel_bo_busy(intel_obj->buffer)) { - if (access & GL_MAP_FLUSH_EXPLICIT_BIT) { + drm_intel_bo_busy(intel_obj->buffer) && + (access & GL_MAP_FLUSH_EXPLICIT_BIT)) { intel_obj->range_map_buffer = malloc(length); obj->Pointer = intel_obj->range_map_buffer; - } else { - intel_obj->range_map_bo = drm_intel_bo_alloc(intel->bufmgr, - "range map", - length, 64); - if (!(access & GL_MAP_READ_BIT)) { - drm_intel_gem_bo_map_gtt(intel_obj->range_map_bo); - intel_obj->mapped_gtt = GL_TRUE; - } else { - drm_intel_bo_map(intel_obj->range_map_bo, - (access & GL_MAP_WRITE_BIT) != 0); - intel_obj->mapped_gtt = GL_FALSE; - } - obj->Pointer = intel_obj->range_map_bo->virtual; - } - return obj->Pointer; - } - - if (!(access & GL_MAP_READ_BIT)) { - drm_intel_gem_bo_map_gtt(intel_obj->buffer); - intel_obj->mapped_gtt = GL_TRUE; - } else { - drm_intel_bo_map(intel_obj->buffer, (access & GL_MAP_WRITE_BIT) != 0); - intel_obj->mapped_gtt = GL_FALSE; - } + return obj->Pointer; + } else + drm_intel_gem_bo_map_nonblocking(intel_obj->buffer, &intel_obj->mapped_gtt); obj->Pointer = intel_obj->buffer->virtual + offset; return obj->Pointer; -- 1.7.6.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev