@@ -53,6 +53,8 @@ CONSTFIX char clHostMemAllocName[] = "clHostMemAllocINTEL";
5353CONSTFIX char clDeviceMemAllocName[] = " clDeviceMemAllocINTEL" ;
5454CONSTFIX char clSharedMemAllocName[] = " clSharedMemAllocINTEL" ;
5555CONSTFIX char clMemFreeName[] = " clMemFreeINTEL" ;
56+ CONSTFIX char clCreateBufferWithPropertiesName[] =
57+ " clCreateBufferWithPropertiesINTEL" ;
5658CONSTFIX char clSetKernelArgMemPointerName[] = " clSetKernelArgMemPointerINTEL" ;
5759CONSTFIX char clEnqueueMemsetName[] = " clEnqueueMemsetINTEL" ;
5860CONSTFIX char clEnqueueMemcpyName[] = " clEnqueueMemcpyINTEL" ;
@@ -516,12 +518,25 @@ pi_result piextContextCreateWithNativeHandle(pi_native_handle nativeHandle,
516518}
517519
518520pi_result piMemBufferCreate (pi_context context, pi_mem_flags flags, size_t size,
519- void *host_ptr, pi_mem *ret_mem) {
521+ void *host_ptr, pi_mem *ret_mem,
522+ const pi_mem_properties *properties) {
520523 pi_result ret_err = PI_INVALID_OPERATION;
521- *ret_mem = cast<pi_mem>(clCreateBuffer (cast<cl_context>(context),
522- cast<cl_mem_flags>(flags), size,
523- host_ptr, cast<cl_int *>(&ret_err)));
524-
524+ clCreateBufferWithPropertiesINTEL_fn FuncPtr = nullptr ;
525+
526+ if (properties)
527+ // First we need to look up the function pointer
528+ ret_err = getExtFuncFromContext<clCreateBufferWithPropertiesName,
529+ clCreateBufferWithPropertiesINTEL_fn>(
530+ context, &FuncPtr);
531+
532+ if (FuncPtr)
533+ *ret_mem = cast<pi_mem>(FuncPtr (cast<cl_context>(context), properties,
534+ cast<cl_mem_flags>(flags), size, host_ptr,
535+ cast<cl_int *>(&ret_err)));
536+ else
537+ *ret_mem = cast<pi_mem>(clCreateBuffer (cast<cl_context>(context),
538+ cast<cl_mem_flags>(flags), size,
539+ host_ptr, cast<cl_int *>(&ret_err)));
525540 return ret_err;
526541}
527542
0 commit comments