From: Ian Romanick Date: Wed, 26 Feb 2014 20:48:56 +0000 (-0800) Subject: i915: Allocate the sys_buffer using _mesa_align_malloc X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ff2cbf9e0ca0ee46a15add1a42cd48705c84e0de;p=mesa.git i915: Allocate the sys_buffer using _mesa_align_malloc Though it won't matter on Linux, use _mesa_align_free to release it. Since i965 doesn't have sys_buffer, I overlooked this in the GL_ARB_map_buffer_alignment work a few months ago. Fixes i915 (and presumably i830) regressions in ARB_map_buffer_range tests and the failure in arb_map_buffer_alignment-sanity_test. Signed-off-by: Ian Romanick Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=74960 Cc: "10.1" Reviewed-by: Matt Turner --- diff --git a/src/mesa/drivers/dri/i915/intel_buffer_objects.c b/src/mesa/drivers/dri/i915/intel_buffer_objects.c index b93dd20ed01..3da901b87b4 100644 --- a/src/mesa/drivers/dri/i915/intel_buffer_objects.c +++ b/src/mesa/drivers/dri/i915/intel_buffer_objects.c @@ -96,7 +96,7 @@ intel_bufferobj_free(struct gl_context * ctx, struct gl_buffer_object *obj) */ _mesa_buffer_unmap_all_mappings(ctx, obj); - free(intel_obj->sys_buffer); + _mesa_align_free(intel_obj->sys_buffer); drm_intel_bo_unreference(intel_obj->buffer); free(intel_obj); @@ -133,7 +133,7 @@ intel_bufferobj_data(struct gl_context * ctx, if (intel_obj->buffer != NULL) release_buffer(intel_obj); - free(intel_obj->sys_buffer); + _mesa_align_free(intel_obj->sys_buffer); intel_obj->sys_buffer = NULL; if (size != 0) { @@ -141,7 +141,8 @@ intel_bufferobj_data(struct gl_context * ctx, * contents anyway. */ if (target == GL_ARRAY_BUFFER || target == GL_ELEMENT_ARRAY_BUFFER) { - intel_obj->sys_buffer = malloc(size); + intel_obj->sys_buffer = + _mesa_align_malloc(size, ctx->Const.MinMapBufferAlignment); if (intel_obj->sys_buffer != NULL) { if (data != NULL) memcpy(intel_obj->sys_buffer, data, size); @@ -192,7 +193,7 @@ intel_bufferobj_subdata(struct gl_context * ctx, return; } - free(intel_obj->sys_buffer); + _mesa_align_free(intel_obj->sys_buffer); intel_obj->sys_buffer = NULL; } @@ -300,7 +301,7 @@ intel_bufferobj_map_range(struct gl_context * ctx, return obj->Mappings[index].Pointer; } - free(intel_obj->sys_buffer); + _mesa_align_free(intel_obj->sys_buffer); intel_obj->sys_buffer = NULL; } @@ -489,7 +490,7 @@ intel_bufferobj_buffer(struct intel_context *intel, 0, intel_obj->Base.Size, intel_obj->sys_buffer); - free(intel_obj->sys_buffer); + _mesa_align_free(intel_obj->sys_buffer); intel_obj->sys_buffer = NULL; intel_obj->offset = 0; } @@ -676,7 +677,7 @@ intel_buffer_object_purgeable(struct gl_context * ctx, return intel_buffer_purgeable(intel_obj->buffer); if (option == GL_RELEASED_APPLE) { - free(intel_obj->sys_buffer); + _mesa_align_free(intel_obj->sys_buffer); intel_obj->sys_buffer = NULL; return GL_RELEASED_APPLE;