diff --git a/projects/clr/opencl/api/opencl/amdocl/cl_d3d9.cpp b/projects/clr/opencl/api/opencl/amdocl/cl_d3d9.cpp index c26df052f5..81e9328e01 100644 --- a/projects/clr/opencl/api/opencl/amdocl/cl_d3d9.cpp +++ b/projects/clr/opencl/api/opencl/amdocl/cl_d3d9.cpp @@ -225,7 +225,7 @@ RUNTIME_EXIT RUNTIME_ENTRY(cl_int, clEnqueueReleaseDX9MediaSurfacesKHR, ( cl_command_queue command_queue, cl_uint num_objects, - cl_mem * mem_objects, + const cl_mem * mem_objects, cl_uint num_events_in_wait_list, const cl_event * event_wait_list, cl_event * event)) diff --git a/projects/clr/opencl/api/opencl/amdocl/cl_d3d9_amd.hpp b/projects/clr/opencl/api/opencl/amdocl/cl_d3d9_amd.hpp index 1a83f29842..4424addb55 100644 --- a/projects/clr/opencl/api/opencl/amdocl/cl_d3d9_amd.hpp +++ b/projects/clr/opencl/api/opencl/amdocl/cl_d3d9_amd.hpp @@ -144,7 +144,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR( cl_command_queue, cl_uint, - cl_mem *, + const cl_mem *, cl_uint, const cl_event *, cl_event *); diff --git a/projects/clr/opencl/api/opencl/khronos/icd/OpenCL.rc b/projects/clr/opencl/api/opencl/khronos/icd/OpenCL.rc index 9dbe6a9fdd..3744e35bb5 100644 --- a/projects/clr/opencl/api/opencl/khronos/icd/OpenCL.rc +++ b/projects/clr/opencl/api/opencl/khronos/icd/OpenCL.rc @@ -43,8 +43,8 @@ #ifdef RC_INVOKED VS_VERSION_INFO VERSIONINFO -FILEVERSION 2,0,1,0 -PRODUCTVERSION 2,0,1,0 +FILEVERSION 2,0,3,0 +PRODUCTVERSION 2,0,3,0 FILETYPE VFT_DLL BEGIN @@ -55,7 +55,7 @@ BEGIN VALUE "FileDescription" ,"OpenCL Client DLL" VALUE "ProductName" ,"Khronos OpenCL ICD" VALUE "LegalCopyright" ,"Copyright \251 The Khronos Group Inc 2014" - VALUE "FileVersion" ,"2.0.1.0" + VALUE "FileVersion" ,"2.0.3.0" VALUE "CompanyName" ,"Khronos Group" VALUE "InternalName" ,"OpenCL" diff --git a/projects/clr/opencl/api/opencl/khronos/icd/icd_dispatch.c b/projects/clr/opencl/api/opencl/khronos/icd/icd_dispatch.c index 8340d1e9e7..174c349c4d 100644 --- a/projects/clr/opencl/api/opencl/khronos/icd/icd_dispatch.c +++ b/projects/clr/opencl/api/opencl/khronos/icd/icd_dispatch.c @@ -276,20 +276,6 @@ clCreateCommandQueue(cl_context context, errcode_ret); } -CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueueWithProperties(cl_context context, - cl_device_id device, - const cl_queue_properties * properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateCommandQueueWithProperties( - context, - device, - properties, - errcode_ret); -} - CL_API_ENTRY cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 { @@ -437,18 +423,6 @@ clCreateSampler(cl_context context, errcode_ret); } -CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSamplerWithProperties(cl_context context, - const cl_sampler_properties * properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateSamplerWithProperties( - context, - properties, - errcode_ret); -} - CL_API_ENTRY cl_int CL_API_CALL clRetainSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0 { @@ -1440,6 +1414,11 @@ clGetExtensionFunctionAddressForPlatform(cl_platform_id platform, /* cl_khr_egl_event */ CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateEventFromEGLSyncKHR); + /* cl_khr_sub_groups */ + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetKernelSubGroupInfoKHR); + + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clTerminateContextKHR); + // fall back to vendor extension detection // FIXME Now that we have a platform id here, we need to validate that it isn't NULL, so shouldn't we have an errcode_ret @@ -1643,6 +1622,11 @@ clGetExtensionFunctionAddress(const char *function_name) CL_EXT_SUFFIX__VERSION_ /* cl_khr_egl_event */ CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateEventFromEGLSyncKHR); + /* cl_khr_sub_groups */ + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetKernelSubGroupInfoKHR); + + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clTerminateContextKHR); + // fall back to vendor extension detection for (vendor = khrIcdState.vendors; vendor; vendor = vendor->next) { @@ -2142,7 +2126,7 @@ CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR( cl_command_queue command_queue, cl_uint num_objects, - cl_mem * mem_objects, + const cl_mem * mem_objects, cl_uint num_events_in_wait_list, const cl_event * event_wait_list, cl_event * event) @@ -2226,229 +2210,6 @@ clSetUserEventStatus( execution_status); } -CL_API_ENTRY void * CL_API_CALL -clSVMAlloc(cl_context context, - cl_svm_mem_flags flags, - size_t size, - cl_uint alignment) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, NULL); - return context->dispatch->clSVMAlloc( - context, - flags, - size, - alignment); -} - -CL_API_ENTRY void CL_API_CALL -clSVMFree(cl_context context, - void * svm_pointer) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE(context); - context->dispatch->clSVMFree( - context, - svm_pointer); -} - -CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointer(cl_kernel kernel, - cl_uint arg_index, - const void * arg_value) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clSetKernelArgSVMPointer( - kernel, - arg_index, - arg_value); -} - -CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfo(cl_kernel kernel, - cl_kernel_exec_info param_name, - size_t param_value_size, - const void * param_value) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clSetKernelExecInfo( - kernel, - param_name, - param_value_size, - param_value); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFree(cl_command_queue command_queue, - cl_uint num_svm_pointers, - void * svm_pointers[], - void (CL_CALLBACK * pfn_free_func)(cl_command_queue queue, - cl_uint num_svm_pointers, - void * svm_pointers[], - void * user_data), - void * user_data, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMFree( - command_queue, - num_svm_pointers, - svm_pointers, - pfn_free_func, - user_data, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpy(cl_command_queue command_queue, - cl_bool blocking_copy, - void * dst_ptr, - const void * src_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMMemcpy( - command_queue, - blocking_copy, - dst_ptr, - src_ptr, - size, - num_events_in_wait_list, - event_wait_list, - event); -} - - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFill(cl_command_queue command_queue, - void * svm_ptr, - const void * pattern, - size_t pattern_size, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMMemFill( - command_queue, - svm_ptr, - pattern, - pattern_size, - size, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMap(cl_command_queue command_queue, - cl_bool blocking_map, - cl_map_flags flags, - void * svm_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMMap( - command_queue, - blocking_map, - flags, - svm_ptr, - size, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmap(cl_command_queue command_queue, - void * svm_ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMUnmap( - command_queue, - svm_ptr, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_mem CL_API_CALL -clCreatePipe(cl_context context, - cl_mem_flags flags, - cl_uint pipe_packet_size, - cl_uint pipe_max_packets, - const cl_pipe_properties * properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreatePipe( - context, - flags, - pipe_packet_size, - pipe_max_packets, - properties, - errcode_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetPipeInfo(cl_mem pipe, - cl_image_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(pipe, CL_INVALID_MEM_OBJECT); - return pipe->dispatch->clGetPipeInfo( - pipe, - param_name, - param_value_size, - param_value, - param_value_size_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfoKHR( - cl_kernel kernel, - cl_device_id device, - cl_kernel_sub_group_info param_name, - size_t input_value_size, - const void * input_value, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clGetKernelSubGroupInfoKHR( - kernel, - device, - param_name, - input_value_size, - input_value, - param_value_size, - param_value, - param_value_size_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clTerminateContextKHR( - cl_context context) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); - return context->dispatch->clTerminateContextKHR(context); -} - CL_API_ENTRY cl_mem CL_API_CALL clCreateFromEGLImageKHR( cl_context context, @@ -2522,3 +2283,269 @@ clCreateEventFromEGLSyncKHR( errcode_ret); } +CL_API_ENTRY cl_command_queue CL_API_CALL +clCreateCommandQueueWithProperties( + cl_context context, + cl_device_id device, + const cl_queue_properties * properties, + cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateCommandQueueWithProperties( + context, + device, + properties, + errcode_ret); +} + +CL_API_ENTRY cl_mem CL_API_CALL +clCreatePipe( + cl_context context, + cl_mem_flags flags, + cl_uint pipe_packet_size, + cl_uint pipe_max_packets, + const cl_pipe_properties * properties, + cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreatePipe( + context, + flags, + pipe_packet_size, + pipe_max_packets, + properties, + errcode_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL +clGetPipeInfo( + cl_mem pipe, + cl_pipe_info param_name, + size_t param_value_size, + void * param_value, + size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(pipe, CL_INVALID_MEM_OBJECT); + return pipe->dispatch->clGetPipeInfo( + pipe, + param_name, + param_value_size, + param_value, + param_value_size_ret); +} + +CL_API_ENTRY void * CL_API_CALL +clSVMAlloc( + cl_context context, + cl_svm_mem_flags flags, + size_t size, + cl_uint alignment) CL_API_SUFFIX__VERSION_2_0 +{ + if (!context) { + return NULL; + } + return context->dispatch->clSVMAlloc( + context, + flags, + size, + alignment); +} + +CL_API_ENTRY void CL_API_CALL +clSVMFree( + cl_context context, + void * svm_pointer) CL_API_SUFFIX__VERSION_2_0 +{ + if (!context || !svm_pointer) { + return; + } + context->dispatch->clSVMFree( + context, + svm_pointer); +} + +CL_API_ENTRY cl_int CL_API_CALL +clEnqueueSVMFree( + cl_command_queue command_queue, + cl_uint num_svm_pointers, + void* svm_pointers[], + void (CL_CALLBACK* pfn_free_func)( + cl_command_queue queue, + cl_uint num_svm_pointers, + void* svm_pointers[], + void* user_data), + void* user_data, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMFree( + command_queue, + num_svm_pointers, + svm_pointers, + pfn_free_func, + user_data, + num_events_in_wait_list, + event_wait_list, + event); +} + +CL_API_ENTRY cl_int CL_API_CALL +clEnqueueSVMMemcpy( + cl_command_queue command_queue, + cl_bool blocking_copy, + void * dst_ptr, + const void * src_ptr, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMMemcpy( + command_queue, + blocking_copy, + dst_ptr, + src_ptr, + size, + num_events_in_wait_list, + event_wait_list, + event); +} + +CL_API_ENTRY cl_int CL_API_CALL +clEnqueueSVMMemFill( + cl_command_queue command_queue, + void * svm_ptr, + const void * pattern, + size_t pattern_size, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMMemFill( + command_queue, + svm_ptr, + pattern, + pattern_size, + size, + num_events_in_wait_list, + event_wait_list, + event); +} + +CL_API_ENTRY cl_int CL_API_CALL +clEnqueueSVMMap( + cl_command_queue command_queue, + cl_bool blocking_map, + cl_map_flags flags, + void * svm_ptr, + size_t size, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMMap( + command_queue, + blocking_map, + flags, + svm_ptr, + size, + num_events_in_wait_list, + event_wait_list, + event); +} + +CL_API_ENTRY cl_int CL_API_CALL +clEnqueueSVMUnmap( + cl_command_queue command_queue, + void * svm_ptr, + cl_uint num_events_in_wait_list, + const cl_event * event_wait_list, + cl_event * event) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMUnmap( + command_queue, + svm_ptr, + num_events_in_wait_list, + event_wait_list, + event); +} + +CL_API_ENTRY cl_sampler CL_API_CALL +clCreateSamplerWithProperties( + cl_context context, + const cl_sampler_properties * sampler_properties, + cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateSamplerWithProperties( + context, + sampler_properties, + errcode_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL +clSetKernelArgSVMPointer( + cl_kernel kernel, + cl_uint arg_index, + const void * arg_value) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + return kernel->dispatch->clSetKernelArgSVMPointer( + kernel, + arg_index, + arg_value); +} + +CL_API_ENTRY cl_int CL_API_CALL +clSetKernelExecInfo( + cl_kernel kernel, + cl_kernel_exec_info param_name, + size_t param_value_size, + const void * param_value) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + return kernel->dispatch->clSetKernelExecInfo( + kernel, + param_name, + param_value_size, + param_value); +} + +CL_API_ENTRY cl_int CL_API_CALL +clGetKernelSubGroupInfoKHR( + cl_kernel in_kernel, + cl_device_id in_device, + cl_kernel_sub_group_info param_name, + size_t input_value_size, + const void * input_value, + size_t param_value_size, + void * param_value, + size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(in_kernel, CL_INVALID_KERNEL); + return in_kernel->dispatch->clGetKernelSubGroupInfoKHR( + in_kernel, + in_device, + param_name, + input_value_size, + input_value, + param_value_size, + param_value, + param_value_size_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL +clTerminateContextKHR( + cl_context context) CL_API_SUFFIX__VERSION_2_0 +{ + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); + return context->dispatch->clTerminateContextKHR(context); +} + diff --git a/projects/clr/opencl/api/opencl/khronos/icd/icd_dispatch.h b/projects/clr/opencl/api/opencl/khronos/icd/icd_dispatch.h index 023f4427e8..baff2b1f43 100644 --- a/projects/clr/opencl/api/opencl/khronos/icd/icd_dispatch.h +++ b/projects/clr/opencl/api/opencl/khronos/icd/icd_dispatch.h @@ -392,6 +392,16 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clSetKernelExecInfo)( size_t /* param_value_size */, const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clGetKernelSubGroupInfoKHR)( + cl_kernel /* in_kernel */, + cl_device_id /*in_device*/, + cl_kernel_sub_group_info /* param_name */, + size_t /*input_value_size*/, + const void * /*input_value*/, + size_t /*param_value_size*/, + void* /*param_value*/, + size_t* /*param_value_size_ret*/) CL_EXT_SUFFIX__VERSION_2_0; + // Event Object APIs typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clWaitForEvents)( cl_uint num_events, @@ -1023,7 +1033,7 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clEnqueueAcquireDX9MediaSurface typedef CL_API_ENTRY cl_int (CL_API_CALL *KHRpfn_clEnqueueReleaseDX9MediaSurfacesKHR)( cl_command_queue command_queue, cl_uint num_objects, - cl_mem * mem_objects, + const cl_mem * mem_objects, cl_uint num_events_in_wait_list, const cl_event * event_wait_list, cl_event * event) CL_API_SUFFIX__VERSION_1_2; @@ -1114,7 +1124,7 @@ extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR( cl_command_queue command_queue, cl_uint num_objects, - cl_mem * mem_objects, + const cl_mem * mem_objects, cl_uint num_events_in_wait_list, const cl_event * event_wait_list, cl_event * event); @@ -1218,16 +1228,6 @@ typedef CL_API_ENTRY cl_event (CL_API_CALL *KHRpfn_clCreateEventFromEGLSyncKHR)( CLeglDisplayKHR display, cl_int *errcode_ret); -typedef CL_API_ENTRY cl_int (CL_API_CALL * KHRpfn_clGetKernelSubGroupInfoKHR)( - cl_kernel kernel, - cl_device_id device, - cl_kernel_sub_group_info param_name, - size_t input_value_size, - const void * input_value, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0; - typedef CL_API_ENTRY cl_int (CL_API_CALL * KHRpfn_clTerminateContextKHR)( cl_context context) CL_API_SUFFIX__VERSION_2_0; @@ -1403,7 +1403,9 @@ struct KHRicdVendorDispatchRec KHRpfn_clSetKernelArgSVMPointer clSetKernelArgSVMPointer; KHRpfn_clSetKernelExecInfo clSetKernelExecInfo; + /* cl_khr_sub_groups */ KHRpfn_clGetKernelSubGroupInfoKHR clGetKernelSubGroupInfoKHR; + KHRpfn_clTerminateContextKHR clTerminateContextKHR; };