anv: Wrapper around I915_GEM_CREATE_EXT_MEMORY_REGIONS
v2 (Jordan Justin): - add anv_gem_stubs.c impl v3 (Jason Ekstrand): - Use the upstream uAPI - Rework the interface a bit Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com> Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5599>
This commit is contained in:
@@ -65,6 +65,31 @@ anv_gem_close(struct anv_device *device, uint32_t gem_handle)
|
|||||||
intel_ioctl(device->fd, DRM_IOCTL_GEM_CLOSE, &close);
|
intel_ioctl(device->fd, DRM_IOCTL_GEM_CLOSE, &close);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
anv_gem_create_regions(struct anv_device *device, uint64_t anv_bo_size,
|
||||||
|
uint32_t num_regions,
|
||||||
|
struct drm_i915_gem_memory_class_instance *regions)
|
||||||
|
{
|
||||||
|
struct drm_i915_gem_create_ext_memory_regions ext_regions = {
|
||||||
|
.base = { .name = I915_GEM_CREATE_EXT_MEMORY_REGIONS },
|
||||||
|
.num_regions = num_regions,
|
||||||
|
.regions = (uintptr_t)regions,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct drm_i915_gem_create_ext gem_create = {
|
||||||
|
.size = anv_bo_size,
|
||||||
|
.extensions = (uintptr_t) &ext_regions,
|
||||||
|
};
|
||||||
|
|
||||||
|
int ret = intel_ioctl(device->fd, DRM_IOCTL_I915_GEM_CREATE_EXT,
|
||||||
|
&gem_create);
|
||||||
|
if (ret != 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return gem_create.handle;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapper around DRM_IOCTL_I915_GEM_MMAP. Returns MAP_FAILED on error.
|
* Wrapper around DRM_IOCTL_I915_GEM_MMAP. Returns MAP_FAILED on error.
|
||||||
*/
|
*/
|
||||||
|
@@ -45,6 +45,14 @@ anv_gem_close(struct anv_device *device, uint32_t gem_handle)
|
|||||||
close(gem_handle);
|
close(gem_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
anv_gem_create_regions(struct anv_device *device, uint64_t anv_bo_size,
|
||||||
|
uint32_t num_regions,
|
||||||
|
struct drm_i915_gem_memory_class_instance *regions)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void*
|
void*
|
||||||
anv_gem_mmap(struct anv_device *device, uint32_t gem_handle,
|
anv_gem_mmap(struct anv_device *device, uint32_t gem_handle,
|
||||||
uint64_t offset, uint64_t size, uint32_t flags)
|
uint64_t offset, uint64_t size, uint32_t flags)
|
||||||
|
@@ -1452,6 +1452,9 @@ void* anv_gem_mmap(struct anv_device *device,
|
|||||||
void anv_gem_munmap(struct anv_device *device, void *p, uint64_t size);
|
void anv_gem_munmap(struct anv_device *device, void *p, uint64_t size);
|
||||||
uint32_t anv_gem_create(struct anv_device *device, uint64_t size);
|
uint32_t anv_gem_create(struct anv_device *device, uint64_t size);
|
||||||
void anv_gem_close(struct anv_device *device, uint32_t gem_handle);
|
void anv_gem_close(struct anv_device *device, uint32_t gem_handle);
|
||||||
|
uint32_t anv_gem_create_regions(struct anv_device *device, uint64_t anv_bo_size,
|
||||||
|
uint32_t num_regions,
|
||||||
|
struct drm_i915_gem_memory_class_instance *regions);
|
||||||
uint32_t anv_gem_userptr(struct anv_device *device, void *mem, size_t size);
|
uint32_t anv_gem_userptr(struct anv_device *device, void *mem, size_t size);
|
||||||
int anv_gem_busy(struct anv_device *device, uint32_t gem_handle);
|
int anv_gem_busy(struct anv_device *device, uint32_t gem_handle);
|
||||||
int anv_gem_wait(struct anv_device *device, uint32_t gem_handle, int64_t *timeout_ns);
|
int anv_gem_wait(struct anv_device *device, uint32_t gem_handle, int64_t *timeout_ns);
|
||||||
|
Reference in New Issue
Block a user