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 <ian.d.romanick@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=74960 Cc: "10.1" <mesa-stable@lists.freedesktop.org> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
8ba157006f
commit
ff2cbf9e0c
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue