mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
anv: Add gem_close to kmd backend
Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21255>
This commit is contained in:
parent
b39947ee0c
commit
32a8250b46
6 changed files with 18 additions and 16 deletions
|
|
@ -1381,7 +1381,7 @@ anv_bo_finish(struct anv_device *device, struct anv_bo *bo)
|
|||
anv_device_unmap_bo(device, bo, bo->map, bo->size);
|
||||
|
||||
assert(bo->gem_handle != 0);
|
||||
anv_gem_close(device, bo->gem_handle);
|
||||
device->kmd_backend->gem_close(device, bo->gem_handle);
|
||||
}
|
||||
|
||||
static VkResult
|
||||
|
|
@ -1505,7 +1505,7 @@ anv_device_alloc_bo(struct anv_device *device,
|
|||
VkResult result = anv_device_map_bo(device, &new_bo, 0, size,
|
||||
0 /* gem_flags */, &new_bo.map);
|
||||
if (unlikely(result != VK_SUCCESS)) {
|
||||
anv_gem_close(device, new_bo.gem_handle);
|
||||
device->kmd_backend->gem_close(device, new_bo.gem_handle);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
@ -1768,7 +1768,7 @@ anv_device_import_bo(struct anv_device *device,
|
|||
} else {
|
||||
off_t size = lseek(fd, 0, SEEK_END);
|
||||
if (size == (off_t)-1) {
|
||||
anv_gem_close(device, gem_handle);
|
||||
device->kmd_backend->gem_close(device, gem_handle);
|
||||
pthread_mutex_unlock(&cache->mutex);
|
||||
return vk_error(device, VK_ERROR_INVALID_EXTERNAL_HANDLE);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,16 +32,6 @@
|
|||
#include "anv_private.h"
|
||||
#include "common/intel_gem.h"
|
||||
|
||||
void
|
||||
anv_gem_close(struct anv_device *device, uint32_t gem_handle)
|
||||
{
|
||||
struct drm_gem_close close = {
|
||||
.handle = gem_handle,
|
||||
};
|
||||
|
||||
intel_ioctl(device->fd, DRM_IOCTL_GEM_CLOSE, &close);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper around DRM_IOCTL_I915_GEM_MMAP. Returns MAP_FAILED on error.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@
|
|||
#include "util/anon_file.h"
|
||||
#include "anv_private.h"
|
||||
|
||||
void
|
||||
anv_gem_close(struct anv_device *device, uint32_t gem_handle)
|
||||
static void
|
||||
stub_gem_close(struct anv_device *device, uint32_t gem_handle)
|
||||
{
|
||||
close(gem_handle);
|
||||
}
|
||||
|
|
@ -122,6 +122,7 @@ const struct anv_kmd_backend *anv_stub_kmd_backend_get(void)
|
|||
{
|
||||
static const struct anv_kmd_backend stub_backend = {
|
||||
.gem_create = stub_gem_create,
|
||||
.gem_close = stub_gem_close,
|
||||
};
|
||||
return &stub_backend;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ struct anv_kmd_backend {
|
|||
const struct intel_memory_class_instance **regions,
|
||||
uint16_t num_regions, uint64_t size,
|
||||
enum anv_bo_alloc_flags alloc_flags);
|
||||
void (*gem_close)(struct anv_device *device, uint32_t handle);
|
||||
};
|
||||
|
||||
const struct anv_kmd_backend *anv_kmd_backend_get(enum intel_kmd_type type);
|
||||
|
|
|
|||
|
|
@ -1352,7 +1352,6 @@ VkResult anv_queue_submit_simple_batch(struct anv_queue *queue,
|
|||
void* anv_gem_mmap(struct anv_device *device, struct anv_bo *bo,
|
||||
uint64_t offset, uint64_t size, uint32_t flags);
|
||||
void anv_gem_munmap(struct anv_device *device, void *p, uint64_t size);
|
||||
void anv_gem_close(struct anv_device *device, uint32_t gem_handle);
|
||||
uint32_t anv_gem_userptr(struct anv_device *device, void *mem, size_t size);
|
||||
int anv_gem_wait(struct anv_device *device, uint32_t gem_handle, int64_t *timeout_ns);
|
||||
int anv_gem_set_tiling(struct anv_device *device, uint32_t gem_handle,
|
||||
|
|
|
|||
|
|
@ -74,11 +74,22 @@ i915_gem_create(struct anv_device *device,
|
|||
return gem_create.handle;
|
||||
}
|
||||
|
||||
static void
|
||||
i915_gem_close(struct anv_device *device, uint32_t handle)
|
||||
{
|
||||
struct drm_gem_close close = {
|
||||
.handle = handle,
|
||||
};
|
||||
|
||||
intel_ioctl(device->fd, DRM_IOCTL_GEM_CLOSE, &close);
|
||||
}
|
||||
|
||||
const struct anv_kmd_backend *
|
||||
anv_i915_kmd_backend_get(void)
|
||||
{
|
||||
static const struct anv_kmd_backend i915_backend = {
|
||||
.gem_create = i915_gem_create,
|
||||
.gem_close = i915_gem_close,
|
||||
};
|
||||
return &i915_backend;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue