summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhenyu Wang <zhenyuw@linux.intel.com>2014-10-20 15:49:38 +0800
committerZhenyu Wang <zhenyuw@linux.intel.com>2014-10-20 15:49:38 +0800
commitc50ba1bb4c2680e607288144906bca9d2383ccf4 (patch)
treea61503877ec2b3ad46b27452bfea001173e16281
parent0d8a1f76159449cf1da52e53f34048b3d01fee4c (diff)
Retry userptr allocation in case kernel without MMU notifieruserptr
Fallback to unsynchronized userptr allocation if kernel has no MMU notifier enabled. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
-rw-r--r--src/intel/intel_driver.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/intel/intel_driver.c b/src/intel/intel_driver.c
index c6426b9..93cc69c 100644
--- a/src/intel/intel_driver.c
+++ b/src/intel/intel_driver.c
@@ -717,9 +717,16 @@ static cl_buffer intel_buffer_alloc_userptr(cl_buffer_mgr bufmgr,
unsigned long flags)
{
#ifdef HAS_USERPTR
- return (cl_buffer)drm_intel_bo_alloc_userptr((drm_intel_bufmgr *)bufmgr,
- name, data, I915_TILING_NONE,
- 0, size, flags);
+ drm_intel_bo *bo;
+ bo = drm_intel_bo_alloc_userptr((drm_intel_bufmgr *)bufmgr,
+ name, data, I915_TILING_NONE,
+ 0, size, flags);
+ if (bo == NULL && flags == 0) {
+ bo = drm_intel_bo_alloc_userptr((drm_intel_bufmgr *)bufmgr,
+ name, data, I915_TILING_NONE,
+ 0, size, flags | I915_USERPTR_UNSYNCHRONIZED);
+ }
+ return (cl_buffer)bo;
#else
return NULL;
#endif