unsigned int no_exec : 1;
} drm_bacon_bufmgr;
-typedef struct _drm_bacon_reloc_target_info {
- drm_bacon_bo *bo;
-} drm_bacon_reloc_target;
-
struct _drm_bacon_bo_gem {
drm_bacon_bo bo;
/**
* Array of info structs corresponding to relocs[i].target_handle etc
*/
- drm_bacon_reloc_target *reloc_target_info;
+ drm_bacon_bo **reloc_bos;
/** Number of entries in relocs */
int reloc_count;
/** Mapped address for the buffer, saved across map/unmap cycles */
}
for (j = 0; j < bo_gem->reloc_count; j++) {
- drm_bacon_bo *target_bo = bo_gem->reloc_target_info[j].bo;
+ drm_bacon_bo *target_bo = bo_gem->reloc_bos[j];
drm_bacon_bo_gem *target_gem =
(drm_bacon_bo_gem *) target_bo;
bo_gem->relocs = malloc(max_relocs *
sizeof(struct drm_i915_gem_relocation_entry));
- bo_gem->reloc_target_info = malloc(max_relocs *
- sizeof(drm_bacon_reloc_target));
- if (bo_gem->relocs == NULL || bo_gem->reloc_target_info == NULL) {
+ bo_gem->reloc_bos = malloc(max_relocs * sizeof(drm_bacon_bo *));
+ if (bo_gem->relocs == NULL || bo_gem->reloc_bos == NULL) {
bo_gem->has_error = true;
free (bo_gem->relocs);
bo_gem->relocs = NULL;
- free (bo_gem->reloc_target_info);
- bo_gem->reloc_target_info = NULL;
+ free (bo_gem->reloc_bos);
+ bo_gem->reloc_bos = NULL;
return 1;
}
/* Unreference all the target buffers */
for (i = 0; i < bo_gem->reloc_count; i++) {
- if (bo_gem->reloc_target_info[i].bo != bo) {
+ if (bo_gem->reloc_bos[i] != bo) {
drm_bacon_gem_bo_unreference_locked_timed(bo_gem->
- reloc_target_info[i].bo,
+ reloc_bos[i],
time);
}
}
bo_gem->gem_handle, bo_gem->name);
/* release memory associated with this object */
- if (bo_gem->reloc_target_info) {
- free(bo_gem->reloc_target_info);
- bo_gem->reloc_target_info = NULL;
+ if (bo_gem->reloc_bos) {
+ free(bo_gem->reloc_bos);
+ bo_gem->reloc_bos = NULL;
}
if (bo_gem->relocs) {
free(bo_gem->relocs);
bo_gem->reloc_tree_size += target_bo_gem->reloc_tree_size;
}
- bo_gem->reloc_target_info[bo_gem->reloc_count].bo = target_bo;
+ bo_gem->reloc_bos[bo_gem->reloc_count] = target_bo;
if (target_bo != bo)
drm_bacon_bo_reference(target_bo);
pthread_mutex_lock(&bufmgr->lock);
for (i = start; i < bo_gem->reloc_count; i++) {
- drm_bacon_bo_gem *target_bo_gem = (drm_bacon_bo_gem *) bo_gem->reloc_target_info[i].bo;
+ drm_bacon_bo_gem *target_bo_gem = (drm_bacon_bo_gem *) bo_gem->reloc_bos[i];
if (&target_bo_gem->bo != bo) {
drm_bacon_gem_bo_unreference_locked_timed(&target_bo_gem->bo,
time.tv_sec);
return;
for (i = 0; i < bo_gem->reloc_count; i++) {
- drm_bacon_bo *target_bo = bo_gem->reloc_target_info[i].bo;
+ drm_bacon_bo *target_bo = bo_gem->reloc_bos[i];
if (target_bo == bo)
continue;
for (i = 0; i < bo_gem->reloc_count; i++)
total +=
- drm_bacon_gem_bo_get_aperture_space(bo_gem->
- reloc_target_info[i].bo);
+ drm_bacon_gem_bo_get_aperture_space(bo_gem->reloc_bos[i]);
return total;
}
bo_gem->included_in_check_aperture = false;
for (i = 0; i < bo_gem->reloc_count; i++)
- drm_bacon_gem_bo_clear_aperture_space_flag(bo_gem->
- reloc_target_info[i].bo);
+ drm_bacon_gem_bo_clear_aperture_space_flag(bo_gem->reloc_bos[i]);
}
/**
int i;
for (i = 0; i < bo_gem->reloc_count; i++) {
- if (bo_gem->reloc_target_info[i].bo == target_bo)
+ if (bo_gem->reloc_bos[i] == target_bo)
return 1;
- if (bo == bo_gem->reloc_target_info[i].bo)
+ if (bo == bo_gem->reloc_bos[i])
continue;
- if (_drm_bacon_gem_bo_references(bo_gem->reloc_target_info[i].bo,
+ if (_drm_bacon_gem_bo_references(bo_gem->reloc_bos[i],
target_bo))
return 1;
}