/* See LICENSE file in the root OpenCV directory */ #ifndef __OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_HSA_EXTENSION_HPP__ #define __OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_HSA_EXTENSION_HPP__ #if defined(HAVE_OPENCL_SVM) #include "opencl_core.hpp" #ifndef CL_DEVICE_SVM_CAPABILITIES_AMD // // Part of the file is an extract from the cl_ext.h file from AMD APP SDK package. // Below is the original copyright. // /******************************************************************************* * Copyright (c) 2008-2013 The Khronos Group Inc. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and/or associated documentation files (the * "Materials"), to deal in the Materials without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Materials, and to * permit persons to whom the Materials are furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Materials. * * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. ******************************************************************************/ /******************************************* * Shared Virtual Memory (SVM) extension *******************************************/ typedef cl_bitfield cl_device_svm_capabilities_amd; typedef cl_bitfield cl_svm_mem_flags_amd; typedef cl_uint cl_kernel_exec_info_amd; /* cl_device_info */ #define CL_DEVICE_SVM_CAPABILITIES_AMD 0x1053 #define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT_AMD 0x1054 /* cl_device_svm_capabilities_amd */ #define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_AMD (1 << 0) #define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_AMD (1 << 1) #define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_AMD (1 << 2) #define CL_DEVICE_SVM_ATOMICS_AMD (1 << 3) /* cl_svm_mem_flags_amd */ #define CL_MEM_SVM_FINE_GRAIN_BUFFER_AMD (1 << 10) #define CL_MEM_SVM_ATOMICS_AMD (1 << 11) /* cl_mem_info */ #define CL_MEM_USES_SVM_POINTER_AMD 0x1109 /* cl_kernel_exec_info_amd */ #define CL_KERNEL_EXEC_INFO_SVM_PTRS_AMD 0x11B6 #define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_AMD 0x11B7 /* cl_command_type */ #define CL_COMMAND_SVM_FREE_AMD 0x1209 #define CL_COMMAND_SVM_MEMCPY_AMD 0x120A #define CL_COMMAND_SVM_MEMFILL_AMD 0x120B #define CL_COMMAND_SVM_MAP_AMD 0x120C #define CL_COMMAND_SVM_UNMAP_AMD 0x120D typedef CL_API_ENTRY void* (CL_API_CALL * clSVMAllocAMD_fn)( cl_context /* context */, cl_svm_mem_flags_amd /* flags */, size_t /* size */, unsigned int /* alignment */ ) CL_EXT_SUFFIX__VERSION_1_2; typedef CL_API_ENTRY void (CL_API_CALL * clSVMFreeAMD_fn)( cl_context /* context */, void* /* svm_pointer */ ) CL_EXT_SUFFIX__VERSION_1_2; typedef CL_API_ENTRY cl_int (CL_API_CALL * clEnqueueSVMFreeAMD_fn)( 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_EXT_SUFFIX__VERSION_1_2; typedef CL_API_ENTRY cl_int (CL_API_CALL * clEnqueueSVMMemcpyAMD_fn)( 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_EXT_SUFFIX__VERSION_1_2; typedef CL_API_ENTRY cl_int (CL_API_CALL * clEnqueueSVMMemFillAMD_fn)( 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_EXT_SUFFIX__VERSION_1_2; typedef CL_API_ENTRY cl_int (CL_API_CALL * clEnqueueSVMMapAMD_fn)( cl_command_queue /* command_queue */, cl_bool /* blocking_map */, cl_map_flags /* map_flags */, void* /* svm_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, cl_event* /* event */ ) CL_EXT_SUFFIX__VERSION_1_2; typedef CL_API_ENTRY cl_int (CL_API_CALL * clEnqueueSVMUnmapAMD_fn)( 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_EXT_SUFFIX__VERSION_1_2; typedef CL_API_ENTRY cl_int (CL_API_CALL * clSetKernelArgSVMPointerAMD_fn)( cl_kernel /* kernel */, cl_uint /* arg_index */, const void * /* arg_value */ ) CL_EXT_SUFFIX__VERSION_1_2; typedef CL_API_ENTRY cl_int (CL_API_CALL * clSetKernelExecInfoAMD_fn)( cl_kernel /* kernel */, cl_kernel_exec_info_amd /* param_name */, size_t /* param_value_size */, const void * /* param_value */ ) CL_EXT_SUFFIX__VERSION_1_2; #endif #endif // HAVE_OPENCL_SVM #endif // __OPENCV_CORE_OCL_RUNTIME_OPENCL_SVM_HSA_EXTENSION_HPP__