@@ -53,6 +53,8 @@ CONSTFIX char clHostMemAllocName[] = "clHostMemAllocINTEL";
53
53
CONSTFIX char clDeviceMemAllocName[] = " clDeviceMemAllocINTEL" ;
54
54
CONSTFIX char clSharedMemAllocName[] = " clSharedMemAllocINTEL" ;
55
55
CONSTFIX char clMemFreeName[] = " clMemFreeINTEL" ;
56
+ CONSTFIX char clCreateBufferWithPropertiesName[] =
57
+ " clCreateBufferWithPropertiesINTEL" ;
56
58
CONSTFIX char clSetKernelArgMemPointerName[] = " clSetKernelArgMemPointerINTEL" ;
57
59
CONSTFIX char clEnqueueMemsetName[] = " clEnqueueMemsetINTEL" ;
58
60
CONSTFIX char clEnqueueMemcpyName[] = " clEnqueueMemcpyINTEL" ;
@@ -516,12 +518,25 @@ pi_result piextContextCreateWithNativeHandle(pi_native_handle nativeHandle,
516
518
}
517
519
518
520
pi_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) {
520
523
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)));
525
540
return ret_err;
526
541
}
527
542
0 commit comments