From 5968e061db90451b19c3948bbd91c6d5ac9af941 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 7 Aug 2008 15:26:30 -0700 Subject: Make flink save the kernel-assigned name and return it instead of creating another name --- libdrm/intel/intel_bufmgr_gem.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'libdrm/intel/intel_bufmgr_gem.c') diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c index 22f8695d..f5732226 100644 --- a/libdrm/intel/intel_bufmgr_gem.c +++ b/libdrm/intel/intel_bufmgr_gem.c @@ -102,6 +102,11 @@ struct _dri_bo_gem { uint32_t gem_handle; const char *name; + /** + * Kenel-assigned global name for this object + */ + unsigned int global_name; + /** * Index of the buffer within the validation list while preparing a * batchbuffer execution. @@ -833,13 +838,16 @@ dri_gem_flink(dri_bo *bo, uint32_t *name) struct drm_gem_flink flink; int ret; - flink.handle = bo_gem->gem_handle; - - ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_GEM_FLINK, &flink); - if (ret != 0) - return -errno; - - *name = flink.name; + if (!bo_gem->global_name) { + flink.handle = bo_gem->gem_handle; + + ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_GEM_FLINK, &flink); + if (ret != 0) + return -errno; + bo_gem->gem_handle = flink.name; + } + + *name = bo_gem->gem_handle; return 0; } -- cgit v1.2.3 From 46e9274e8538e5b0517f611dca99dde611f4e95d Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 8 Aug 2008 13:13:46 -0700 Subject: Replace the check_aperture API with one we can make thread-safe. While the bufmgr isn't thread-safe at the moment, we need it to be for shared objects between contexts. --- libdrm/intel/intel_bufmgr_gem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libdrm/intel/intel_bufmgr_gem.c') diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c index f5732226..48752f2f 100644 --- a/libdrm/intel/intel_bufmgr_gem.c +++ b/libdrm/intel/intel_bufmgr_gem.c @@ -873,7 +873,7 @@ intel_bufmgr_gem_enable_reuse(dri_bufmgr *bufmgr) * */ static int -dri_gem_check_aperture_space(dri_bo *bo) +dri_gem_check_aperture_space(dri_bo *bo_array, int count) { return 0; } -- cgit v1.2.3 From 9e9d9b1741965f6529153bc2bcbe2dd8ba96ef3f Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 8 Aug 2008 14:08:43 -0700 Subject: Fix compile warning from check_aperture change. --- libdrm/intel/intel_bufmgr_gem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libdrm/intel/intel_bufmgr_gem.c') diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c index 48752f2f..54c800aa 100644 --- a/libdrm/intel/intel_bufmgr_gem.c +++ b/libdrm/intel/intel_bufmgr_gem.c @@ -873,7 +873,7 @@ intel_bufmgr_gem_enable_reuse(dri_bufmgr *bufmgr) * */ static int -dri_gem_check_aperture_space(dri_bo *bo_array, int count) +dri_gem_check_aperture_space(dri_bo **bo_array, int count) { return 0; } -- cgit v1.2.3 From b0e68829462aad00ce68be998da6313bca754e9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 12 Aug 2008 22:22:15 -0400 Subject: [intel_bufmgr_gem] Fix flink buffer name caching (#17085, #17092). Store the global name in global_name, don't overwrite the gem_handle. --- libdrm/intel/intel_bufmgr_gem.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libdrm/intel/intel_bufmgr_gem.c') diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c index 54c800aa..48a47701 100644 --- a/libdrm/intel/intel_bufmgr_gem.c +++ b/libdrm/intel/intel_bufmgr_gem.c @@ -844,10 +844,10 @@ dri_gem_flink(dri_bo *bo, uint32_t *name) ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_GEM_FLINK, &flink); if (ret != 0) return -errno; - bo_gem->gem_handle = flink.name; + bo_gem->global_name = flink.name; } - *name = bo_gem->gem_handle; + *name = bo_gem->global_name; return 0; } -- cgit v1.2.3