const cl_libva_image * /* info */,
cl_int * /* errcode_ret */);
+/* Create buffer from libva's buffer object */
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetMemObjectFdIntel(cl_context /* context */,
+ cl_mem /* Memory Obejct */,
+ int* /* returned fd */);
+
+typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetMemObjectFdIntel_fn)(
+ cl_context /* context */,
+ cl_mem /* Memory Obejct */,
+ int* /* returned fd */);
+
#ifdef __cplusplus
}
#endif
EXTFUNC(clReportUnfreedIntel)
EXTFUNC(clCreateBufferFromLibvaIntel)
EXTFUNC(clCreateImageFromLibvaIntel)
+ EXTFUNC(clGetMemObjectFdIntel)
return NULL;
}
return mem;
}
+extern CL_API_ENTRY cl_int CL_API_CALL
+clGetMemObjectFdIntel(cl_context context,
+ cl_mem memobj,
+ int* fd)
+{
+ cl_int err = CL_SUCCESS;
+ CHECK_CONTEXT (context);
+ CHECK_MEM (memobj);
+
+ err = cl_mem_get_fd(memobj, fd);
+
+error:
+ return err;
+}
typedef int (cl_buffer_wait_rendering_cb) (cl_buffer);
extern cl_buffer_wait_rendering_cb *cl_buffer_wait_rendering;
+typedef int (cl_buffer_get_fd_cb)(cl_buffer, int *fd);
+extern cl_buffer_get_fd_cb *cl_buffer_get_fd;
+
/* Get the device id */
typedef int (cl_driver_get_device_id_cb)(void);
extern cl_driver_get_device_id_cb *cl_driver_get_device_id;
LOCAL cl_buffer_wait_rendering_cb *cl_buffer_wait_rendering = NULL;
LOCAL cl_buffer_get_buffer_from_libva_cb *cl_buffer_get_buffer_from_libva = NULL;
LOCAL cl_buffer_get_image_from_libva_cb *cl_buffer_get_image_from_libva = NULL;
+LOCAL cl_buffer_get_fd_cb *cl_buffer_get_fd = NULL;
/* cl_khr_gl_sharing */
LOCAL cl_gl_acquire_texture_cb *cl_gl_acquire_texture = NULL;
mem = NULL;
goto exit;
}
+
+LOCAL cl_int
+cl_mem_get_fd(cl_mem mem,
+ int* fd)
+{
+ cl_int err = CL_SUCCESS;
+ if(cl_buffer_get_fd(mem->bo, fd))
+ err = CL_INVALID_OPERATION;
+ return err;
+}
cl_buffer_unpin = (cl_buffer_unpin_cb *) drm_intel_bo_unpin;
cl_buffer_subdata = (cl_buffer_subdata_cb *) drm_intel_bo_subdata;
cl_buffer_wait_rendering = (cl_buffer_wait_rendering_cb *) drm_intel_bo_wait_rendering;
+ cl_buffer_get_fd = (cl_buffer_get_fd_cb *) drm_intel_bo_gem_export_to_prime;
intel_set_gpgpu_callbacks();
}