Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/3rdparty/include/opencl/1.2/CL/cl_ext.h
16348 views
1
/*******************************************************************************
2
* Copyright (c) 2008-2013 The Khronos Group Inc.
3
*
4
* Permission is hereby granted, free of charge, to any person obtaining a
5
* copy of this software and/or associated documentation files (the
6
* "Materials"), to deal in the Materials without restriction, including
7
* without limitation the rights to use, copy, modify, merge, publish,
8
* distribute, sublicense, and/or sell copies of the Materials, and to
9
* permit persons to whom the Materials are furnished to do so, subject to
10
* the following conditions:
11
*
12
* The above copyright notice and this permission notice shall be included
13
* in all copies or substantial portions of the Materials.
14
*
15
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21
* MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
22
******************************************************************************/
23
24
/* $Revision: 11928 $ on $Date: 2010-07-13 09:04:56 -0700 (Tue, 13 Jul 2010) $ */
25
26
/* cl_ext.h contains OpenCL extensions which don't have external */
27
/* (OpenGL, D3D) dependencies. */
28
29
#ifndef __CL_EXT_H
30
#define __CL_EXT_H
31
32
#ifdef __cplusplus
33
extern "C" {
34
#endif
35
36
#ifdef __APPLE__
37
#include <OpenCL/cl.h>
38
#include <AvailabilityMacros.h>
39
#else
40
#include <CL/cl.h>
41
#endif
42
43
/* cl_khr_fp16 extension - no extension #define since it has no functions */
44
#define CL_DEVICE_HALF_FP_CONFIG 0x1033
45
46
/* Memory object destruction
47
*
48
* Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR
49
*
50
* Registers a user callback function that will be called when the memory object is deleted and its resources
51
* freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback
52
* stack associated with memobj. The registered user callback functions are called in the reverse order in
53
* which they were registered. The user callback functions are called and then the memory object is deleted
54
* and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be
55
* notified when the memory referenced by host_ptr, specified when the memory object is created and used as
56
* the storage bits for the memory object, can be reused or freed.
57
*
58
* The application may not call CL api's with the cl_mem object passed to the pfn_notify.
59
*
60
* Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS)
61
* before using.
62
*/
63
#define cl_APPLE_SetMemObjectDestructor 1
64
cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem /* memobj */,
65
void (* /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/),
66
void * /*user_data */ ) CL_EXT_SUFFIX__VERSION_1_0;
67
68
69
/* Context Logging Functions
70
*
71
* The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext().
72
* Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS)
73
* before using.
74
*
75
* clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger
76
*/
77
#define cl_APPLE_ContextLoggingFunctions 1
78
extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * /* errstr */,
79
const void * /* private_info */,
80
size_t /* cb */,
81
void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0;
82
83
/* clLogMessagesToStdout sends all log messages to the file descriptor stdout */
84
extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * /* errstr */,
85
const void * /* private_info */,
86
size_t /* cb */,
87
void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0;
88
89
/* clLogMessagesToStderr sends all log messages to the file descriptor stderr */
90
extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * /* errstr */,
91
const void * /* private_info */,
92
size_t /* cb */,
93
void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0;
94
95
96
/************************
97
* cl_khr_icd extension *
98
************************/
99
#define cl_khr_icd 1
100
101
/* cl_platform_info */
102
#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920
103
104
/* Additional Error Codes */
105
#define CL_PLATFORM_NOT_FOUND_KHR -1001
106
107
extern CL_API_ENTRY cl_int CL_API_CALL
108
clIcdGetPlatformIDsKHR(cl_uint /* num_entries */,
109
cl_platform_id * /* platforms */,
110
cl_uint * /* num_platforms */);
111
112
typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)(
113
cl_uint /* num_entries */,
114
cl_platform_id * /* platforms */,
115
cl_uint * /* num_platforms */);
116
117
118
/* Extension: cl_khr_image2D_buffer
119
*
120
* This extension allows a 2D image to be created from a cl_mem buffer without a copy.
121
* The type associated with a 2D image created from a buffer in an OpenCL program is image2d_t.
122
* Both the sampler and sampler-less read_image built-in functions are supported for 2D images
123
* and 2D images created from a buffer. Similarly, the write_image built-ins are also supported
124
* for 2D images created from a buffer.
125
*
126
* When the 2D image from buffer is created, the client must specify the width,
127
* height, image format (i.e. channel order and channel data type) and optionally the row pitch
128
*
129
* The pitch specified must be a multiple of CL_DEVICE_IMAGE_PITCH_ALIGNMENT pixels.
130
* The base address of the buffer must be aligned to CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT pixels.
131
*/
132
133
/*************************************
134
* cl_khr_initalize_memory extension *
135
*************************************/
136
137
#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x200E
138
139
140
/**************************************
141
* cl_khr_terminate_context extension *
142
**************************************/
143
144
#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x200F
145
#define CL_CONTEXT_TERMINATE_KHR 0x2010
146
147
#define cl_khr_terminate_context 1
148
extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2;
149
150
typedef CL_API_ENTRY cl_int (CL_API_CALL *clTerminateContextKHR_fn)(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2;
151
152
153
/*
154
* Extension: cl_khr_spir
155
*
156
* This extension adds support to create an OpenCL program object from a
157
* Standard Portable Intermediate Representation (SPIR) instance
158
*/
159
160
/******************************************
161
* cl_nv_device_attribute_query extension *
162
******************************************/
163
/* cl_nv_device_attribute_query extension - no extension #define since it has no functions */
164
#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000
165
#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001
166
#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002
167
#define CL_DEVICE_WARP_SIZE_NV 0x4003
168
#define CL_DEVICE_GPU_OVERLAP_NV 0x4004
169
#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005
170
#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006
171
172
/*********************************
173
* cl_amd_device_attribute_query *
174
*********************************/
175
#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036
176
177
#ifdef CL_VERSION_1_1
178
/***********************************
179
* cl_ext_device_fission extension *
180
***********************************/
181
#define cl_ext_device_fission 1
182
183
extern CL_API_ENTRY cl_int CL_API_CALL
184
clReleaseDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1;
185
186
typedef CL_API_ENTRY cl_int
187
(CL_API_CALL *clReleaseDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1;
188
189
extern CL_API_ENTRY cl_int CL_API_CALL
190
clRetainDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1;
191
192
typedef CL_API_ENTRY cl_int
193
(CL_API_CALL *clRetainDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1;
194
195
typedef cl_ulong cl_device_partition_property_ext;
196
extern CL_API_ENTRY cl_int CL_API_CALL
197
clCreateSubDevicesEXT( cl_device_id /*in_device*/,
198
const cl_device_partition_property_ext * /* properties */,
199
cl_uint /*num_entries*/,
200
cl_device_id * /*out_devices*/,
201
cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1;
202
203
typedef CL_API_ENTRY cl_int
204
( CL_API_CALL * clCreateSubDevicesEXT_fn)( cl_device_id /*in_device*/,
205
const cl_device_partition_property_ext * /* properties */,
206
cl_uint /*num_entries*/,
207
cl_device_id * /*out_devices*/,
208
cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1;
209
210
/* cl_device_partition_property_ext */
211
#define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050
212
#define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051
213
#define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052
214
#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053
215
216
/* clDeviceGetInfo selectors */
217
#define CL_DEVICE_PARENT_DEVICE_EXT 0x4054
218
#define CL_DEVICE_PARTITION_TYPES_EXT 0x4055
219
#define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056
220
#define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057
221
#define CL_DEVICE_PARTITION_STYLE_EXT 0x4058
222
223
/* error codes */
224
#define CL_DEVICE_PARTITION_FAILED_EXT -1057
225
#define CL_INVALID_PARTITION_COUNT_EXT -1058
226
#define CL_INVALID_PARTITION_NAME_EXT -1059
227
228
/* CL_AFFINITY_DOMAINs */
229
#define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1
230
#define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2
231
#define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3
232
#define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4
233
#define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10
234
#define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100
235
236
/* cl_device_partition_property_ext list terminators */
237
#define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0)
238
#define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0)
239
#define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1)
240
241
/*********************************
242
* cl_qcom_ext_host_ptr extension
243
*********************************/
244
245
#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29)
246
247
#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0
248
#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1
249
#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2
250
#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3
251
#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4
252
#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5
253
#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6
254
#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7
255
256
typedef cl_uint cl_image_pitch_info_qcom;
257
258
extern CL_API_ENTRY cl_int CL_API_CALL
259
clGetDeviceImageInfoQCOM(cl_device_id device,
260
size_t image_width,
261
size_t image_height,
262
const cl_image_format *image_format,
263
cl_image_pitch_info_qcom param_name,
264
size_t param_value_size,
265
void *param_value,
266
size_t *param_value_size_ret);
267
268
typedef struct _cl_mem_ext_host_ptr
269
{
270
// Type of external memory allocation.
271
// Legal values will be defined in layered extensions.
272
cl_uint allocation_type;
273
274
// Host cache policy for this external memory allocation.
275
cl_uint host_cache_policy;
276
277
} cl_mem_ext_host_ptr;
278
279
/*********************************
280
* cl_qcom_ion_host_ptr extension
281
*********************************/
282
283
#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8
284
285
typedef struct _cl_mem_ion_host_ptr
286
{
287
// Type of external memory allocation.
288
// Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations.
289
cl_mem_ext_host_ptr ext_host_ptr;
290
291
// ION file descriptor
292
int ion_filedesc;
293
294
// Host pointer to the ION allocated memory
295
void* ion_hostptr;
296
297
} cl_mem_ion_host_ptr;
298
299
#endif /* CL_VERSION_1_1 */
300
301
#ifdef __cplusplus
302
}
303
#endif
304
305
306
#endif /* __CL_EXT_H */
307
308