CL: update CL headers to 3.0

This just updates the headers from Khronos.

Change the cl_mem initialisers, not sure what totally correct answer is.

Acked-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7468>
This commit is contained in:
Dave Airlie 2020-10-07 10:19:09 +10:00
parent 041e3147c0
commit 725df7c15d
7 changed files with 672 additions and 164 deletions

View File

@ -1,29 +1,17 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2008-2019 The Khronos Group Inc. * Copyright (c) 2008-2020 The Khronos Group Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Licensed under the Apache License, Version 2.0 (the "License");
* copy of this software and/or associated documentation files (the * you may not use this file except in compliance with the License.
* "Materials"), to deal in the Materials without restriction, including * You may obtain a copy of the License at
* 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 * http://www.apache.org/licenses/LICENSE-2.0
* in all copies or substantial portions of the Materials.
* *
* MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS * Unless required by applicable law or agreed to in writing, software
* KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS * distributed under the License is distributed on an "AS IS" BASIS,
* SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* https://www.khronos.org/registry/ * See the License for the specific language governing permissions and
* * limitations under the License.
* 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.
******************************************************************************/ ******************************************************************************/
#ifndef __OPENCL_CL_H #ifndef __OPENCL_CL_H
@ -50,6 +38,7 @@ typedef struct _cl_sampler * cl_sampler;
typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */
typedef cl_ulong cl_bitfield; typedef cl_ulong cl_bitfield;
typedef cl_ulong cl_properties;
typedef cl_bitfield cl_device_type; typedef cl_bitfield cl_device_type;
typedef cl_uint cl_platform_info; typedef cl_uint cl_platform_info;
typedef cl_uint cl_device_info; typedef cl_uint cl_device_info;
@ -69,7 +58,7 @@ typedef cl_bitfield cl_device_affinity_domain;
typedef intptr_t cl_context_properties; typedef intptr_t cl_context_properties;
typedef cl_uint cl_context_info; typedef cl_uint cl_context_info;
#ifdef CL_VERSION_2_0 #ifdef CL_VERSION_2_0
typedef cl_bitfield cl_queue_properties; typedef cl_properties cl_queue_properties;
#endif #endif
typedef cl_uint cl_command_queue_info; typedef cl_uint cl_command_queue_info;
typedef cl_uint cl_channel_order; typedef cl_uint cl_channel_order;
@ -116,9 +105,16 @@ typedef cl_uint cl_event_info;
typedef cl_uint cl_command_type; typedef cl_uint cl_command_type;
typedef cl_uint cl_profiling_info; typedef cl_uint cl_profiling_info;
#ifdef CL_VERSION_2_0 #ifdef CL_VERSION_2_0
typedef cl_bitfield cl_sampler_properties; typedef cl_properties cl_sampler_properties;
typedef cl_uint cl_kernel_exec_info; typedef cl_uint cl_kernel_exec_info;
#endif #endif
#ifdef CL_VERSION_3_0
typedef cl_bitfield cl_device_atomic_capabilities;
typedef cl_bitfield cl_device_device_enqueue_capabilities;
typedef cl_uint cl_khronos_vendor_id;
typedef cl_properties cl_mem_properties;
typedef cl_uint cl_version;
#endif
typedef struct _cl_image_format { typedef struct _cl_image_format {
cl_channel_order image_channel_order; cl_channel_order image_channel_order;
@ -138,23 +134,29 @@ typedef struct _cl_image_desc {
cl_uint num_mip_levels; cl_uint num_mip_levels;
cl_uint num_samples; cl_uint num_samples;
#ifdef CL_VERSION_2_0 #ifdef CL_VERSION_2_0
#ifdef __GNUC__ #if __CL_HAS_ANON_STRUCT__
__extension__ /* Prevents warnings about anonymous union in -pedantic builds */
#endif
#ifdef _MSC_VER #ifdef _MSC_VER
#if _MSC_VER >= 1500
#pragma warning( push ) #pragma warning( push )
#pragma warning( disable : 4201 ) /* Prevents warning about nameless struct/union in /W4 /Za builds */ #pragma warning( disable : 4201 ) /* Prevents warning about nameless struct/union in /W4 /Za builds */
#endif #endif
#endif
__CL_ANON_STRUCT__
union { union {
#endif
#endif #endif
cl_mem buffer; cl_mem buffer;
#ifdef CL_VERSION_2_0 #ifdef CL_VERSION_2_0
#if __CL_HAS_ANON_STRUCT__
cl_mem mem_object; cl_mem mem_object;
}; };
#ifdef _MSC_VER #ifdef _MSC_VER
#if _MSC_VER >= 1500
#pragma warning( pop ) #pragma warning( pop )
#endif #endif
#endif #endif
#endif
#endif
} cl_image_desc; } cl_image_desc;
#endif #endif
@ -168,6 +170,17 @@ typedef struct _cl_buffer_region {
#endif #endif
#ifdef CL_VERSION_3_0
#define CL_NAME_VERSION_MAX_NAME_SIZE 64
typedef struct _cl_name_version {
cl_version version;
char name[CL_NAME_VERSION_MAX_NAME_SIZE];
} cl_name_version;
#endif
/******************************************************************************/ /******************************************************************************/
/* Error Codes */ /* Error Codes */
@ -266,6 +279,10 @@ typedef struct _cl_buffer_region {
#ifdef CL_VERSION_2_1 #ifdef CL_VERSION_2_1
#define CL_PLATFORM_HOST_TIMER_RESOLUTION 0x0905 #define CL_PLATFORM_HOST_TIMER_RESOLUTION 0x0905
#endif #endif
#ifdef CL_VERSION_3_0
#define CL_PLATFORM_NUMERIC_VERSION 0x0906
#define CL_PLATFORM_EXTENSIONS_WITH_VERSION 0x0907
#endif
/* cl_device_type - bitfield */ /* cl_device_type - bitfield */
#define CL_DEVICE_TYPE_DEFAULT (1 << 0) #define CL_DEVICE_TYPE_DEFAULT (1 << 0)
@ -385,6 +402,24 @@ typedef struct _cl_buffer_region {
#define CL_DEVICE_MAX_NUM_SUB_GROUPS 0x105C #define CL_DEVICE_MAX_NUM_SUB_GROUPS 0x105C
#define CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS 0x105D #define CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS 0x105D
#endif #endif
#ifdef CL_VERSION_3_0
#define CL_DEVICE_NUMERIC_VERSION 0x105E
#define CL_DEVICE_EXTENSIONS_WITH_VERSION 0x1060
#define CL_DEVICE_ILS_WITH_VERSION 0x1061
#define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION 0x1062
#define CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES 0x1063
#define CL_DEVICE_ATOMIC_FENCE_CAPABILITIES 0x1064
#define CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT 0x1065
#define CL_DEVICE_OPENCL_C_ALL_VERSIONS 0x1066
#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x1067
#define CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT 0x1068
#define CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT 0x1069
/* 0x106A to 0x106E - Reserved for upcoming KHR extension */
#define CL_DEVICE_OPENCL_C_FEATURES 0x106F
#define CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES 0x1070
#define CL_DEVICE_PIPE_SUPPORT 0x1071
#define CL_DEVICE_LATEST_CONFORMANCE_VERSION_PASSED 0x1072
#endif
/* cl_device_fp_config - bitfield */ /* cl_device_fp_config - bitfield */
#define CL_FP_DENORM (1 << 0) #define CL_FP_DENORM (1 << 0)
@ -478,6 +513,9 @@ typedef struct _cl_buffer_region {
#ifdef CL_VERSION_2_1 #ifdef CL_VERSION_2_1
#define CL_QUEUE_DEVICE_DEFAULT 0x1095 #define CL_QUEUE_DEVICE_DEFAULT 0x1095
#endif #endif
#ifdef CL_VERSION_3_0
#define CL_QUEUE_PROPERTIES_ARRAY 0x1098
#endif
/* cl_mem_flags and cl_svm_mem_flags - bitfield */ /* cl_mem_flags and cl_svm_mem_flags - bitfield */
#define CL_MEM_READ_WRITE (1 << 0) #define CL_MEM_READ_WRITE (1 << 0)
@ -586,6 +624,9 @@ typedef struct _cl_buffer_region {
#ifdef CL_VERSION_2_0 #ifdef CL_VERSION_2_0
#define CL_MEM_USES_SVM_POINTER 0x1109 #define CL_MEM_USES_SVM_POINTER 0x1109
#endif #endif
#ifdef CL_VERSION_3_0
#define CL_MEM_PROPERTIES 0x110A
#endif
/* cl_image_info */ /* cl_image_info */
#define CL_IMAGE_FORMAT 0x1110 #define CL_IMAGE_FORMAT 0x1110
@ -602,12 +643,14 @@ typedef struct _cl_buffer_region {
#define CL_IMAGE_NUM_SAMPLES 0x111A #define CL_IMAGE_NUM_SAMPLES 0x111A
#endif #endif
#ifdef CL_VERSION_2_0
/* cl_pipe_info */ /* cl_pipe_info */
#ifdef CL_VERSION_2_0
#define CL_PIPE_PACKET_SIZE 0x1120 #define CL_PIPE_PACKET_SIZE 0x1120
#define CL_PIPE_MAX_PACKETS 0x1121 #define CL_PIPE_MAX_PACKETS 0x1121
#endif
#ifdef CL_VERSION_3_0
#define CL_PIPE_PROPERTIES 0x1122
#endif #endif
/* cl_addressing_mode */ /* cl_addressing_mode */
@ -637,6 +680,9 @@ typedef struct _cl_buffer_region {
#define CL_SAMPLER_LOD_MIN 0x1156 #define CL_SAMPLER_LOD_MIN 0x1156
#define CL_SAMPLER_LOD_MAX 0x1157 #define CL_SAMPLER_LOD_MAX 0x1157
#endif #endif
#ifdef CL_VERSION_3_0
#define CL_SAMPLER_PROPERTIES 0x1158
#endif
/* cl_map_flags - bitfield */ /* cl_map_flags - bitfield */
#define CL_MAP_READ (1 << 0) #define CL_MAP_READ (1 << 0)
@ -701,10 +747,6 @@ typedef struct _cl_buffer_region {
#ifdef CL_VERSION_1_2 #ifdef CL_VERSION_1_2
#define CL_KERNEL_ATTRIBUTES 0x1195 #define CL_KERNEL_ATTRIBUTES 0x1195
#endif #endif
#ifdef CL_VERSION_2_1
#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9
#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA
#endif
#ifdef CL_VERSION_1_2 #ifdef CL_VERSION_1_2
@ -766,6 +808,8 @@ typedef struct _cl_buffer_region {
#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE 0x2033 #define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE 0x2033
#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE 0x2034 #define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE 0x2034
#define CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT 0x11B8 #define CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT 0x11B8
#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9
#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA
#endif #endif
@ -823,6 +867,9 @@ typedef struct _cl_buffer_region {
#define CL_COMMAND_SVM_MAP 0x120C #define CL_COMMAND_SVM_MAP 0x120C
#define CL_COMMAND_SVM_UNMAP 0x120D #define CL_COMMAND_SVM_UNMAP 0x120D
#endif #endif
#ifdef CL_VERSION_3_0
#define CL_COMMAND_SVM_MIGRATE_MEM 0x120E
#endif
/* command execution status */ /* command execution status */
#define CL_COMPLETE 0x0 #define CL_COMPLETE 0x0
@ -830,11 +877,9 @@ typedef struct _cl_buffer_region {
#define CL_SUBMITTED 0x2 #define CL_SUBMITTED 0x2
#define CL_QUEUED 0x3 #define CL_QUEUED 0x3
#ifdef CL_VERSION_1_1
/* cl_buffer_create_type */ /* cl_buffer_create_type */
#ifdef CL_VERSION_1_1
#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 #define CL_BUFFER_CREATE_TYPE_REGION 0x1220
#endif #endif
/* cl_profiling_info */ /* cl_profiling_info */
@ -846,6 +891,53 @@ typedef struct _cl_buffer_region {
#define CL_PROFILING_COMMAND_COMPLETE 0x1284 #define CL_PROFILING_COMMAND_COMPLETE 0x1284
#endif #endif
/* cl_device_atomic_capabilities - bitfield */
#ifdef CL_VERSION_3_0
#define CL_DEVICE_ATOMIC_ORDER_RELAXED (1 << 0)
#define CL_DEVICE_ATOMIC_ORDER_ACQ_REL (1 << 1)
#define CL_DEVICE_ATOMIC_ORDER_SEQ_CST (1 << 2)
#define CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM (1 << 3)
#define CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP (1 << 4)
#define CL_DEVICE_ATOMIC_SCOPE_DEVICE (1 << 5)
#define CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES (1 << 6)
#endif
/* cl_device_device_enqueue_capabilities - bitfield */
#ifdef CL_VERSION_3_0
#define CL_DEVICE_QUEUE_SUPPORTED (1 << 0)
#define CL_DEVICE_QUEUE_REPLACEABLE_DEFAULT (1 << 1)
#endif
/* cl_khronos_vendor_id */
#define CL_KHRONOS_VENDOR_ID_CODEPLAY 0x10004
#ifdef CL_VERSION_3_0
/* cl_version */
#define CL_VERSION_MAJOR_BITS (10)
#define CL_VERSION_MINOR_BITS (10)
#define CL_VERSION_PATCH_BITS (12)
#define CL_VERSION_MAJOR_MASK ((1 << CL_VERSION_MAJOR_BITS) - 1)
#define CL_VERSION_MINOR_MASK ((1 << CL_VERSION_MINOR_BITS) - 1)
#define CL_VERSION_PATCH_MASK ((1 << CL_VERSION_PATCH_BITS) - 1)
#define CL_VERSION_MAJOR(version) \
((version) >> (CL_VERSION_MINOR_BITS + CL_VERSION_PATCH_BITS))
#define CL_VERSION_MINOR(version) \
(((version) >> CL_VERSION_PATCH_BITS) & CL_VERSION_MINOR_MASK)
#define CL_VERSION_PATCH(version) ((version) & CL_VERSION_PATCH_MASK)
#define CL_MAKE_VERSION(major, minor, patch) \
((((major) & CL_VERSION_MAJOR_MASK) \
<< (CL_VERSION_MINOR_BITS + CL_VERSION_PATCH_BITS)) | \
(((minor) & CL_VERSION_MINOR_MASK) << CL_VERSION_PATCH_BITS) | \
((patch) & CL_VERSION_PATCH_MASK))
#endif
/********************************************************************************************************/ /********************************************************************************************************/
/* Platform API */ /* Platform API */
@ -946,6 +1038,16 @@ clGetContextInfo(cl_context context,
void * param_value, void * param_value,
size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
#ifdef CL_VERSION_3_0
extern CL_API_ENTRY cl_int CL_API_CALL
clSetContextDestructorCallback(cl_context context,
void (CL_CALLBACK* pfn_notify)(cl_context context,
void* user_data),
void* user_data) CL_API_SUFFIX__VERSION_3_0;
#endif
/* Command Queue APIs */ /* Command Queue APIs */
#ifdef CL_VERSION_2_0 #ifdef CL_VERSION_2_0
@ -1014,6 +1116,27 @@ clCreatePipe(cl_context context,
#endif #endif
#ifdef CL_VERSION_3_0
extern CL_API_ENTRY cl_mem CL_API_CALL
clCreateBufferWithProperties(cl_context context,
const cl_mem_properties * properties,
cl_mem_flags flags,
size_t size,
void * host_ptr,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_3_0;
extern CL_API_ENTRY cl_mem CL_API_CALL
clCreateImageWithProperties(cl_context context,
const cl_mem_properties * properties,
cl_mem_flags flags,
const cl_image_format * image_format,
const cl_image_desc * image_desc,
void * host_ptr,
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_3_0;
#endif
extern CL_API_ENTRY cl_int CL_API_CALL extern CL_API_ENTRY cl_int CL_API_CALL
clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0;
@ -1186,11 +1309,11 @@ clLinkProgram(cl_context context,
#ifdef CL_VERSION_2_2 #ifdef CL_VERSION_2_2
extern CL_API_ENTRY cl_int CL_API_CALL extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_2_2_DEPRECATED cl_int CL_API_CALL
clSetProgramReleaseCallback(cl_program program, clSetProgramReleaseCallback(cl_program program,
void (CL_CALLBACK * pfn_notify)(cl_program program, void (CL_CALLBACK * pfn_notify)(cl_program program,
void * user_data), void * user_data),
void * user_data) CL_API_SUFFIX__VERSION_2_2; void * user_data) CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED;
extern CL_API_ENTRY cl_int CL_API_CALL extern CL_API_ENTRY cl_int CL_API_CALL
clSetProgramSpecializationConstant(cl_program program, clSetProgramSpecializationConstant(cl_program program,

View File

@ -1,29 +1,17 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2008-2019 The Khronos Group Inc. * Copyright (c) 2008-2020 The Khronos Group Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Licensed under the Apache License, Version 2.0 (the "License");
* copy of this software and/or associated documentation files (the * you may not use this file except in compliance with the License.
* "Materials"), to deal in the Materials without restriction, including * You may obtain a copy of the License at
* 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 * http://www.apache.org/licenses/LICENSE-2.0
* in all copies or substantial portions of the Materials.
* *
* MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS * Unless required by applicable law or agreed to in writing, software
* KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS * distributed under the License is distributed on an "AS IS" BASIS,
* SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* https://www.khronos.org/registry/ * See the License for the specific language governing permissions and
* * limitations under the License.
* 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.
******************************************************************************/ ******************************************************************************/
/* cl_ext.h contains OpenCL extensions which don't have external */ /* cl_ext.h contains OpenCL extensions which don't have external */
@ -181,6 +169,8 @@ typedef CL_API_ENTRY cl_program
* cl_khr_terminate_context extension * * cl_khr_terminate_context extension *
**************************************/ **************************************/
#define CL_CONTEXT_TERMINATED_KHR -1121
#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 #define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031
#define CL_CONTEXT_TERMINATE_KHR 0x2032 #define CL_CONTEXT_TERMINATE_KHR 0x2032
@ -208,7 +198,7 @@ typedef CL_API_ENTRY cl_int
*****************************************/ *****************************************/
#define cl_khr_create_command_queue 1 #define cl_khr_create_command_queue 1
typedef cl_bitfield cl_queue_properties_khr; typedef cl_properties cl_queue_properties_khr;
extern CL_API_ENTRY cl_command_queue CL_API_CALL extern CL_API_ENTRY cl_command_queue CL_API_CALL
clCreateCommandQueueWithPropertiesKHR(cl_context context, clCreateCommandQueueWithPropertiesKHR(cl_context context,
@ -241,7 +231,27 @@ typedef CL_API_ENTRY cl_command_queue
* cl_amd_device_attribute_query * * cl_amd_device_attribute_query *
*********************************/ *********************************/
#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 #define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036
#define CL_DEVICE_TOPOLOGY_AMD 0x4037
#define CL_DEVICE_BOARD_NAME_AMD 0x4038
#define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039
#define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040
#define CL_DEVICE_SIMD_WIDTH_AMD 0x4041
#define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042
#define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043
#define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044
#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045
#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD 0x4046
#define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047
#define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048
#define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049
#define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A
#define CL_DEVICE_GFXIP_MINOR_AMD 0x404B
#define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C
#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030
#define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031
#define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033
#define CL_DEVICE_PCIE_ID_AMD 0x4034
/********************************* /*********************************
@ -346,6 +356,13 @@ typedef CL_API_ENTRY cl_int
cl_event * event); cl_event * event);
/*********************************
* cl_ext_cxx_for_opencl extension
*********************************/
#define cl_ext_cxx_for_opencl 1
#define CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT 0x4230
/********************************* /*********************************
* cl_qcom_ext_host_ptr extension * cl_qcom_ext_host_ptr extension
*********************************/ *********************************/
@ -582,6 +599,8 @@ typedef cl_uint cl_queue_throttle_khr;
* cl_khr_extended_versioning * cl_khr_extended_versioning
*********************************/ *********************************/
#define cl_khr_extended_versioning 1
#define CL_VERSION_MAJOR_BITS_KHR (10) #define CL_VERSION_MAJOR_BITS_KHR (10)
#define CL_VERSION_MINOR_BITS_KHR (10) #define CL_VERSION_MINOR_BITS_KHR (10)
#define CL_VERSION_PATCH_BITS_KHR (12) #define CL_VERSION_PATCH_BITS_KHR (12)
@ -621,6 +640,21 @@ typedef struct _cl_name_version_khr
#define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR 0x1062 #define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR 0x1062
/*********************************
* cl_khr_device_uuid extension
*********************************/
#define cl_khr_device_uuid 1
#define CL_UUID_SIZE_KHR 16
#define CL_LUID_SIZE_KHR 8
#define CL_DEVICE_UUID_KHR 0x106A
#define CL_DRIVER_UUID_KHR 0x106B
#define CL_DEVICE_LUID_VALID_KHR 0x106C
#define CL_DEVICE_LUID_KHR 0x106D
#define CL_DEVICE_NODE_MASK_KHR 0x106E
/********************************** /**********************************
* cl_arm_import_memory extension * * cl_arm_import_memory extension *
**********************************/ **********************************/
@ -637,12 +671,15 @@ typedef intptr_t cl_import_properties_arm;
/* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ /* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */
#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 #define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4
/* Protected DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ /* Protected memory property */
#define CL_IMPORT_TYPE_PROTECTED_ARM 0x40B5 #define CL_IMPORT_TYPE_PROTECTED_ARM 0x40B5
/* Android hardware buffer type value for CL_IMPORT_TYPE_ARM property */ /* Android hardware buffer type value for CL_IMPORT_TYPE_ARM property */
#define CL_IMPORT_TYPE_ANDROID_HARDWARE_BUFFER_ARM 0x41E2 #define CL_IMPORT_TYPE_ANDROID_HARDWARE_BUFFER_ARM 0x41E2
/* Data consistency with host property */
#define CL_IMPORT_DMA_BUF_DATA_CONSISTENCY_WITH_HOST_ARM 0x41E3
/* Import memory size value to indicate a size for the whole buffer */ /* Import memory size value to indicate a size for the whole buffer */
#define CL_IMPORT_MEMORY_WHOLE_ALLOCATION_ARM SIZE_MAX #define CL_IMPORT_MEMORY_WHOLE_ALLOCATION_ARM SIZE_MAX
@ -803,6 +840,26 @@ clSetKernelExecInfoARM(cl_kernel kernel,
/* cl_command_queue_properties */ /* cl_command_queue_properties */
#define CL_QUEUE_JOB_SLOT_ARM 0x41E1 #define CL_QUEUE_JOB_SLOT_ARM 0x41E1
/*********************************
* cl_arm_scheduling_controls
*********************************/
#define cl_arm_scheduling_controls 1
/* cl_device_info */
#define CL_DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM 0x41E4
#define CL_DEVICE_SCHEDULING_KERNEL_BATCHING_ARM (1 << 0)
#define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_ARM (1 << 1)
#define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_MODIFIER_ARM (1 << 2)
/* cl_kernel_info */
#define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_ARM 0x41E5
#define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_MODIFIER_ARM 0x41E6
/* cl_queue_properties */
#define CL_QUEUE_KERNEL_BATCHING_ARM 0x41E7
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -1,33 +1,22 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2008-2019 The Khronos Group Inc. * Copyright (c) 2008-2020 The Khronos Group Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Licensed under the Apache License, Version 2.0 (the "License");
* copy of this software and/or associated documentation files (the * you may not use this file except in compliance with the License.
* "Materials"), to deal in the Materials without restriction, including * You may obtain a copy of the License at
* 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 * http://www.apache.org/licenses/LICENSE-2.0
* in all copies or substantial portions of the Materials.
* *
* MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS * Unless required by applicable law or agreed to in writing, software
* KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS * distributed under the License is distributed on an "AS IS" BASIS,
* SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* https://www.khronos.org/registry/ * See the License for the specific language governing permissions and
* limitations under the License.
* *
* 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.
******************************************************************************/ ******************************************************************************/
/*****************************************************************************\ /*****************************************************************************\
Copyright (c) 2013-2019 Intel Corporation All Rights Reserved. Copyright (c) 2013-2020 Intel Corporation All Rights Reserved.
THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
@ -294,8 +283,8 @@ typedef cl_uint cl_diagnostics_verbose_level;
#define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C #define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C
#define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL 0x410D #define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL 0x410D
#define CL_AVC_ME_VERSION_0_INTEL 0x0; // No support. #define CL_AVC_ME_VERSION_0_INTEL 0x0 /* No support. */
#define CL_AVC_ME_VERSION_1_INTEL 0x1; // First supported version. #define CL_AVC_ME_VERSION_1_INTEL 0x1 /* First supported version. */
#define CL_AVC_ME_MAJOR_16x16_INTEL 0x0 #define CL_AVC_ME_MAJOR_16x16_INTEL 0x0
#define CL_AVC_ME_MAJOR_16x8_INTEL 0x1 #define CL_AVC_ME_MAJOR_16x8_INTEL 0x1
@ -416,6 +405,325 @@ typedef cl_uint cl_diagnostics_verbose_level;
#define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL 0x0 #define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL 0x0
#define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL 0x1 #define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL 0x1
/*******************************************
* cl_intel_unified_shared_memory extension *
********************************************/
/* These APIs are in sync with Revision Q of the cl_intel_unified_shared_memory spec! */
#define cl_intel_unified_shared_memory 1
/* cl_device_info */
#define CL_DEVICE_HOST_MEM_CAPABILITIES_INTEL 0x4190
#define CL_DEVICE_DEVICE_MEM_CAPABILITIES_INTEL 0x4191
#define CL_DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4192
#define CL_DEVICE_CROSS_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4193
#define CL_DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL 0x4194
typedef cl_bitfield cl_device_unified_shared_memory_capabilities_intel;
/* cl_device_unified_shared_memory_capabilities_intel - bitfield */
#define CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL (1 << 0)
#define CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL (1 << 1)
#define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL (1 << 2)
#define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL (1 << 3)
typedef cl_properties cl_mem_properties_intel;
/* cl_mem_properties_intel */
#define CL_MEM_ALLOC_FLAGS_INTEL 0x4195
typedef cl_bitfield cl_mem_alloc_flags_intel;
/* cl_mem_alloc_flags_intel - bitfield */
#define CL_MEM_ALLOC_WRITE_COMBINED_INTEL (1 << 0)
typedef cl_uint cl_mem_info_intel;
/* cl_mem_alloc_info_intel */
#define CL_MEM_ALLOC_TYPE_INTEL 0x419A
#define CL_MEM_ALLOC_BASE_PTR_INTEL 0x419B
#define CL_MEM_ALLOC_SIZE_INTEL 0x419C
#define CL_MEM_ALLOC_DEVICE_INTEL 0x419D
/* Enum values 0x419E-0x419F are reserved for future queries. */
typedef cl_uint cl_unified_shared_memory_type_intel;
/* cl_unified_shared_memory_type_intel */
#define CL_MEM_TYPE_UNKNOWN_INTEL 0x4196
#define CL_MEM_TYPE_HOST_INTEL 0x4197
#define CL_MEM_TYPE_DEVICE_INTEL 0x4198
#define CL_MEM_TYPE_SHARED_INTEL 0x4199
typedef cl_uint cl_mem_advice_intel;
/* cl_mem_advice_intel */
/* Enum values 0x4208-0x420F are reserved for future memory advices. */
/* cl_kernel_exec_info */
#define CL_KERNEL_EXEC_INFO_INDIRECT_HOST_ACCESS_INTEL 0x4200
#define CL_KERNEL_EXEC_INFO_INDIRECT_DEVICE_ACCESS_INTEL 0x4201
#define CL_KERNEL_EXEC_INFO_INDIRECT_SHARED_ACCESS_INTEL 0x4202
#define CL_KERNEL_EXEC_INFO_USM_PTRS_INTEL 0x4203
/* cl_command_type */
#define CL_COMMAND_MEMFILL_INTEL 0x4204
#define CL_COMMAND_MEMCPY_INTEL 0x4205
#define CL_COMMAND_MIGRATEMEM_INTEL 0x4206
#define CL_COMMAND_MEMADVISE_INTEL 0x4207
extern CL_API_ENTRY void* CL_API_CALL
clHostMemAllocINTEL(
cl_context context,
const cl_mem_properties_intel* properties,
size_t size,
cl_uint alignment,
cl_int* errcode_ret);
typedef CL_API_ENTRY void* (CL_API_CALL *
clHostMemAllocINTEL_fn)(
cl_context context,
const cl_mem_properties_intel* properties,
size_t size,
cl_uint alignment,
cl_int* errcode_ret);
extern CL_API_ENTRY void* CL_API_CALL
clDeviceMemAllocINTEL(
cl_context context,
cl_device_id device,
const cl_mem_properties_intel* properties,
size_t size,
cl_uint alignment,
cl_int* errcode_ret);
typedef CL_API_ENTRY void* (CL_API_CALL *
clDeviceMemAllocINTEL_fn)(
cl_context context,
cl_device_id device,
const cl_mem_properties_intel* properties,
size_t size,
cl_uint alignment,
cl_int* errcode_ret);
extern CL_API_ENTRY void* CL_API_CALL
clSharedMemAllocINTEL(
cl_context context,
cl_device_id device,
const cl_mem_properties_intel* properties,
size_t size,
cl_uint alignment,
cl_int* errcode_ret);
typedef CL_API_ENTRY void* (CL_API_CALL *
clSharedMemAllocINTEL_fn)(
cl_context context,
cl_device_id device,
const cl_mem_properties_intel* properties,
size_t size,
cl_uint alignment,
cl_int* errcode_ret);
extern CL_API_ENTRY cl_int CL_API_CALL
clMemFreeINTEL(
cl_context context,
void* ptr);
typedef CL_API_ENTRY cl_int (CL_API_CALL *
clMemFreeINTEL_fn)(
cl_context context,
void* ptr);
extern CL_API_ENTRY cl_int CL_API_CALL
clMemBlockingFreeINTEL(
cl_context context,
void* ptr);
typedef CL_API_ENTRY cl_int (CL_API_CALL *
clMemBlockingFreeINTEL_fn)(
cl_context context,
void* ptr);
extern CL_API_ENTRY cl_int CL_API_CALL
clGetMemAllocInfoINTEL(
cl_context context,
const void* ptr,
cl_mem_info_intel param_name,
size_t param_value_size,
void* param_value,
size_t* param_value_size_ret);
typedef CL_API_ENTRY cl_int (CL_API_CALL *
clGetMemAllocInfoINTEL_fn)(
cl_context context,
const void* ptr,
cl_mem_info_intel param_name,
size_t param_value_size,
void* param_value,
size_t* param_value_size_ret);
extern CL_API_ENTRY cl_int CL_API_CALL
clSetKernelArgMemPointerINTEL(
cl_kernel kernel,
cl_uint arg_index,
const void* arg_value);
typedef CL_API_ENTRY cl_int (CL_API_CALL *
clSetKernelArgMemPointerINTEL_fn)(
cl_kernel kernel,
cl_uint arg_index,
const void* arg_value);
extern CL_API_ENTRY cl_int CL_API_CALL
clEnqueueMemsetINTEL( /* Deprecated */
cl_command_queue command_queue,
void* dst_ptr,
cl_int value,
size_t size,
cl_uint num_events_in_wait_list,
const cl_event* event_wait_list,
cl_event* event);
typedef CL_API_ENTRY cl_int (CL_API_CALL *
clEnqueueMemsetINTEL_fn)( /* Deprecated */
cl_command_queue command_queue,
void* dst_ptr,
cl_int value,
size_t size,
cl_uint num_events_in_wait_list,
const cl_event* event_wait_list,
cl_event* event);
extern CL_API_ENTRY cl_int CL_API_CALL
clEnqueueMemFillINTEL(
cl_command_queue command_queue,
void* dst_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);
typedef CL_API_ENTRY cl_int (CL_API_CALL *
clEnqueueMemFillINTEL_fn)(
cl_command_queue command_queue,
void* dst_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);
extern CL_API_ENTRY cl_int CL_API_CALL
clEnqueueMemcpyINTEL(
cl_command_queue command_queue,
cl_bool blocking,
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);
typedef CL_API_ENTRY cl_int (CL_API_CALL *
clEnqueueMemcpyINTEL_fn)(
cl_command_queue command_queue,
cl_bool blocking,
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);
#ifdef CL_VERSION_1_2
/* Because these APIs use cl_mem_migration_flags, they require
OpenCL 1.2: */
extern CL_API_ENTRY cl_int CL_API_CALL
clEnqueueMigrateMemINTEL(
cl_command_queue command_queue,
const void* ptr,
size_t size,
cl_mem_migration_flags flags,
cl_uint num_events_in_wait_list,
const cl_event* event_wait_list,
cl_event* event);
typedef CL_API_ENTRY cl_int (CL_API_CALL *
clEnqueueMigrateMemINTEL_fn)(
cl_command_queue command_queue,
const void* ptr,
size_t size,
cl_mem_migration_flags flags,
cl_uint num_events_in_wait_list,
const cl_event* event_wait_list,
cl_event* event);
#endif
extern CL_API_ENTRY cl_int CL_API_CALL
clEnqueueMemAdviseINTEL(
cl_command_queue command_queue,
const void* ptr,
size_t size,
cl_mem_advice_intel advice,
cl_uint num_events_in_wait_list,
const cl_event* event_wait_list,
cl_event* event);
typedef CL_API_ENTRY cl_int (CL_API_CALL *
clEnqueueMemAdviseINTEL_fn)(
cl_command_queue command_queue,
const void* ptr,
size_t size,
cl_mem_advice_intel advice,
cl_uint num_events_in_wait_list,
const cl_event* event_wait_list,
cl_event* event);
/***************************************************
* cl_intel_create_buffer_with_properties extension *
****************************************************/
#define cl_intel_create_buffer_with_properties 1
extern CL_API_ENTRY cl_mem CL_API_CALL
clCreateBufferWithPropertiesINTEL(
cl_context context,
const cl_mem_properties_intel* properties,
cl_mem_flags flags,
size_t size,
void * host_ptr,
cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_0;
typedef CL_API_ENTRY cl_mem (CL_API_CALL *
clCreateBufferWithPropertiesINTEL_fn)(
cl_context context,
const cl_mem_properties_intel* properties,
cl_mem_flags flags,
size_t size,
void * host_ptr,
cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_0;
/******************************************
* cl_intel_mem_channel_property extension *
*******************************************/
#define CL_MEM_CHANNEL_INTEL 0x4213
/*********************************
* cl_intel_mem_force_host_memory *
**********************************/
#define cl_intel_mem_force_host_memory 1
/* cl_mem_flags */
#define CL_MEM_FORCE_HOST_MEMORY_INTEL (1 << 20)
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -1,29 +1,17 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2019 The Khronos Group Inc. * Copyright (c) 2019-2020 The Khronos Group Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Licensed under the Apache License, Version 2.0 (the "License");
* copy of this software and/or associated documentation files (the * you may not use this file except in compliance with the License.
* "Materials"), to deal in the Materials without restriction, including * You may obtain a copy of the License at
* 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 * http://www.apache.org/licenses/LICENSE-2.0
* in all copies or substantial portions of the Materials.
* *
* MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS * Unless required by applicable law or agreed to in writing, software
* KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS * distributed under the License is distributed on an "AS IS" BASIS,
* SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* https://www.khronos.org/registry/ * See the License for the specific language governing permissions and
* * limitations under the License.
* 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.
******************************************************************************/ ******************************************************************************/
#ifndef OPENCL_CL_ICD_H #ifndef OPENCL_CL_ICD_H
@ -34,6 +22,12 @@
#include <CL/cl_ext.h> #include <CL/cl_ext.h>
#include <CL/cl_gl.h> #include <CL/cl_gl.h>
#if defined(_WIN32)
#include <CL/cl_d3d11.h>
#include <CL/cl_d3d10.h>
#include <CL/cl_dx9_media_sharing.h>
#endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -157,6 +151,31 @@ typedef void *cl_api_clCreateImage;
#endif #endif
#ifdef CL_VERSION_3_0
typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateBufferWithProperties)(
cl_context context, const cl_mem_properties *properties, cl_mem_flags flags,
size_t size, void *host_ptr,
cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0;
typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImageWithProperties)(
cl_context context, const cl_mem_properties *properties, cl_mem_flags flags,
const cl_image_format *image_format, const cl_image_desc *image_desc,
void *host_ptr, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0;
typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetContextDestructorCallback)(
cl_context context,
void(CL_CALLBACK* pfn_notify)(cl_context context, void* user_data),
void* user_data) CL_API_SUFFIX__VERSION_3_0;
#else
typedef void *cl_api_clCreateBufferWithProperties;
typedef void *cl_api_clCreateImageWithProperties;
typedef void *cl_api_clSetContextDestructorCallback;
#endif
typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainMemObject)( typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainMemObject)(
cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; cl_mem memobj) CL_API_SUFFIX__VERSION_1_0;
@ -1260,6 +1279,12 @@ typedef struct _cl_icd_dispatch {
/* OpenCL 2.2 */ /* OpenCL 2.2 */
cl_api_clSetProgramReleaseCallback clSetProgramReleaseCallback; cl_api_clSetProgramReleaseCallback clSetProgramReleaseCallback;
cl_api_clSetProgramSpecializationConstant clSetProgramSpecializationConstant; cl_api_clSetProgramSpecializationConstant clSetProgramSpecializationConstant;
/* OpenCL 3.0 */
cl_api_clCreateBufferWithProperties clCreateBufferWithProperties;
cl_api_clCreateImageWithProperties clCreateImageWithProperties;
cl_api_clSetContextDestructorCallback clSetContextDestructorCallback;
} cl_icd_dispatch; } cl_icd_dispatch;
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -1,30 +1,18 @@
/********************************************************************************** /*******************************************************************************
* Copyright (c) 2008-2018 The Khronos Group Inc. * Copyright (c) 2008-2020 The Khronos Group Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Licensed under the Apache License, Version 2.0 (the "License");
* copy of this software and/or associated documentation files (the * you may not use this file except in compliance with the License.
* "Materials"), to deal in the Materials without restriction, including * You may obtain a copy of the License at
* 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 * http://www.apache.org/licenses/LICENSE-2.0
* in all copies or substantial portions of the Materials.
* *
* MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS * Unless required by applicable law or agreed to in writing, software
* KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS * distributed under the License is distributed on an "AS IS" BASIS,
* SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* https://www.khronos.org/registry/ * See the License for the specific language governing permissions and
* * limitations under the License.
* 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.
**********************************************************************************/
#ifndef __CL_PLATFORM_H #ifndef __CL_PLATFORM_H
#define __CL_PLATFORM_H #define __CL_PLATFORM_H
@ -66,6 +54,10 @@ extern "C" {
#define CL_EXT_SUFFIX__VERSION_2_1 #define CL_EXT_SUFFIX__VERSION_2_1
#define CL_API_SUFFIX__VERSION_2_2 #define CL_API_SUFFIX__VERSION_2_2
#define CL_EXT_SUFFIX__VERSION_2_2 #define CL_EXT_SUFFIX__VERSION_2_2
#define CL_API_SUFFIX__VERSION_3_0
#define CL_EXT_SUFFIX__VERSION_3_0
#define CL_API_SUFFIX__EXPERIMENTAL
#define CL_EXT_SUFFIX__EXPERIMENTAL
#ifdef __GNUC__ #ifdef __GNUC__
@ -119,6 +111,14 @@ extern "C" {
#define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED #define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED
#endif #endif
#ifdef CL_USE_DEPRECATED_OPENCL_2_2_APIS
#define CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_2_DEPRECATED
#else
#define CL_EXT_SUFFIX__VERSION_2_2_DEPRECATED CL_EXT_SUFFIX_DEPRECATED
#define CL_EXT_PREFIX__VERSION_2_2_DEPRECATED CL_EXT_PREFIX_DEPRECATED
#endif
#if (defined (_WIN32) && defined(_MSC_VER)) #if (defined (_WIN32) && defined(_MSC_VER))
/* scalar types */ /* scalar types */
@ -355,7 +355,9 @@ typedef unsigned int cl_GLenum;
/* Define basic vector types */ /* Define basic vector types */
#if defined( __VEC__ ) #if defined( __VEC__ )
#include <altivec.h> /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ #if !defined(__clang__)
#include <altivec.h> /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */
#endif
typedef __vector unsigned char __cl_uchar16; typedef __vector unsigned char __cl_uchar16;
typedef __vector signed char __cl_char16; typedef __vector signed char __cl_char16;
typedef __vector unsigned short __cl_ushort8; typedef __vector unsigned short __cl_ushort8;
@ -482,7 +484,7 @@ typedef unsigned int cl_GLenum;
#elif defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) #elif defined( __GNUC__) && ! defined( __STRICT_ANSI__ )
#define __CL_HAS_ANON_STRUCT__ 1 #define __CL_HAS_ANON_STRUCT__ 1
#define __CL_ANON_STRUCT__ __extension__ #define __CL_ANON_STRUCT__ __extension__
#elif defined( _WIN32) && defined(_MSC_VER) #elif defined( _WIN32) && defined(_MSC_VER) && ! defined(__STDC__)
#if _MSC_VER >= 1500 #if _MSC_VER >= 1500
/* Microsoft Developer Studio 2008 supports anonymous structs, but /* Microsoft Developer Studio 2008 supports anonymous structs, but
* complains by default. */ * complains by default. */
@ -1373,9 +1375,7 @@ typedef union
} }
#endif #endif
#undef __CL_HAS_ANON_STRUCT__ #if defined( _WIN32) && defined(_MSC_VER) && ! defined(__STDC__)
#undef __CL_ANON_STRUCT__
#if defined( _WIN32) && defined(_MSC_VER)
#if _MSC_VER >=1500 #if _MSC_VER >=1500
#pragma warning( pop ) #pragma warning( pop )
#endif #endif

View File

@ -1,29 +1,17 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2018 The Khronos Group Inc. * Copyright (c) 2018-2020 The Khronos Group Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Licensed under the Apache License, Version 2.0 (the "License");
* copy of this software and/or associated documentation files (the * you may not use this file except in compliance with the License.
* "Materials"), to deal in the Materials without restriction, including * You may obtain a copy of the License at
* 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 * http://www.apache.org/licenses/LICENSE-2.0
* in all copies or substantial portions of the Materials.
* *
* MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS * Unless required by applicable law or agreed to in writing, software
* KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS * distributed under the License is distributed on an "AS IS" BASIS,
* SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* https://www.khronos.org/registry/ * See the License for the specific language governing permissions and
* * limitations under the License.
* 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.
******************************************************************************/ ******************************************************************************/
#ifndef __CL_VERSION_H #ifndef __CL_VERSION_H
@ -39,14 +27,18 @@
CL_TARGET_OPENCL_VERSION != 120 && \ CL_TARGET_OPENCL_VERSION != 120 && \
CL_TARGET_OPENCL_VERSION != 200 && \ CL_TARGET_OPENCL_VERSION != 200 && \
CL_TARGET_OPENCL_VERSION != 210 && \ CL_TARGET_OPENCL_VERSION != 210 && \
CL_TARGET_OPENCL_VERSION != 220 CL_TARGET_OPENCL_VERSION != 220 && \
#pragma message("cl_version: CL_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220). Defaulting to 220 (OpenCL 2.2)") CL_TARGET_OPENCL_VERSION != 300
#pragma message("cl_version: CL_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220, 300). Defaulting to 220 (OpenCL 2.2)")
#undef CL_TARGET_OPENCL_VERSION #undef CL_TARGET_OPENCL_VERSION
#define CL_TARGET_OPENCL_VERSION 220 #define CL_TARGET_OPENCL_VERSION 220
#endif #endif
/* OpenCL Version */ /* OpenCL Version */
#if CL_TARGET_OPENCL_VERSION >= 300 && !defined(CL_VERSION_3_0)
#define CL_VERSION_3_0 1
#endif
#if CL_TARGET_OPENCL_VERSION >= 220 && !defined(CL_VERSION_2_2) #if CL_TARGET_OPENCL_VERSION >= 220 && !defined(CL_VERSION_2_2)
#define CL_VERSION_2_2 1 #define CL_VERSION_2_2 1
#endif #endif
@ -67,6 +59,9 @@
#endif #endif
/* Allow deprecated APIs for older OpenCL versions. */ /* Allow deprecated APIs for older OpenCL versions. */
#if CL_TARGET_OPENCL_VERSION <= 220 && !defined(CL_USE_DEPRECATED_OPENCL_2_2_APIS)
#define CL_USE_DEPRECATED_OPENCL_2_2_APIS
#endif
#if CL_TARGET_OPENCL_VERSION <= 210 && !defined(CL_USE_DEPRECATED_OPENCL_2_1_APIS) #if CL_TARGET_OPENCL_VERSION <= 210 && !defined(CL_USE_DEPRECATED_OPENCL_2_1_APIS)
#define CL_USE_DEPRECATED_OPENCL_2_1_APIS #define CL_USE_DEPRECATED_OPENCL_2_1_APIS
#endif #endif

View File

@ -242,7 +242,7 @@ clCreateImage2D(cl_context d_ctx, cl_mem_flags d_flags,
size_t width, size_t height, size_t row_pitch, size_t width, size_t height, size_t row_pitch,
void *host_ptr, cl_int *r_errcode) { void *host_ptr, cl_int *r_errcode) {
const cl_image_desc desc = { CL_MEM_OBJECT_IMAGE2D, width, height, 0, 0, const cl_image_desc desc = { CL_MEM_OBJECT_IMAGE2D, width, height, 0, 0,
row_pitch, 0, 0, 0, { NULL } }; row_pitch, 0, 0, 0, NULL };
return clCreateImage(d_ctx, d_flags, format, &desc, host_ptr, r_errcode); return clCreateImage(d_ctx, d_flags, format, &desc, host_ptr, r_errcode);
} }
@ -254,7 +254,7 @@ clCreateImage3D(cl_context d_ctx, cl_mem_flags d_flags,
size_t row_pitch, size_t slice_pitch, size_t row_pitch, size_t slice_pitch,
void *host_ptr, cl_int *r_errcode) { void *host_ptr, cl_int *r_errcode) {
const cl_image_desc desc = { CL_MEM_OBJECT_IMAGE3D, width, height, depth, 0, const cl_image_desc desc = { CL_MEM_OBJECT_IMAGE3D, width, height, depth, 0,
row_pitch, slice_pitch, 0, 0, { NULL } }; row_pitch, slice_pitch, 0, 0, NULL };
return clCreateImage(d_ctx, d_flags, format, &desc, host_ptr, r_errcode); return clCreateImage(d_ctx, d_flags, format, &desc, host_ptr, r_errcode);
} }