[Intel-gfx] [PATCH 1/5] intel: Stop storing two copies of the bo's gem handle.
Eric Anholt
eric at anholt.net
Tue Jun 18 22:32:53 CEST 2013
---
intel/intel_bufmgr_gem.c | 91 +++++++++++++++++++++++-------------------------
1 file changed, 43 insertions(+), 48 deletions(-)
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index 3c73068..b06c99a 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -143,7 +143,6 @@ struct _drm_intel_bo_gem {
drm_intel_bo bo;
atomic_t refcount;
- uint32_t gem_handle;
const char *name;
/**
@@ -362,7 +361,7 @@ drm_intel_gem_dump_validation_list(drm_intel_bufmgr_gem *bufmgr_gem)
drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
if (bo_gem->relocs == NULL) {
- DBG("%2d: %d (%s)\n", i, bo_gem->gem_handle,
+ DBG("%2d: %d (%s)\n", i, bo_gem->bo.handle,
bo_gem->name);
continue;
}
@@ -375,9 +374,9 @@ drm_intel_gem_dump_validation_list(drm_intel_bufmgr_gem *bufmgr_gem)
DBG("%2d: %d (%s)@0x%08llx -> "
"%d (%s)@0x%08lx + 0x%08x\n",
i,
- bo_gem->gem_handle, bo_gem->name,
+ bo_gem->bo.handle, bo_gem->name,
(unsigned long long)bo_gem->relocs[j].offset,
- target_gem->gem_handle,
+ target_gem->bo.handle,
target_gem->name,
target_bo->offset,
bo_gem->relocs[j].delta);
@@ -430,7 +429,7 @@ drm_intel_add_validate_buffer(drm_intel_bo *bo)
index = bufmgr_gem->exec_count;
bo_gem->validate_index = index;
/* Fill in array entry */
- bufmgr_gem->exec_objects[index].handle = bo_gem->gem_handle;
+ bufmgr_gem->exec_objects[index].handle = bo_gem->bo.handle;
bufmgr_gem->exec_objects[index].relocation_count = bo_gem->reloc_count;
bufmgr_gem->exec_objects[index].relocs_ptr = (uintptr_t) bo_gem->relocs;
bufmgr_gem->exec_objects[index].alignment = 0;
@@ -472,7 +471,7 @@ drm_intel_add_validate_buffer2(drm_intel_bo *bo, int need_fence)
index = bufmgr_gem->exec_count;
bo_gem->validate_index = index;
/* Fill in array entry */
- bufmgr_gem->exec2_objects[index].handle = bo_gem->gem_handle;
+ bufmgr_gem->exec2_objects[index].handle = bo_gem->bo.handle;
bufmgr_gem->exec2_objects[index].relocation_count = bo_gem->reloc_count;
bufmgr_gem->exec2_objects[index].relocs_ptr = (uintptr_t)bo_gem->relocs;
bufmgr_gem->exec2_objects[index].alignment = 0;
@@ -565,7 +564,7 @@ drm_intel_gem_bo_busy(drm_intel_bo *bo)
int ret;
VG_CLEAR(busy);
- busy.handle = bo_gem->gem_handle;
+ busy.handle = bo_gem->bo.handle;
ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_BUSY, &busy);
@@ -579,7 +578,7 @@ drm_intel_gem_bo_madvise_internal(drm_intel_bufmgr_gem *bufmgr_gem,
struct drm_i915_gem_madvise madv;
VG_CLEAR(madv);
- madv.handle = bo_gem->gem_handle;
+ madv.handle = bo_gem->bo.handle;
madv.madv = state;
madv.retained = 1;
drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_MADVISE, &madv);
@@ -713,8 +712,7 @@ retry:
ret = drmIoctl(bufmgr_gem->fd,
DRM_IOCTL_I915_GEM_CREATE,
&create);
- bo_gem->gem_handle = create.handle;
- bo_gem->bo.handle = bo_gem->gem_handle;
+ bo_gem->bo.handle = create.handle;
if (ret != 0) {
free(bo_gem);
return NULL;
@@ -749,7 +747,7 @@ retry:
drm_intel_bo_gem_set_in_aperture_size(bufmgr_gem, bo_gem);
DBG("bo_create: buf %d (%s) %ldb\n",
- bo_gem->gem_handle, bo_gem->name, size);
+ bo_gem->bo.handle, bo_gem->name, size);
return &bo_gem->bo;
}
@@ -883,13 +881,12 @@ drm_intel_bo_gem_create_from_name(drm_intel_bufmgr *bufmgr,
bo_gem->name = name;
atomic_set(&bo_gem->refcount, 1);
bo_gem->validate_index = -1;
- bo_gem->gem_handle = open_arg.handle;
bo_gem->bo.handle = open_arg.handle;
bo_gem->global_name = handle;
bo_gem->reusable = false;
VG_CLEAR(get_tiling);
- get_tiling.handle = bo_gem->gem_handle;
+ get_tiling.handle = bo_gem->bo.handle;
ret = drmIoctl(bufmgr_gem->fd,
DRM_IOCTL_I915_GEM_GET_TILING,
&get_tiling);
@@ -930,11 +927,11 @@ drm_intel_gem_bo_free(drm_intel_bo *bo)
/* Close this object */
VG_CLEAR(close);
- close.handle = bo_gem->gem_handle;
+ close.handle = bo_gem->bo.handle;
ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_GEM_CLOSE, &close);
if (ret != 0) {
DBG("DRM_IOCTL_GEM_CLOSE %d failed (%s): %s\n",
- bo_gem->gem_handle, bo_gem->name, strerror(errno));
+ bo_gem->bo.handle, bo_gem->name, strerror(errno));
}
free(bo_gem->aub_annotations);
free(bo);
@@ -1065,7 +1062,7 @@ drm_intel_gem_bo_unreference_final(drm_intel_bo *bo, time_t time)
bo_gem->used_as_reloc_target = false;
DBG("bo_unreference final: %d (%s)\n",
- bo_gem->gem_handle, bo_gem->name);
+ bo_gem->bo.handle, bo_gem->name);
/* release memory associated with this object */
if (bo_gem->reloc_target_info) {
@@ -1148,10 +1145,10 @@ static int drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable)
struct drm_i915_gem_mmap mmap_arg;
DBG("bo_map: %d (%s), map_count=%d\n",
- bo_gem->gem_handle, bo_gem->name, bo_gem->map_count);
+ bo_gem->bo.handle, bo_gem->name, bo_gem->map_count);
VG_CLEAR(mmap_arg);
- mmap_arg.handle = bo_gem->gem_handle;
+ mmap_arg.handle = bo_gem->bo.handle;
mmap_arg.offset = 0;
mmap_arg.size = bo->size;
ret = drmIoctl(bufmgr_gem->fd,
@@ -1160,7 +1157,7 @@ static int drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable)
if (ret != 0) {
ret = -errno;
DBG("%s:%d: Error mapping buffer %d (%s): %s .\n",
- __FILE__, __LINE__, bo_gem->gem_handle,
+ __FILE__, __LINE__, bo_gem->bo.handle,
bo_gem->name, strerror(errno));
if (--bo_gem->map_count == 0)
drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
@@ -1170,12 +1167,12 @@ static int drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable)
VG(VALGRIND_MALLOCLIKE_BLOCK(mmap_arg.addr_ptr, mmap_arg.size, 0, 1));
bo_gem->mem_virtual = (void *)(uintptr_t) mmap_arg.addr_ptr;
}
- DBG("bo_map: %d (%s) -> %p\n", bo_gem->gem_handle, bo_gem->name,
+ DBG("bo_map: %d (%s) -> %p\n", bo_gem->bo.handle, bo_gem->name,
bo_gem->mem_virtual);
bo->virtual = bo_gem->mem_virtual;
VG_CLEAR(set_domain);
- set_domain.handle = bo_gem->gem_handle;
+ set_domain.handle = bo_gem->bo.handle;
set_domain.read_domains = I915_GEM_DOMAIN_CPU;
if (write_enable)
set_domain.write_domain = I915_GEM_DOMAIN_CPU;
@@ -1186,7 +1183,7 @@ static int drm_intel_gem_bo_map(drm_intel_bo *bo, int write_enable)
&set_domain);
if (ret != 0) {
DBG("%s:%d: Error setting to CPU domain %d: %s\n",
- __FILE__, __LINE__, bo_gem->gem_handle,
+ __FILE__, __LINE__, bo_gem->bo.handle,
strerror(errno));
}
@@ -1215,10 +1212,10 @@ map_gtt(drm_intel_bo *bo)
struct drm_i915_gem_mmap_gtt mmap_arg;
DBG("bo_map_gtt: mmap %d (%s), map_count=%d\n",
- bo_gem->gem_handle, bo_gem->name, bo_gem->map_count);
+ bo_gem->bo.handle, bo_gem->name, bo_gem->map_count);
VG_CLEAR(mmap_arg);
- mmap_arg.handle = bo_gem->gem_handle;
+ mmap_arg.handle = bo_gem->bo.handle;
/* Get the fake offset back... */
ret = drmIoctl(bufmgr_gem->fd,
@@ -1228,7 +1225,7 @@ map_gtt(drm_intel_bo *bo)
ret = -errno;
DBG("%s:%d: Error preparing buffer map %d (%s): %s .\n",
__FILE__, __LINE__,
- bo_gem->gem_handle, bo_gem->name,
+ bo_gem->bo.handle, bo_gem->name,
strerror(errno));
if (--bo_gem->map_count == 0)
drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
@@ -1244,7 +1241,7 @@ map_gtt(drm_intel_bo *bo)
ret = -errno;
DBG("%s:%d: Error mapping buffer %d (%s): %s .\n",
__FILE__, __LINE__,
- bo_gem->gem_handle, bo_gem->name,
+ bo_gem->bo.handle, bo_gem->name,
strerror(errno));
if (--bo_gem->map_count == 0)
drm_intel_gem_bo_close_vma(bufmgr_gem, bo_gem);
@@ -1254,7 +1251,7 @@ map_gtt(drm_intel_bo *bo)
bo->virtual = bo_gem->gtt_virtual;
- DBG("bo_map_gtt: %d (%s) -> %p\n", bo_gem->gem_handle, bo_gem->name,
+ DBG("bo_map_gtt: %d (%s) -> %p\n", bo_gem->bo.handle, bo_gem->name,
bo_gem->gtt_virtual);
return 0;
@@ -1285,7 +1282,7 @@ int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo)
* rendering and it still happens to be bound to the GTT.
*/
VG_CLEAR(set_domain);
- set_domain.handle = bo_gem->gem_handle;
+ set_domain.handle = bo_gem->bo.handle;
set_domain.read_domains = I915_GEM_DOMAIN_GTT;
set_domain.write_domain = I915_GEM_DOMAIN_GTT;
ret = drmIoctl(bufmgr_gem->fd,
@@ -1293,7 +1290,7 @@ int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo)
&set_domain);
if (ret != 0) {
DBG("%s:%d: Error setting domain %d: %s\n",
- __FILE__, __LINE__, bo_gem->gem_handle,
+ __FILE__, __LINE__, bo_gem->bo.handle,
strerror(errno));
}
@@ -1369,7 +1366,7 @@ static int drm_intel_gem_bo_unmap(drm_intel_bo *bo)
* buffer should be scanout-related.
*/
VG_CLEAR(sw_finish);
- sw_finish.handle = bo_gem->gem_handle;
+ sw_finish.handle = bo_gem->bo.handle;
ret = drmIoctl(bufmgr_gem->fd,
DRM_IOCTL_I915_GEM_SW_FINISH,
&sw_finish);
@@ -1407,7 +1404,7 @@ drm_intel_gem_bo_subdata(drm_intel_bo *bo, unsigned long offset,
int ret;
VG_CLEAR(pwrite);
- pwrite.handle = bo_gem->gem_handle;
+ pwrite.handle = bo_gem->bo.handle;
pwrite.offset = offset;
pwrite.size = size;
pwrite.data_ptr = (uint64_t) (uintptr_t) data;
@@ -1417,7 +1414,7 @@ drm_intel_gem_bo_subdata(drm_intel_bo *bo, unsigned long offset,
if (ret != 0) {
ret = -errno;
DBG("%s:%d: Error writing data to buffer %d: (%d %d) %s .\n",
- __FILE__, __LINE__, bo_gem->gem_handle, (int)offset,
+ __FILE__, __LINE__, bo_gem->bo.handle, (int)offset,
(int)size, strerror(errno));
}
@@ -1459,7 +1456,7 @@ drm_intel_gem_bo_get_subdata(drm_intel_bo *bo, unsigned long offset,
int ret;
VG_CLEAR(pread);
- pread.handle = bo_gem->gem_handle;
+ pread.handle = bo_gem->bo.handle;
pread.offset = offset;
pread.size = size;
pread.data_ptr = (uint64_t) (uintptr_t) data;
@@ -1469,7 +1466,7 @@ drm_intel_gem_bo_get_subdata(drm_intel_bo *bo, unsigned long offset,
if (ret != 0) {
ret = -errno;
DBG("%s:%d: Error reading data from buffer %d: (%d %d) %s .\n",
- __FILE__, __LINE__, bo_gem->gem_handle, (int)offset,
+ __FILE__, __LINE__, bo_gem->bo.handle, (int)offset,
(int)size, strerror(errno));
}
@@ -1525,7 +1522,7 @@ int drm_intel_gem_bo_wait(drm_intel_bo *bo, int64_t timeout_ns)
}
}
- wait.bo_handle = bo_gem->gem_handle;
+ wait.bo_handle = bo_gem->bo.handle;
wait.timeout_ns = timeout_ns;
wait.flags = 0;
ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_WAIT, &wait);
@@ -1551,7 +1548,7 @@ drm_intel_gem_bo_start_gtt_access(drm_intel_bo *bo, int write_enable)
int ret;
VG_CLEAR(set_domain);
- set_domain.handle = bo_gem->gem_handle;
+ set_domain.handle = bo_gem->bo.handle;
set_domain.read_domains = I915_GEM_DOMAIN_GTT;
set_domain.write_domain = write_enable ? I915_GEM_DOMAIN_GTT : 0;
ret = drmIoctl(bufmgr_gem->fd,
@@ -1559,7 +1556,7 @@ drm_intel_gem_bo_start_gtt_access(drm_intel_bo *bo, int write_enable)
&set_domain);
if (ret != 0) {
DBG("%s:%d: Error setting memory domains %d (%08x %08x): %s .\n",
- __FILE__, __LINE__, bo_gem->gem_handle,
+ __FILE__, __LINE__, bo_gem->bo.handle,
set_domain.read_domains, set_domain.write_domain,
strerror(errno));
}
@@ -1660,7 +1657,7 @@ do_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset,
bo_gem->relocs[bo_gem->reloc_count].offset = offset;
bo_gem->relocs[bo_gem->reloc_count].delta = target_offset;
bo_gem->relocs[bo_gem->reloc_count].target_handle =
- target_bo_gem->gem_handle;
+ target_bo_gem->bo.handle;
bo_gem->relocs[bo_gem->reloc_count].read_domains = read_domains;
bo_gem->relocs[bo_gem->reloc_count].write_domain = write_domain;
bo_gem->relocs[bo_gem->reloc_count].presumed_offset = target_bo->offset;
@@ -1816,7 +1813,7 @@ drm_intel_update_buffer_offsets(drm_intel_bufmgr_gem *bufmgr_gem)
/* Update the buffer offset */
if (bufmgr_gem->exec_objects[i].offset != bo->offset) {
DBG("BO %d (%s) migrated: 0x%08lx -> 0x%08llx\n",
- bo_gem->gem_handle, bo_gem->name, bo->offset,
+ bo_gem->bo.handle, bo_gem->name, bo->offset,
(unsigned long long)bufmgr_gem->exec_objects[i].
offset);
bo->offset = bufmgr_gem->exec_objects[i].offset;
@@ -1836,7 +1833,7 @@ drm_intel_update_buffer_offsets2 (drm_intel_bufmgr_gem *bufmgr_gem)
/* Update the buffer offset */
if (bufmgr_gem->exec2_objects[i].offset != bo->offset) {
DBG("BO %d (%s) migrated: 0x%08lx -> 0x%08llx\n",
- bo_gem->gem_handle, bo_gem->name, bo->offset,
+ bo_gem->bo.handle, bo_gem->name, bo->offset,
(unsigned long long)bufmgr_gem->exec2_objects[i].offset);
bo->offset = bufmgr_gem->exec2_objects[i].offset;
}
@@ -2322,7 +2319,7 @@ drm_intel_gem_bo_pin(drm_intel_bo *bo, uint32_t alignment)
int ret;
VG_CLEAR(pin);
- pin.handle = bo_gem->gem_handle;
+ pin.handle = bo_gem->bo.handle;
pin.alignment = alignment;
ret = drmIoctl(bufmgr_gem->fd,
@@ -2344,7 +2341,7 @@ drm_intel_gem_bo_unpin(drm_intel_bo *bo)
int ret;
VG_CLEAR(unpin);
- unpin.handle = bo_gem->gem_handle;
+ unpin.handle = bo_gem->bo.handle;
ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_UNPIN, &unpin);
if (ret != 0)
@@ -2374,7 +2371,7 @@ drm_intel_gem_bo_set_tiling_internal(drm_intel_bo *bo,
* input on the error path, so we have to open code
* rmIoctl.
*/
- set_tiling.handle = bo_gem->gem_handle;
+ set_tiling.handle = bo_gem->bo.handle;
set_tiling.tiling_mode = tiling_mode;
set_tiling.stride = stride;
@@ -2447,8 +2444,6 @@ drm_intel_bo_gem_create_from_prime(drm_intel_bufmgr *bufmgr, int prime_fd, int s
bo_gem->bo.handle = handle;
bo_gem->bo.bufmgr = bufmgr;
- bo_gem->gem_handle = handle;
-
atomic_set(&bo_gem->refcount, 1);
bo_gem->name = "prime";
@@ -2462,7 +2457,7 @@ drm_intel_bo_gem_create_from_prime(drm_intel_bufmgr *bufmgr, int prime_fd, int s
DRMINITLISTHEAD(&bo_gem->vma_list);
VG_CLEAR(get_tiling);
- get_tiling.handle = bo_gem->gem_handle;
+ get_tiling.handle = bo_gem->bo.handle;
ret = drmIoctl(bufmgr_gem->fd,
DRM_IOCTL_I915_GEM_GET_TILING,
&get_tiling);
@@ -2484,7 +2479,7 @@ drm_intel_bo_gem_export_to_prime(drm_intel_bo *bo, int *prime_fd)
drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *) bo->bufmgr;
drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
- if (drmPrimeHandleToFD(bufmgr_gem->fd, bo_gem->gem_handle,
+ if (drmPrimeHandleToFD(bufmgr_gem->fd, bo_gem->bo.handle,
DRM_CLOEXEC, prime_fd) != 0)
return -errno;
@@ -2504,7 +2499,7 @@ drm_intel_gem_bo_flink(drm_intel_bo *bo, uint32_t * name)
struct drm_gem_flink flink;
VG_CLEAR(flink);
- flink.handle = bo_gem->gem_handle;
+ flink.handle = bo_gem->bo.handle;
ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_GEM_FLINK, &flink);
if (ret != 0)
--
1.8.3.rc0
More information about the Intel-gfx
mailing list