Skip to content

Commit daaddb0

Browse files
committed
add support for cl_ext_buffer_device_address
1 parent d98b745 commit daaddb0

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

scripts/call_all.c.mako

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ defaultValueForType = {
5959
'cl_kernel_exec_info_arm' : 'CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM',
6060
'cl_kernel_sub_group_info' : 'CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR',
6161
'cl_mem_advice_intel' : '0',
62+
'cl_mem_device_address_ext' : '0',
6263
'cl_mutable_command_info_khr' : 'CL_MUTABLE_COMMAND_COMMAND_BUFFER_KHR',
6364
'cl_map_flags' : 'CL_MAP_READ',
6465
'cl_mem_flags' : 'CL_MEM_READ_WRITE',

src/openclext.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -756,6 +756,17 @@ typedef cl_int (CL_API_CALL* clTerminateContextKHR_clextfn)(
756756
#pragma message("Define for cl_khr_terminate_context was not found! Please update your headers.")
757757
#endif // defined(cl_khr_terminate_context)
758758

759+
#if defined(cl_ext_buffer_device_address)
760+
761+
typedef cl_int (CL_API_CALL* clSetKernelArgDevicePointerEXT_clextfn)(
762+
cl_kernel kernel,
763+
cl_uint arg_index,
764+
cl_mem_device_address_ext arg_value);
765+
766+
#else
767+
#pragma message("Define for cl_ext_buffer_device_address was not found! Please update your headers.")
768+
#endif // defined(cl_ext_buffer_device_address)
769+
759770
#if defined(cl_ext_device_fission)
760771

761772
typedef cl_int (CL_API_CALL* clReleaseDeviceEXT_clextfn)(
@@ -1445,6 +1456,10 @@ struct openclext_dispatch_table {
14451456
clTerminateContextKHR_clextfn clTerminateContextKHR;
14461457
#endif // defined(cl_khr_terminate_context)
14471458

1459+
#if defined(cl_ext_buffer_device_address)
1460+
clSetKernelArgDevicePointerEXT_clextfn clSetKernelArgDevicePointerEXT;
1461+
#endif // defined(cl_ext_buffer_device_address)
1462+
14481463
#if defined(cl_ext_device_fission)
14491464
clReleaseDeviceEXT_clextfn clReleaseDeviceEXT;
14501465
clRetainDeviceEXT_clextfn clRetainDeviceEXT;
@@ -1721,6 +1736,10 @@ static void _init(cl_platform_id platform, openclext_dispatch_table* dispatch_pt
17211736
CLEXT_GET_EXTENSION(clTerminateContextKHR);
17221737
#endif // defined(cl_khr_terminate_context)
17231738

1739+
#if defined(cl_ext_buffer_device_address)
1740+
CLEXT_GET_EXTENSION(clSetKernelArgDevicePointerEXT);
1741+
#endif // defined(cl_ext_buffer_device_address)
1742+
17241743
#if defined(cl_ext_device_fission)
17251744
CLEXT_GET_EXTENSION(clReleaseDeviceEXT);
17261745
CLEXT_GET_EXTENSION(clRetainDeviceEXT);
@@ -3414,6 +3433,25 @@ cl_int CL_API_CALL clTerminateContextKHR(
34143433

34153434
#endif // defined(cl_khr_terminate_context)
34163435

3436+
#if defined(cl_ext_buffer_device_address)
3437+
3438+
cl_int CL_API_CALL clSetKernelArgDevicePointerEXT(
3439+
cl_kernel kernel,
3440+
cl_uint arg_index,
3441+
cl_mem_device_address_ext arg_value)
3442+
{
3443+
struct openclext_dispatch_table* dispatch_ptr = _get_dispatch(kernel);
3444+
if (dispatch_ptr == nullptr || dispatch_ptr->clSetKernelArgDevicePointerEXT == nullptr) {
3445+
return CL_INVALID_OPERATION;
3446+
}
3447+
return dispatch_ptr->clSetKernelArgDevicePointerEXT(
3448+
kernel,
3449+
arg_index,
3450+
arg_value);
3451+
}
3452+
3453+
#endif // defined(cl_ext_buffer_device_address)
3454+
34173455
#if defined(cl_ext_device_fission)
34183456

34193457
cl_int CL_API_CALL clReleaseDeviceEXT(

tests/call_all.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,10 @@ void call_all(void)
161161
clTerminateContextKHR(NULL);
162162
#endif // cl_khr_terminate_context
163163

164+
#ifdef cl_ext_buffer_device_address
165+
clSetKernelArgDevicePointerEXT(NULL, 0, 0);
166+
#endif // cl_ext_buffer_device_address
167+
164168
#ifdef cl_ext_device_fission
165169
clReleaseDeviceEXT(NULL);
166170
clRetainDeviceEXT(NULL);

0 commit comments

Comments
 (0)