xref: /aosp_15_r20/external/angle/src/libGLESv2/cl_stubs.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2021 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker // cl_stubs.cpp: Stubs for CL entry points.
7*8975f5c5SAndroid Build Coastguard Worker 
8*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/cl_utils.h"
9*8975f5c5SAndroid Build Coastguard Worker #include "libGLESv2/cl_stubs_autogen.h"
10*8975f5c5SAndroid Build Coastguard Worker 
11*8975f5c5SAndroid Build Coastguard Worker #include "libGLESv2/proc_table_cl.h"
12*8975f5c5SAndroid Build Coastguard Worker 
13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLBuffer.h"
14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLCommandQueue.h"
15*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLContext.h"
16*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLDevice.h"
17*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLEvent.h"
18*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLImage.h"
19*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLKernel.h"
20*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLMemory.h"
21*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLPlatform.h"
22*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLProgram.h"
23*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLSampler.h"
24*8975f5c5SAndroid Build Coastguard Worker 
25*8975f5c5SAndroid Build Coastguard Worker #define WARN_NOT_SUPPORTED(command)                                         \
26*8975f5c5SAndroid Build Coastguard Worker     do                                                                      \
27*8975f5c5SAndroid Build Coastguard Worker     {                                                                       \
28*8975f5c5SAndroid Build Coastguard Worker         static bool sWarned = false;                                        \
29*8975f5c5SAndroid Build Coastguard Worker         if (!sWarned)                                                       \
30*8975f5c5SAndroid Build Coastguard Worker         {                                                                   \
31*8975f5c5SAndroid Build Coastguard Worker             sWarned = true;                                                 \
32*8975f5c5SAndroid Build Coastguard Worker             WARN() << "OpenCL command " #command " is not (yet) supported"; \
33*8975f5c5SAndroid Build Coastguard Worker         }                                                                   \
34*8975f5c5SAndroid Build Coastguard Worker     } while (0)
35*8975f5c5SAndroid Build Coastguard Worker 
36*8975f5c5SAndroid Build Coastguard Worker #define CL_RETURN_ERROR(command)                                    \
37*8975f5c5SAndroid Build Coastguard Worker     do                                                              \
38*8975f5c5SAndroid Build Coastguard Worker     {                                                               \
39*8975f5c5SAndroid Build Coastguard Worker         if (IsError(command))                                       \
40*8975f5c5SAndroid Build Coastguard Worker         {                                                           \
41*8975f5c5SAndroid Build Coastguard Worker             ERR() << "failed with error code: " << cl::gClErrorTls; \
42*8975f5c5SAndroid Build Coastguard Worker         }                                                           \
43*8975f5c5SAndroid Build Coastguard Worker         return cl::gClErrorTls;                                     \
44*8975f5c5SAndroid Build Coastguard Worker     } while (0)
45*8975f5c5SAndroid Build Coastguard Worker 
46*8975f5c5SAndroid Build Coastguard Worker #define CL_RETURN_OBJ(command)                                      \
47*8975f5c5SAndroid Build Coastguard Worker     do                                                              \
48*8975f5c5SAndroid Build Coastguard Worker     {                                                               \
49*8975f5c5SAndroid Build Coastguard Worker         auto obj = command;                                         \
50*8975f5c5SAndroid Build Coastguard Worker         if (cl::gClErrorTls != CL_SUCCESS)                          \
51*8975f5c5SAndroid Build Coastguard Worker         {                                                           \
52*8975f5c5SAndroid Build Coastguard Worker             ERR() << "failed with error code: " << cl::gClErrorTls; \
53*8975f5c5SAndroid Build Coastguard Worker             return nullptr;                                         \
54*8975f5c5SAndroid Build Coastguard Worker         }                                                           \
55*8975f5c5SAndroid Build Coastguard Worker         return obj;                                                 \
56*8975f5c5SAndroid Build Coastguard Worker     } while (0)
57*8975f5c5SAndroid Build Coastguard Worker 
58*8975f5c5SAndroid Build Coastguard Worker #define CL_RETURN_PTR(ptrOut, command)                              \
59*8975f5c5SAndroid Build Coastguard Worker     do                                                              \
60*8975f5c5SAndroid Build Coastguard Worker     {                                                               \
61*8975f5c5SAndroid Build Coastguard Worker         void *ptrOut = nullptr;                                     \
62*8975f5c5SAndroid Build Coastguard Worker         if (IsError(command))                                       \
63*8975f5c5SAndroid Build Coastguard Worker         {                                                           \
64*8975f5c5SAndroid Build Coastguard Worker             ERR() << "failed with error code: " << cl::gClErrorTls; \
65*8975f5c5SAndroid Build Coastguard Worker             return nullptr;                                         \
66*8975f5c5SAndroid Build Coastguard Worker         }                                                           \
67*8975f5c5SAndroid Build Coastguard Worker         return ptrOut;                                              \
68*8975f5c5SAndroid Build Coastguard Worker     } while (0)
69*8975f5c5SAndroid Build Coastguard Worker 
70*8975f5c5SAndroid Build Coastguard Worker namespace cl
71*8975f5c5SAndroid Build Coastguard Worker {
72*8975f5c5SAndroid Build Coastguard Worker 
IcdGetPlatformIDsKHR(cl_uint num_entries,cl_platform_id * platforms,cl_uint * num_platforms)73*8975f5c5SAndroid Build Coastguard Worker cl_int IcdGetPlatformIDsKHR(cl_uint num_entries, cl_platform_id *platforms, cl_uint *num_platforms)
74*8975f5c5SAndroid Build Coastguard Worker {
75*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR((Platform::GetPlatformIDs(num_entries, platforms, num_platforms)));
76*8975f5c5SAndroid Build Coastguard Worker }
77*8975f5c5SAndroid Build Coastguard Worker 
GetPlatformIDs(cl_uint num_entries,cl_platform_id * platforms,cl_uint * num_platforms)78*8975f5c5SAndroid Build Coastguard Worker cl_int GetPlatformIDs(cl_uint num_entries, cl_platform_id *platforms, cl_uint *num_platforms)
79*8975f5c5SAndroid Build Coastguard Worker {
80*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(Platform::GetPlatformIDs(num_entries, platforms, num_platforms));
81*8975f5c5SAndroid Build Coastguard Worker }
82*8975f5c5SAndroid Build Coastguard Worker 
GetPlatformInfo(cl_platform_id platform,PlatformInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)83*8975f5c5SAndroid Build Coastguard Worker cl_int GetPlatformInfo(cl_platform_id platform,
84*8975f5c5SAndroid Build Coastguard Worker                        PlatformInfo param_name,
85*8975f5c5SAndroid Build Coastguard Worker                        size_t param_value_size,
86*8975f5c5SAndroid Build Coastguard Worker                        void *param_value,
87*8975f5c5SAndroid Build Coastguard Worker                        size_t *param_value_size_ret)
88*8975f5c5SAndroid Build Coastguard Worker {
89*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(Platform::CastOrDefault(platform)->getInfo(param_name, param_value_size,
90*8975f5c5SAndroid Build Coastguard Worker                                                                param_value, param_value_size_ret));
91*8975f5c5SAndroid Build Coastguard Worker }
92*8975f5c5SAndroid Build Coastguard Worker 
GetDeviceIDs(cl_platform_id platform,DeviceType device_type,cl_uint num_entries,cl_device_id * devices,cl_uint * num_devices)93*8975f5c5SAndroid Build Coastguard Worker cl_int GetDeviceIDs(cl_platform_id platform,
94*8975f5c5SAndroid Build Coastguard Worker                     DeviceType device_type,
95*8975f5c5SAndroid Build Coastguard Worker                     cl_uint num_entries,
96*8975f5c5SAndroid Build Coastguard Worker                     cl_device_id *devices,
97*8975f5c5SAndroid Build Coastguard Worker                     cl_uint *num_devices)
98*8975f5c5SAndroid Build Coastguard Worker {
99*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(Platform::CastOrDefault(platform)->getDeviceIDs(device_type, num_entries,
100*8975f5c5SAndroid Build Coastguard Worker                                                                     devices, num_devices));
101*8975f5c5SAndroid Build Coastguard Worker }
102*8975f5c5SAndroid Build Coastguard Worker 
GetDeviceInfo(cl_device_id device,DeviceInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)103*8975f5c5SAndroid Build Coastguard Worker cl_int GetDeviceInfo(cl_device_id device,
104*8975f5c5SAndroid Build Coastguard Worker                      DeviceInfo param_name,
105*8975f5c5SAndroid Build Coastguard Worker                      size_t param_value_size,
106*8975f5c5SAndroid Build Coastguard Worker                      void *param_value,
107*8975f5c5SAndroid Build Coastguard Worker                      size_t *param_value_size_ret)
108*8975f5c5SAndroid Build Coastguard Worker {
109*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(device->cast<Device>().getInfo(param_name, param_value_size, param_value,
110*8975f5c5SAndroid Build Coastguard Worker                                                    param_value_size_ret));
111*8975f5c5SAndroid Build Coastguard Worker }
112*8975f5c5SAndroid Build Coastguard Worker 
CreateSubDevices(cl_device_id in_device,const cl_device_partition_property * properties,cl_uint num_devices,cl_device_id * out_devices,cl_uint * num_devices_ret)113*8975f5c5SAndroid Build Coastguard Worker cl_int CreateSubDevices(cl_device_id in_device,
114*8975f5c5SAndroid Build Coastguard Worker                         const cl_device_partition_property *properties,
115*8975f5c5SAndroid Build Coastguard Worker                         cl_uint num_devices,
116*8975f5c5SAndroid Build Coastguard Worker                         cl_device_id *out_devices,
117*8975f5c5SAndroid Build Coastguard Worker                         cl_uint *num_devices_ret)
118*8975f5c5SAndroid Build Coastguard Worker {
119*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(in_device->cast<Device>().createSubDevices(properties, num_devices, out_devices,
120*8975f5c5SAndroid Build Coastguard Worker                                                                num_devices_ret));
121*8975f5c5SAndroid Build Coastguard Worker }
122*8975f5c5SAndroid Build Coastguard Worker 
RetainDevice(cl_device_id device)123*8975f5c5SAndroid Build Coastguard Worker cl_int RetainDevice(cl_device_id device)
124*8975f5c5SAndroid Build Coastguard Worker {
125*8975f5c5SAndroid Build Coastguard Worker     Device &dev = device->cast<Device>();
126*8975f5c5SAndroid Build Coastguard Worker     if (!dev.isRoot())
127*8975f5c5SAndroid Build Coastguard Worker     {
128*8975f5c5SAndroid Build Coastguard Worker         dev.retain();
129*8975f5c5SAndroid Build Coastguard Worker     }
130*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
131*8975f5c5SAndroid Build Coastguard Worker }
132*8975f5c5SAndroid Build Coastguard Worker 
ReleaseDevice(cl_device_id device)133*8975f5c5SAndroid Build Coastguard Worker cl_int ReleaseDevice(cl_device_id device)
134*8975f5c5SAndroid Build Coastguard Worker {
135*8975f5c5SAndroid Build Coastguard Worker     Device &dev = device->cast<Device>();
136*8975f5c5SAndroid Build Coastguard Worker     if (!dev.isRoot() && dev.release())
137*8975f5c5SAndroid Build Coastguard Worker     {
138*8975f5c5SAndroid Build Coastguard Worker         delete &dev;
139*8975f5c5SAndroid Build Coastguard Worker     }
140*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
141*8975f5c5SAndroid Build Coastguard Worker }
142*8975f5c5SAndroid Build Coastguard Worker 
SetDefaultDeviceCommandQueue(cl_context context,cl_device_id device,cl_command_queue command_queue)143*8975f5c5SAndroid Build Coastguard Worker cl_int SetDefaultDeviceCommandQueue(cl_context context,
144*8975f5c5SAndroid Build Coastguard Worker                                     cl_device_id device,
145*8975f5c5SAndroid Build Coastguard Worker                                     cl_command_queue command_queue)
146*8975f5c5SAndroid Build Coastguard Worker {
147*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(SetDefaultDeviceCommandQueue);
148*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
149*8975f5c5SAndroid Build Coastguard Worker }
150*8975f5c5SAndroid Build Coastguard Worker 
GetDeviceAndHostTimer(cl_device_id device,cl_ulong * device_timestamp,cl_ulong * host_timestamp)151*8975f5c5SAndroid Build Coastguard Worker cl_int GetDeviceAndHostTimer(cl_device_id device,
152*8975f5c5SAndroid Build Coastguard Worker                              cl_ulong *device_timestamp,
153*8975f5c5SAndroid Build Coastguard Worker                              cl_ulong *host_timestamp)
154*8975f5c5SAndroid Build Coastguard Worker {
155*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(GetDeviceAndHostTimer);
156*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
157*8975f5c5SAndroid Build Coastguard Worker }
158*8975f5c5SAndroid Build Coastguard Worker 
GetHostTimer(cl_device_id device,cl_ulong * host_timestamp)159*8975f5c5SAndroid Build Coastguard Worker cl_int GetHostTimer(cl_device_id device, cl_ulong *host_timestamp)
160*8975f5c5SAndroid Build Coastguard Worker {
161*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(GetHostTimer);
162*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
163*8975f5c5SAndroid Build Coastguard Worker }
164*8975f5c5SAndroid Build Coastguard Worker 
CreateContext(const cl_context_properties * properties,cl_uint num_devices,const cl_device_id * devices,void (CL_CALLBACK * pfn_notify)(const char * errinfo,const void * private_info,size_t cb,void * user_data),void * user_data)165*8975f5c5SAndroid Build Coastguard Worker cl_context CreateContext(const cl_context_properties *properties,
166*8975f5c5SAndroid Build Coastguard Worker                          cl_uint num_devices,
167*8975f5c5SAndroid Build Coastguard Worker                          const cl_device_id *devices,
168*8975f5c5SAndroid Build Coastguard Worker                          void(CL_CALLBACK *pfn_notify)(const char *errinfo,
169*8975f5c5SAndroid Build Coastguard Worker                                                        const void *private_info,
170*8975f5c5SAndroid Build Coastguard Worker                                                        size_t cb,
171*8975f5c5SAndroid Build Coastguard Worker                                                        void *user_data),
172*8975f5c5SAndroid Build Coastguard Worker                          void *user_data)
173*8975f5c5SAndroid Build Coastguard Worker {
174*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(Platform::CreateContext(properties, num_devices, devices, pfn_notify, user_data));
175*8975f5c5SAndroid Build Coastguard Worker }
176*8975f5c5SAndroid Build Coastguard Worker 
CreateContextFromType(const cl_context_properties * properties,DeviceType device_type,void (CL_CALLBACK * pfn_notify)(const char * errinfo,const void * private_info,size_t cb,void * user_data),void * user_data)177*8975f5c5SAndroid Build Coastguard Worker cl_context CreateContextFromType(const cl_context_properties *properties,
178*8975f5c5SAndroid Build Coastguard Worker                                  DeviceType device_type,
179*8975f5c5SAndroid Build Coastguard Worker                                  void(CL_CALLBACK *pfn_notify)(const char *errinfo,
180*8975f5c5SAndroid Build Coastguard Worker                                                                const void *private_info,
181*8975f5c5SAndroid Build Coastguard Worker                                                                size_t cb,
182*8975f5c5SAndroid Build Coastguard Worker                                                                void *user_data),
183*8975f5c5SAndroid Build Coastguard Worker                                  void *user_data)
184*8975f5c5SAndroid Build Coastguard Worker {
185*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(Platform::CreateContextFromType(properties, device_type, pfn_notify, user_data));
186*8975f5c5SAndroid Build Coastguard Worker }
187*8975f5c5SAndroid Build Coastguard Worker 
RetainContext(cl_context context)188*8975f5c5SAndroid Build Coastguard Worker cl_int RetainContext(cl_context context)
189*8975f5c5SAndroid Build Coastguard Worker {
190*8975f5c5SAndroid Build Coastguard Worker     context->cast<Context>().retain();
191*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
192*8975f5c5SAndroid Build Coastguard Worker }
193*8975f5c5SAndroid Build Coastguard Worker 
ReleaseContext(cl_context context)194*8975f5c5SAndroid Build Coastguard Worker cl_int ReleaseContext(cl_context context)
195*8975f5c5SAndroid Build Coastguard Worker {
196*8975f5c5SAndroid Build Coastguard Worker     Context &ctx = context->cast<Context>();
197*8975f5c5SAndroid Build Coastguard Worker     if (ctx.release())
198*8975f5c5SAndroid Build Coastguard Worker     {
199*8975f5c5SAndroid Build Coastguard Worker         delete &ctx;
200*8975f5c5SAndroid Build Coastguard Worker     }
201*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
202*8975f5c5SAndroid Build Coastguard Worker }
203*8975f5c5SAndroid Build Coastguard Worker 
GetContextInfo(cl_context context,ContextInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)204*8975f5c5SAndroid Build Coastguard Worker cl_int GetContextInfo(cl_context context,
205*8975f5c5SAndroid Build Coastguard Worker                       ContextInfo param_name,
206*8975f5c5SAndroid Build Coastguard Worker                       size_t param_value_size,
207*8975f5c5SAndroid Build Coastguard Worker                       void *param_value,
208*8975f5c5SAndroid Build Coastguard Worker                       size_t *param_value_size_ret)
209*8975f5c5SAndroid Build Coastguard Worker {
210*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(context->cast<Context>().getInfo(param_name, param_value_size, param_value,
211*8975f5c5SAndroid Build Coastguard Worker                                                      param_value_size_ret));
212*8975f5c5SAndroid Build Coastguard Worker }
213*8975f5c5SAndroid Build Coastguard Worker 
SetContextDestructorCallback(cl_context context,void (CL_CALLBACK * pfn_notify)(cl_context context,void * user_data),void * user_data)214*8975f5c5SAndroid Build Coastguard Worker cl_int SetContextDestructorCallback(cl_context context,
215*8975f5c5SAndroid Build Coastguard Worker                                     void(CL_CALLBACK *pfn_notify)(cl_context context,
216*8975f5c5SAndroid Build Coastguard Worker                                                                   void *user_data),
217*8975f5c5SAndroid Build Coastguard Worker                                     void *user_data)
218*8975f5c5SAndroid Build Coastguard Worker {
219*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(SetContextDestructorCallback);
220*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
221*8975f5c5SAndroid Build Coastguard Worker }
222*8975f5c5SAndroid Build Coastguard Worker 
CreateCommandQueueWithProperties(cl_context context,cl_device_id device,const cl_queue_properties * properties)223*8975f5c5SAndroid Build Coastguard Worker cl_command_queue CreateCommandQueueWithProperties(cl_context context,
224*8975f5c5SAndroid Build Coastguard Worker                                                   cl_device_id device,
225*8975f5c5SAndroid Build Coastguard Worker                                                   const cl_queue_properties *properties)
226*8975f5c5SAndroid Build Coastguard Worker {
227*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createCommandQueueWithProperties(device, properties));
228*8975f5c5SAndroid Build Coastguard Worker }
229*8975f5c5SAndroid Build Coastguard Worker 
RetainCommandQueue(cl_command_queue command_queue)230*8975f5c5SAndroid Build Coastguard Worker cl_int RetainCommandQueue(cl_command_queue command_queue)
231*8975f5c5SAndroid Build Coastguard Worker {
232*8975f5c5SAndroid Build Coastguard Worker     command_queue->cast<CommandQueue>().retain();
233*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
234*8975f5c5SAndroid Build Coastguard Worker }
235*8975f5c5SAndroid Build Coastguard Worker 
ReleaseCommandQueue(cl_command_queue command_queue)236*8975f5c5SAndroid Build Coastguard Worker cl_int ReleaseCommandQueue(cl_command_queue command_queue)
237*8975f5c5SAndroid Build Coastguard Worker {
238*8975f5c5SAndroid Build Coastguard Worker     CommandQueue &queue = command_queue->cast<CommandQueue>();
239*8975f5c5SAndroid Build Coastguard Worker     const cl_int err    = queue.onRelease();
240*8975f5c5SAndroid Build Coastguard Worker     if (queue.release())
241*8975f5c5SAndroid Build Coastguard Worker     {
242*8975f5c5SAndroid Build Coastguard Worker         delete &queue;
243*8975f5c5SAndroid Build Coastguard Worker     }
244*8975f5c5SAndroid Build Coastguard Worker     return err;
245*8975f5c5SAndroid Build Coastguard Worker }
246*8975f5c5SAndroid Build Coastguard Worker 
GetCommandQueueInfo(cl_command_queue command_queue,CommandQueueInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)247*8975f5c5SAndroid Build Coastguard Worker cl_int GetCommandQueueInfo(cl_command_queue command_queue,
248*8975f5c5SAndroid Build Coastguard Worker                            CommandQueueInfo param_name,
249*8975f5c5SAndroid Build Coastguard Worker                            size_t param_value_size,
250*8975f5c5SAndroid Build Coastguard Worker                            void *param_value,
251*8975f5c5SAndroid Build Coastguard Worker                            size_t *param_value_size_ret)
252*8975f5c5SAndroid Build Coastguard Worker {
253*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().getInfo(param_name, param_value_size,
254*8975f5c5SAndroid Build Coastguard Worker                                                                 param_value, param_value_size_ret));
255*8975f5c5SAndroid Build Coastguard Worker }
256*8975f5c5SAndroid Build Coastguard Worker 
CreateBuffer(cl_context context,MemFlags flags,size_t size,void * host_ptr)257*8975f5c5SAndroid Build Coastguard Worker cl_mem CreateBuffer(cl_context context, MemFlags flags, size_t size, void *host_ptr)
258*8975f5c5SAndroid Build Coastguard Worker {
259*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createBuffer(nullptr, flags, size, host_ptr));
260*8975f5c5SAndroid Build Coastguard Worker }
261*8975f5c5SAndroid Build Coastguard Worker 
CreateBufferWithProperties(cl_context context,const cl_mem_properties * properties,MemFlags flags,size_t size,void * host_ptr)262*8975f5c5SAndroid Build Coastguard Worker cl_mem CreateBufferWithProperties(cl_context context,
263*8975f5c5SAndroid Build Coastguard Worker                                   const cl_mem_properties *properties,
264*8975f5c5SAndroid Build Coastguard Worker                                   MemFlags flags,
265*8975f5c5SAndroid Build Coastguard Worker                                   size_t size,
266*8975f5c5SAndroid Build Coastguard Worker                                   void *host_ptr)
267*8975f5c5SAndroid Build Coastguard Worker {
268*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createBuffer(properties, flags, size, host_ptr));
269*8975f5c5SAndroid Build Coastguard Worker }
270*8975f5c5SAndroid Build Coastguard Worker 
CreateSubBuffer(cl_mem buffer,MemFlags flags,cl_buffer_create_type buffer_create_type,const void * buffer_create_info)271*8975f5c5SAndroid Build Coastguard Worker cl_mem CreateSubBuffer(cl_mem buffer,
272*8975f5c5SAndroid Build Coastguard Worker                        MemFlags flags,
273*8975f5c5SAndroid Build Coastguard Worker                        cl_buffer_create_type buffer_create_type,
274*8975f5c5SAndroid Build Coastguard Worker                        const void *buffer_create_info)
275*8975f5c5SAndroid Build Coastguard Worker {
276*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(
277*8975f5c5SAndroid Build Coastguard Worker         buffer->cast<Buffer>().createSubBuffer(flags, buffer_create_type, buffer_create_info));
278*8975f5c5SAndroid Build Coastguard Worker }
279*8975f5c5SAndroid Build Coastguard Worker 
CreateImage(cl_context context,MemFlags flags,const cl_image_format * image_format,const cl_image_desc * image_desc,void * host_ptr)280*8975f5c5SAndroid Build Coastguard Worker cl_mem CreateImage(cl_context context,
281*8975f5c5SAndroid Build Coastguard Worker                    MemFlags flags,
282*8975f5c5SAndroid Build Coastguard Worker                    const cl_image_format *image_format,
283*8975f5c5SAndroid Build Coastguard Worker                    const cl_image_desc *image_desc,
284*8975f5c5SAndroid Build Coastguard Worker                    void *host_ptr)
285*8975f5c5SAndroid Build Coastguard Worker {
286*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(
287*8975f5c5SAndroid Build Coastguard Worker         context->cast<Context>().createImage(nullptr, flags, image_format, image_desc, host_ptr));
288*8975f5c5SAndroid Build Coastguard Worker }
289*8975f5c5SAndroid Build Coastguard Worker 
CreateImageWithProperties(cl_context context,const cl_mem_properties * properties,MemFlags flags,const cl_image_format * image_format,const cl_image_desc * image_desc,void * host_ptr)290*8975f5c5SAndroid Build Coastguard Worker cl_mem CreateImageWithProperties(cl_context context,
291*8975f5c5SAndroid Build Coastguard Worker                                  const cl_mem_properties *properties,
292*8975f5c5SAndroid Build Coastguard Worker                                  MemFlags flags,
293*8975f5c5SAndroid Build Coastguard Worker                                  const cl_image_format *image_format,
294*8975f5c5SAndroid Build Coastguard Worker                                  const cl_image_desc *image_desc,
295*8975f5c5SAndroid Build Coastguard Worker                                  void *host_ptr)
296*8975f5c5SAndroid Build Coastguard Worker {
297*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createImage(properties, flags, image_format, image_desc,
298*8975f5c5SAndroid Build Coastguard Worker                                                        host_ptr));
299*8975f5c5SAndroid Build Coastguard Worker }
300*8975f5c5SAndroid Build Coastguard Worker 
CreatePipe(cl_context context,MemFlags flags,cl_uint pipe_packet_size,cl_uint pipe_max_packets,const cl_pipe_properties * properties)301*8975f5c5SAndroid Build Coastguard Worker cl_mem CreatePipe(cl_context context,
302*8975f5c5SAndroid Build Coastguard Worker                   MemFlags flags,
303*8975f5c5SAndroid Build Coastguard Worker                   cl_uint pipe_packet_size,
304*8975f5c5SAndroid Build Coastguard Worker                   cl_uint pipe_max_packets,
305*8975f5c5SAndroid Build Coastguard Worker                   const cl_pipe_properties *properties)
306*8975f5c5SAndroid Build Coastguard Worker {
307*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(CreatePipe);
308*8975f5c5SAndroid Build Coastguard Worker     cl::gClErrorTls = CL_INVALID_OPERATION;
309*8975f5c5SAndroid Build Coastguard Worker     return 0;
310*8975f5c5SAndroid Build Coastguard Worker }
311*8975f5c5SAndroid Build Coastguard Worker 
RetainMemObject(cl_mem memobj)312*8975f5c5SAndroid Build Coastguard Worker cl_int RetainMemObject(cl_mem memobj)
313*8975f5c5SAndroid Build Coastguard Worker {
314*8975f5c5SAndroid Build Coastguard Worker     memobj->cast<Memory>().retain();
315*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
316*8975f5c5SAndroid Build Coastguard Worker }
317*8975f5c5SAndroid Build Coastguard Worker 
ReleaseMemObject(cl_mem memobj)318*8975f5c5SAndroid Build Coastguard Worker cl_int ReleaseMemObject(cl_mem memobj)
319*8975f5c5SAndroid Build Coastguard Worker {
320*8975f5c5SAndroid Build Coastguard Worker     Memory &memory = memobj->cast<Memory>();
321*8975f5c5SAndroid Build Coastguard Worker     if (memory.release())
322*8975f5c5SAndroid Build Coastguard Worker     {
323*8975f5c5SAndroid Build Coastguard Worker         delete &memory;
324*8975f5c5SAndroid Build Coastguard Worker     }
325*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
326*8975f5c5SAndroid Build Coastguard Worker }
327*8975f5c5SAndroid Build Coastguard Worker 
GetSupportedImageFormats(cl_context context,MemFlags flags,MemObjectType image_type,cl_uint num_entries,cl_image_format * image_formats,cl_uint * num_image_formats)328*8975f5c5SAndroid Build Coastguard Worker cl_int GetSupportedImageFormats(cl_context context,
329*8975f5c5SAndroid Build Coastguard Worker                                 MemFlags flags,
330*8975f5c5SAndroid Build Coastguard Worker                                 MemObjectType image_type,
331*8975f5c5SAndroid Build Coastguard Worker                                 cl_uint num_entries,
332*8975f5c5SAndroid Build Coastguard Worker                                 cl_image_format *image_formats,
333*8975f5c5SAndroid Build Coastguard Worker                                 cl_uint *num_image_formats)
334*8975f5c5SAndroid Build Coastguard Worker {
335*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(context->cast<Context>().getSupportedImageFormats(
336*8975f5c5SAndroid Build Coastguard Worker         flags, image_type, num_entries, image_formats, num_image_formats));
337*8975f5c5SAndroid Build Coastguard Worker }
338*8975f5c5SAndroid Build Coastguard Worker 
GetMemObjectInfo(cl_mem memobj,MemInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)339*8975f5c5SAndroid Build Coastguard Worker cl_int GetMemObjectInfo(cl_mem memobj,
340*8975f5c5SAndroid Build Coastguard Worker                         MemInfo param_name,
341*8975f5c5SAndroid Build Coastguard Worker                         size_t param_value_size,
342*8975f5c5SAndroid Build Coastguard Worker                         void *param_value,
343*8975f5c5SAndroid Build Coastguard Worker                         size_t *param_value_size_ret)
344*8975f5c5SAndroid Build Coastguard Worker {
345*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(memobj->cast<Memory>().getInfo(param_name, param_value_size, param_value,
346*8975f5c5SAndroid Build Coastguard Worker                                                    param_value_size_ret));
347*8975f5c5SAndroid Build Coastguard Worker }
348*8975f5c5SAndroid Build Coastguard Worker 
GetImageInfo(cl_mem image,ImageInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)349*8975f5c5SAndroid Build Coastguard Worker cl_int GetImageInfo(cl_mem image,
350*8975f5c5SAndroid Build Coastguard Worker                     ImageInfo param_name,
351*8975f5c5SAndroid Build Coastguard Worker                     size_t param_value_size,
352*8975f5c5SAndroid Build Coastguard Worker                     void *param_value,
353*8975f5c5SAndroid Build Coastguard Worker                     size_t *param_value_size_ret)
354*8975f5c5SAndroid Build Coastguard Worker {
355*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(image->cast<Image>().getInfo(param_name, param_value_size, param_value,
356*8975f5c5SAndroid Build Coastguard Worker                                                  param_value_size_ret));
357*8975f5c5SAndroid Build Coastguard Worker }
358*8975f5c5SAndroid Build Coastguard Worker 
GetPipeInfo(cl_mem pipe,PipeInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)359*8975f5c5SAndroid Build Coastguard Worker cl_int GetPipeInfo(cl_mem pipe,
360*8975f5c5SAndroid Build Coastguard Worker                    PipeInfo param_name,
361*8975f5c5SAndroid Build Coastguard Worker                    size_t param_value_size,
362*8975f5c5SAndroid Build Coastguard Worker                    void *param_value,
363*8975f5c5SAndroid Build Coastguard Worker                    size_t *param_value_size_ret)
364*8975f5c5SAndroid Build Coastguard Worker {
365*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(GetPipeInfo);
366*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_MEM_OBJECT;
367*8975f5c5SAndroid Build Coastguard Worker }
368*8975f5c5SAndroid Build Coastguard Worker 
SetMemObjectDestructorCallback(cl_mem memobj,void (CL_CALLBACK * pfn_notify)(cl_mem memobj,void * user_data),void * user_data)369*8975f5c5SAndroid Build Coastguard Worker cl_int SetMemObjectDestructorCallback(cl_mem memobj,
370*8975f5c5SAndroid Build Coastguard Worker                                       void(CL_CALLBACK *pfn_notify)(cl_mem memobj, void *user_data),
371*8975f5c5SAndroid Build Coastguard Worker                                       void *user_data)
372*8975f5c5SAndroid Build Coastguard Worker {
373*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(memobj->cast<Memory>().setDestructorCallback(pfn_notify, user_data));
374*8975f5c5SAndroid Build Coastguard Worker }
375*8975f5c5SAndroid Build Coastguard Worker 
SVMAlloc(cl_context context,SVM_MemFlags flags,size_t size,cl_uint alignment)376*8975f5c5SAndroid Build Coastguard Worker void *SVMAlloc(cl_context context, SVM_MemFlags flags, size_t size, cl_uint alignment)
377*8975f5c5SAndroid Build Coastguard Worker {
378*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(SVMAlloc);
379*8975f5c5SAndroid Build Coastguard Worker     return 0;
380*8975f5c5SAndroid Build Coastguard Worker }
381*8975f5c5SAndroid Build Coastguard Worker 
SVMFree(cl_context context,void * svm_pointer)382*8975f5c5SAndroid Build Coastguard Worker void SVMFree(cl_context context, void *svm_pointer)
383*8975f5c5SAndroid Build Coastguard Worker {
384*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(SVMFree);
385*8975f5c5SAndroid Build Coastguard Worker }
386*8975f5c5SAndroid Build Coastguard Worker 
CreateSamplerWithProperties(cl_context context,const cl_sampler_properties * sampler_properties)387*8975f5c5SAndroid Build Coastguard Worker cl_sampler CreateSamplerWithProperties(cl_context context,
388*8975f5c5SAndroid Build Coastguard Worker                                        const cl_sampler_properties *sampler_properties)
389*8975f5c5SAndroid Build Coastguard Worker {
390*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createSamplerWithProperties(sampler_properties));
391*8975f5c5SAndroid Build Coastguard Worker }
392*8975f5c5SAndroid Build Coastguard Worker 
RetainSampler(cl_sampler sampler)393*8975f5c5SAndroid Build Coastguard Worker cl_int RetainSampler(cl_sampler sampler)
394*8975f5c5SAndroid Build Coastguard Worker {
395*8975f5c5SAndroid Build Coastguard Worker     sampler->cast<Sampler>().retain();
396*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
397*8975f5c5SAndroid Build Coastguard Worker }
398*8975f5c5SAndroid Build Coastguard Worker 
ReleaseSampler(cl_sampler sampler)399*8975f5c5SAndroid Build Coastguard Worker cl_int ReleaseSampler(cl_sampler sampler)
400*8975f5c5SAndroid Build Coastguard Worker {
401*8975f5c5SAndroid Build Coastguard Worker     Sampler &smplr = sampler->cast<Sampler>();
402*8975f5c5SAndroid Build Coastguard Worker     if (smplr.release())
403*8975f5c5SAndroid Build Coastguard Worker     {
404*8975f5c5SAndroid Build Coastguard Worker         delete &smplr;
405*8975f5c5SAndroid Build Coastguard Worker     }
406*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
407*8975f5c5SAndroid Build Coastguard Worker }
408*8975f5c5SAndroid Build Coastguard Worker 
GetSamplerInfo(cl_sampler sampler,SamplerInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)409*8975f5c5SAndroid Build Coastguard Worker cl_int GetSamplerInfo(cl_sampler sampler,
410*8975f5c5SAndroid Build Coastguard Worker                       SamplerInfo param_name,
411*8975f5c5SAndroid Build Coastguard Worker                       size_t param_value_size,
412*8975f5c5SAndroid Build Coastguard Worker                       void *param_value,
413*8975f5c5SAndroid Build Coastguard Worker                       size_t *param_value_size_ret)
414*8975f5c5SAndroid Build Coastguard Worker {
415*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(sampler->cast<Sampler>().getInfo(param_name, param_value_size, param_value,
416*8975f5c5SAndroid Build Coastguard Worker                                                      param_value_size_ret));
417*8975f5c5SAndroid Build Coastguard Worker }
418*8975f5c5SAndroid Build Coastguard Worker 
CreateProgramWithSource(cl_context context,cl_uint count,const char ** strings,const size_t * lengths)419*8975f5c5SAndroid Build Coastguard Worker cl_program CreateProgramWithSource(cl_context context,
420*8975f5c5SAndroid Build Coastguard Worker                                    cl_uint count,
421*8975f5c5SAndroid Build Coastguard Worker                                    const char **strings,
422*8975f5c5SAndroid Build Coastguard Worker                                    const size_t *lengths)
423*8975f5c5SAndroid Build Coastguard Worker {
424*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createProgramWithSource(count, strings, lengths));
425*8975f5c5SAndroid Build Coastguard Worker }
426*8975f5c5SAndroid Build Coastguard Worker 
CreateProgramWithBinary(cl_context context,cl_uint num_devices,const cl_device_id * device_list,const size_t * lengths,const unsigned char ** binaries,cl_int * binary_status)427*8975f5c5SAndroid Build Coastguard Worker cl_program CreateProgramWithBinary(cl_context context,
428*8975f5c5SAndroid Build Coastguard Worker                                    cl_uint num_devices,
429*8975f5c5SAndroid Build Coastguard Worker                                    const cl_device_id *device_list,
430*8975f5c5SAndroid Build Coastguard Worker                                    const size_t *lengths,
431*8975f5c5SAndroid Build Coastguard Worker                                    const unsigned char **binaries,
432*8975f5c5SAndroid Build Coastguard Worker                                    cl_int *binary_status)
433*8975f5c5SAndroid Build Coastguard Worker {
434*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createProgramWithBinary(
435*8975f5c5SAndroid Build Coastguard Worker         num_devices, device_list, lengths, binaries, binary_status));
436*8975f5c5SAndroid Build Coastguard Worker }
437*8975f5c5SAndroid Build Coastguard Worker 
CreateProgramWithBuiltInKernels(cl_context context,cl_uint num_devices,const cl_device_id * device_list,const char * kernel_names)438*8975f5c5SAndroid Build Coastguard Worker cl_program CreateProgramWithBuiltInKernels(cl_context context,
439*8975f5c5SAndroid Build Coastguard Worker                                            cl_uint num_devices,
440*8975f5c5SAndroid Build Coastguard Worker                                            const cl_device_id *device_list,
441*8975f5c5SAndroid Build Coastguard Worker                                            const char *kernel_names)
442*8975f5c5SAndroid Build Coastguard Worker {
443*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createProgramWithBuiltInKernels(num_devices, device_list,
444*8975f5c5SAndroid Build Coastguard Worker                                                                            kernel_names));
445*8975f5c5SAndroid Build Coastguard Worker }
446*8975f5c5SAndroid Build Coastguard Worker 
CreateProgramWithIL(cl_context context,const void * il,size_t length)447*8975f5c5SAndroid Build Coastguard Worker cl_program CreateProgramWithIL(cl_context context, const void *il, size_t length)
448*8975f5c5SAndroid Build Coastguard Worker {
449*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createProgramWithIL(il, length));
450*8975f5c5SAndroid Build Coastguard Worker }
451*8975f5c5SAndroid Build Coastguard Worker 
RetainProgram(cl_program program)452*8975f5c5SAndroid Build Coastguard Worker cl_int RetainProgram(cl_program program)
453*8975f5c5SAndroid Build Coastguard Worker {
454*8975f5c5SAndroid Build Coastguard Worker     program->cast<Program>().retain();
455*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
456*8975f5c5SAndroid Build Coastguard Worker }
457*8975f5c5SAndroid Build Coastguard Worker 
ReleaseProgram(cl_program program)458*8975f5c5SAndroid Build Coastguard Worker cl_int ReleaseProgram(cl_program program)
459*8975f5c5SAndroid Build Coastguard Worker {
460*8975f5c5SAndroid Build Coastguard Worker     Program &prog = program->cast<Program>();
461*8975f5c5SAndroid Build Coastguard Worker     if (prog.release())
462*8975f5c5SAndroid Build Coastguard Worker     {
463*8975f5c5SAndroid Build Coastguard Worker         delete &prog;
464*8975f5c5SAndroid Build Coastguard Worker     }
465*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
466*8975f5c5SAndroid Build Coastguard Worker }
467*8975f5c5SAndroid Build Coastguard Worker 
BuildProgram(cl_program program,cl_uint num_devices,const cl_device_id * device_list,const char * options,void (CL_CALLBACK * pfn_notify)(cl_program program,void * user_data),void * user_data)468*8975f5c5SAndroid Build Coastguard Worker cl_int BuildProgram(cl_program program,
469*8975f5c5SAndroid Build Coastguard Worker                     cl_uint num_devices,
470*8975f5c5SAndroid Build Coastguard Worker                     const cl_device_id *device_list,
471*8975f5c5SAndroid Build Coastguard Worker                     const char *options,
472*8975f5c5SAndroid Build Coastguard Worker                     void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
473*8975f5c5SAndroid Build Coastguard Worker                     void *user_data)
474*8975f5c5SAndroid Build Coastguard Worker {
475*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(
476*8975f5c5SAndroid Build Coastguard Worker         program->cast<Program>().build(num_devices, device_list, options, pfn_notify, user_data));
477*8975f5c5SAndroid Build Coastguard Worker }
478*8975f5c5SAndroid Build Coastguard Worker 
CompileProgram(cl_program program,cl_uint num_devices,const cl_device_id * device_list,const char * options,cl_uint num_input_headers,const cl_program * input_headers,const char ** header_include_names,void (CL_CALLBACK * pfn_notify)(cl_program program,void * user_data),void * user_data)479*8975f5c5SAndroid Build Coastguard Worker cl_int CompileProgram(cl_program program,
480*8975f5c5SAndroid Build Coastguard Worker                       cl_uint num_devices,
481*8975f5c5SAndroid Build Coastguard Worker                       const cl_device_id *device_list,
482*8975f5c5SAndroid Build Coastguard Worker                       const char *options,
483*8975f5c5SAndroid Build Coastguard Worker                       cl_uint num_input_headers,
484*8975f5c5SAndroid Build Coastguard Worker                       const cl_program *input_headers,
485*8975f5c5SAndroid Build Coastguard Worker                       const char **header_include_names,
486*8975f5c5SAndroid Build Coastguard Worker                       void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
487*8975f5c5SAndroid Build Coastguard Worker                       void *user_data)
488*8975f5c5SAndroid Build Coastguard Worker {
489*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(program->cast<Program>().compile(num_devices, device_list, options,
490*8975f5c5SAndroid Build Coastguard Worker                                                      num_input_headers, input_headers,
491*8975f5c5SAndroid Build Coastguard Worker                                                      header_include_names, pfn_notify, user_data));
492*8975f5c5SAndroid Build Coastguard Worker }
493*8975f5c5SAndroid Build Coastguard Worker 
LinkProgram(cl_context context,cl_uint num_devices,const cl_device_id * device_list,const char * options,cl_uint num_input_programs,const cl_program * input_programs,void (CL_CALLBACK * pfn_notify)(cl_program program,void * user_data),void * user_data)494*8975f5c5SAndroid Build Coastguard Worker cl_program LinkProgram(cl_context context,
495*8975f5c5SAndroid Build Coastguard Worker                        cl_uint num_devices,
496*8975f5c5SAndroid Build Coastguard Worker                        const cl_device_id *device_list,
497*8975f5c5SAndroid Build Coastguard Worker                        const char *options,
498*8975f5c5SAndroid Build Coastguard Worker                        cl_uint num_input_programs,
499*8975f5c5SAndroid Build Coastguard Worker                        const cl_program *input_programs,
500*8975f5c5SAndroid Build Coastguard Worker                        void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
501*8975f5c5SAndroid Build Coastguard Worker                        void *user_data)
502*8975f5c5SAndroid Build Coastguard Worker {
503*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().linkProgram(num_devices, device_list, options,
504*8975f5c5SAndroid Build Coastguard Worker                                                        num_input_programs, input_programs,
505*8975f5c5SAndroid Build Coastguard Worker                                                        pfn_notify, user_data));
506*8975f5c5SAndroid Build Coastguard Worker }
507*8975f5c5SAndroid Build Coastguard Worker 
SetProgramReleaseCallback(cl_program program,void (CL_CALLBACK * pfn_notify)(cl_program program,void * user_data),void * user_data)508*8975f5c5SAndroid Build Coastguard Worker cl_int SetProgramReleaseCallback(cl_program program,
509*8975f5c5SAndroid Build Coastguard Worker                                  void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
510*8975f5c5SAndroid Build Coastguard Worker                                  void *user_data)
511*8975f5c5SAndroid Build Coastguard Worker {
512*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(SetProgramReleaseCallback);
513*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
514*8975f5c5SAndroid Build Coastguard Worker }
515*8975f5c5SAndroid Build Coastguard Worker 
SetProgramSpecializationConstant(cl_program program,cl_uint spec_id,size_t spec_size,const void * spec_value)516*8975f5c5SAndroid Build Coastguard Worker cl_int SetProgramSpecializationConstant(cl_program program,
517*8975f5c5SAndroid Build Coastguard Worker                                         cl_uint spec_id,
518*8975f5c5SAndroid Build Coastguard Worker                                         size_t spec_size,
519*8975f5c5SAndroid Build Coastguard Worker                                         const void *spec_value)
520*8975f5c5SAndroid Build Coastguard Worker {
521*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(SetProgramSpecializationConstant);
522*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
523*8975f5c5SAndroid Build Coastguard Worker }
524*8975f5c5SAndroid Build Coastguard Worker 
UnloadPlatformCompiler(cl_platform_id platform)525*8975f5c5SAndroid Build Coastguard Worker cl_int UnloadPlatformCompiler(cl_platform_id platform)
526*8975f5c5SAndroid Build Coastguard Worker {
527*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(platform->cast<Platform>().unloadCompiler());
528*8975f5c5SAndroid Build Coastguard Worker }
529*8975f5c5SAndroid Build Coastguard Worker 
GetProgramInfo(cl_program program,ProgramInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)530*8975f5c5SAndroid Build Coastguard Worker cl_int GetProgramInfo(cl_program program,
531*8975f5c5SAndroid Build Coastguard Worker                       ProgramInfo param_name,
532*8975f5c5SAndroid Build Coastguard Worker                       size_t param_value_size,
533*8975f5c5SAndroid Build Coastguard Worker                       void *param_value,
534*8975f5c5SAndroid Build Coastguard Worker                       size_t *param_value_size_ret)
535*8975f5c5SAndroid Build Coastguard Worker {
536*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(program->cast<Program>().getInfo(param_name, param_value_size, param_value,
537*8975f5c5SAndroid Build Coastguard Worker                                                      param_value_size_ret));
538*8975f5c5SAndroid Build Coastguard Worker }
539*8975f5c5SAndroid Build Coastguard Worker 
GetProgramBuildInfo(cl_program program,cl_device_id device,ProgramBuildInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)540*8975f5c5SAndroid Build Coastguard Worker cl_int GetProgramBuildInfo(cl_program program,
541*8975f5c5SAndroid Build Coastguard Worker                            cl_device_id device,
542*8975f5c5SAndroid Build Coastguard Worker                            ProgramBuildInfo param_name,
543*8975f5c5SAndroid Build Coastguard Worker                            size_t param_value_size,
544*8975f5c5SAndroid Build Coastguard Worker                            void *param_value,
545*8975f5c5SAndroid Build Coastguard Worker                            size_t *param_value_size_ret)
546*8975f5c5SAndroid Build Coastguard Worker {
547*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(program->cast<Program>().getBuildInfo(device, param_name, param_value_size,
548*8975f5c5SAndroid Build Coastguard Worker                                                           param_value, param_value_size_ret));
549*8975f5c5SAndroid Build Coastguard Worker }
550*8975f5c5SAndroid Build Coastguard Worker 
CreateKernel(cl_program program,const char * kernel_name)551*8975f5c5SAndroid Build Coastguard Worker cl_kernel CreateKernel(cl_program program, const char *kernel_name)
552*8975f5c5SAndroid Build Coastguard Worker {
553*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(program->cast<Program>().createKernel(kernel_name));
554*8975f5c5SAndroid Build Coastguard Worker }
555*8975f5c5SAndroid Build Coastguard Worker 
CreateKernelsInProgram(cl_program program,cl_uint num_kernels,cl_kernel * kernels,cl_uint * num_kernels_ret)556*8975f5c5SAndroid Build Coastguard Worker cl_int CreateKernelsInProgram(cl_program program,
557*8975f5c5SAndroid Build Coastguard Worker                               cl_uint num_kernels,
558*8975f5c5SAndroid Build Coastguard Worker                               cl_kernel *kernels,
559*8975f5c5SAndroid Build Coastguard Worker                               cl_uint *num_kernels_ret)
560*8975f5c5SAndroid Build Coastguard Worker {
561*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(program->cast<Program>().createKernels(num_kernels, kernels, num_kernels_ret));
562*8975f5c5SAndroid Build Coastguard Worker }
563*8975f5c5SAndroid Build Coastguard Worker 
CloneKernel(cl_kernel source_kernel)564*8975f5c5SAndroid Build Coastguard Worker cl_kernel CloneKernel(cl_kernel source_kernel)
565*8975f5c5SAndroid Build Coastguard Worker {
566*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(source_kernel->cast<Kernel>().clone(););
567*8975f5c5SAndroid Build Coastguard Worker }
568*8975f5c5SAndroid Build Coastguard Worker 
RetainKernel(cl_kernel kernel)569*8975f5c5SAndroid Build Coastguard Worker cl_int RetainKernel(cl_kernel kernel)
570*8975f5c5SAndroid Build Coastguard Worker {
571*8975f5c5SAndroid Build Coastguard Worker     kernel->cast<Kernel>().retain();
572*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
573*8975f5c5SAndroid Build Coastguard Worker }
574*8975f5c5SAndroid Build Coastguard Worker 
ReleaseKernel(cl_kernel kernel)575*8975f5c5SAndroid Build Coastguard Worker cl_int ReleaseKernel(cl_kernel kernel)
576*8975f5c5SAndroid Build Coastguard Worker {
577*8975f5c5SAndroid Build Coastguard Worker     Kernel &krnl = kernel->cast<Kernel>();
578*8975f5c5SAndroid Build Coastguard Worker     if (krnl.release())
579*8975f5c5SAndroid Build Coastguard Worker     {
580*8975f5c5SAndroid Build Coastguard Worker         delete &krnl;
581*8975f5c5SAndroid Build Coastguard Worker     }
582*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
583*8975f5c5SAndroid Build Coastguard Worker }
584*8975f5c5SAndroid Build Coastguard Worker 
SetKernelArg(cl_kernel kernel,cl_uint arg_index,size_t arg_size,const void * arg_value)585*8975f5c5SAndroid Build Coastguard Worker cl_int SetKernelArg(cl_kernel kernel, cl_uint arg_index, size_t arg_size, const void *arg_value)
586*8975f5c5SAndroid Build Coastguard Worker {
587*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(kernel->cast<Kernel>().setArg(arg_index, arg_size, arg_value));
588*8975f5c5SAndroid Build Coastguard Worker }
589*8975f5c5SAndroid Build Coastguard Worker 
SetKernelArgSVMPointer(cl_kernel kernel,cl_uint arg_index,const void * arg_value)590*8975f5c5SAndroid Build Coastguard Worker cl_int SetKernelArgSVMPointer(cl_kernel kernel, cl_uint arg_index, const void *arg_value)
591*8975f5c5SAndroid Build Coastguard Worker {
592*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(SetKernelArgSVMPointer);
593*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
594*8975f5c5SAndroid Build Coastguard Worker }
595*8975f5c5SAndroid Build Coastguard Worker 
SetKernelExecInfo(cl_kernel kernel,KernelExecInfo param_name,size_t param_value_size,const void * param_value)596*8975f5c5SAndroid Build Coastguard Worker cl_int SetKernelExecInfo(cl_kernel kernel,
597*8975f5c5SAndroid Build Coastguard Worker                          KernelExecInfo param_name,
598*8975f5c5SAndroid Build Coastguard Worker                          size_t param_value_size,
599*8975f5c5SAndroid Build Coastguard Worker                          const void *param_value)
600*8975f5c5SAndroid Build Coastguard Worker {
601*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(SetKernelExecInfo);
602*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
603*8975f5c5SAndroid Build Coastguard Worker }
604*8975f5c5SAndroid Build Coastguard Worker 
GetKernelInfo(cl_kernel kernel,KernelInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)605*8975f5c5SAndroid Build Coastguard Worker cl_int GetKernelInfo(cl_kernel kernel,
606*8975f5c5SAndroid Build Coastguard Worker                      KernelInfo param_name,
607*8975f5c5SAndroid Build Coastguard Worker                      size_t param_value_size,
608*8975f5c5SAndroid Build Coastguard Worker                      void *param_value,
609*8975f5c5SAndroid Build Coastguard Worker                      size_t *param_value_size_ret)
610*8975f5c5SAndroid Build Coastguard Worker {
611*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(kernel->cast<Kernel>().getInfo(param_name, param_value_size, param_value,
612*8975f5c5SAndroid Build Coastguard Worker                                                    param_value_size_ret));
613*8975f5c5SAndroid Build Coastguard Worker }
614*8975f5c5SAndroid Build Coastguard Worker 
GetKernelArgInfo(cl_kernel kernel,cl_uint arg_index,KernelArgInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)615*8975f5c5SAndroid Build Coastguard Worker cl_int GetKernelArgInfo(cl_kernel kernel,
616*8975f5c5SAndroid Build Coastguard Worker                         cl_uint arg_index,
617*8975f5c5SAndroid Build Coastguard Worker                         KernelArgInfo param_name,
618*8975f5c5SAndroid Build Coastguard Worker                         size_t param_value_size,
619*8975f5c5SAndroid Build Coastguard Worker                         void *param_value,
620*8975f5c5SAndroid Build Coastguard Worker                         size_t *param_value_size_ret)
621*8975f5c5SAndroid Build Coastguard Worker {
622*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(kernel->cast<Kernel>().getArgInfo(arg_index, param_name, param_value_size,
623*8975f5c5SAndroid Build Coastguard Worker                                                       param_value, param_value_size_ret));
624*8975f5c5SAndroid Build Coastguard Worker }
625*8975f5c5SAndroid Build Coastguard Worker 
GetKernelWorkGroupInfo(cl_kernel kernel,cl_device_id device,KernelWorkGroupInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)626*8975f5c5SAndroid Build Coastguard Worker cl_int GetKernelWorkGroupInfo(cl_kernel kernel,
627*8975f5c5SAndroid Build Coastguard Worker                               cl_device_id device,
628*8975f5c5SAndroid Build Coastguard Worker                               KernelWorkGroupInfo param_name,
629*8975f5c5SAndroid Build Coastguard Worker                               size_t param_value_size,
630*8975f5c5SAndroid Build Coastguard Worker                               void *param_value,
631*8975f5c5SAndroid Build Coastguard Worker                               size_t *param_value_size_ret)
632*8975f5c5SAndroid Build Coastguard Worker {
633*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(kernel->cast<Kernel>().getWorkGroupInfo(device, param_name, param_value_size,
634*8975f5c5SAndroid Build Coastguard Worker                                                             param_value, param_value_size_ret));
635*8975f5c5SAndroid Build Coastguard Worker }
636*8975f5c5SAndroid Build Coastguard Worker 
GetKernelSubGroupInfo(cl_kernel kernel,cl_device_id device,KernelSubGroupInfo 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)637*8975f5c5SAndroid Build Coastguard Worker cl_int GetKernelSubGroupInfo(cl_kernel kernel,
638*8975f5c5SAndroid Build Coastguard Worker                              cl_device_id device,
639*8975f5c5SAndroid Build Coastguard Worker                              KernelSubGroupInfo param_name,
640*8975f5c5SAndroid Build Coastguard Worker                              size_t input_value_size,
641*8975f5c5SAndroid Build Coastguard Worker                              const void *input_value,
642*8975f5c5SAndroid Build Coastguard Worker                              size_t param_value_size,
643*8975f5c5SAndroid Build Coastguard Worker                              void *param_value,
644*8975f5c5SAndroid Build Coastguard Worker                              size_t *param_value_size_ret)
645*8975f5c5SAndroid Build Coastguard Worker {
646*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(GetKernelSubGroupInfo);
647*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
648*8975f5c5SAndroid Build Coastguard Worker }
649*8975f5c5SAndroid Build Coastguard Worker 
WaitForEvents(cl_uint num_events,const cl_event * event_list)650*8975f5c5SAndroid Build Coastguard Worker cl_int WaitForEvents(cl_uint num_events, const cl_event *event_list)
651*8975f5c5SAndroid Build Coastguard Worker {
652*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(
653*8975f5c5SAndroid Build Coastguard Worker         (*event_list)->cast<Event>().getContext().waitForEvents(num_events, event_list));
654*8975f5c5SAndroid Build Coastguard Worker }
655*8975f5c5SAndroid Build Coastguard Worker 
GetEventInfo(cl_event event,EventInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)656*8975f5c5SAndroid Build Coastguard Worker cl_int GetEventInfo(cl_event event,
657*8975f5c5SAndroid Build Coastguard Worker                     EventInfo param_name,
658*8975f5c5SAndroid Build Coastguard Worker                     size_t param_value_size,
659*8975f5c5SAndroid Build Coastguard Worker                     void *param_value,
660*8975f5c5SAndroid Build Coastguard Worker                     size_t *param_value_size_ret)
661*8975f5c5SAndroid Build Coastguard Worker {
662*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(event->cast<Event>().getInfo(param_name, param_value_size, param_value,
663*8975f5c5SAndroid Build Coastguard Worker                                                  param_value_size_ret));
664*8975f5c5SAndroid Build Coastguard Worker }
665*8975f5c5SAndroid Build Coastguard Worker 
CreateUserEvent(cl_context context)666*8975f5c5SAndroid Build Coastguard Worker cl_event CreateUserEvent(cl_context context)
667*8975f5c5SAndroid Build Coastguard Worker {
668*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createUserEvent());
669*8975f5c5SAndroid Build Coastguard Worker }
670*8975f5c5SAndroid Build Coastguard Worker 
RetainEvent(cl_event event)671*8975f5c5SAndroid Build Coastguard Worker cl_int RetainEvent(cl_event event)
672*8975f5c5SAndroid Build Coastguard Worker {
673*8975f5c5SAndroid Build Coastguard Worker     event->cast<Event>().retain();
674*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
675*8975f5c5SAndroid Build Coastguard Worker }
676*8975f5c5SAndroid Build Coastguard Worker 
ReleaseEvent(cl_event event)677*8975f5c5SAndroid Build Coastguard Worker cl_int ReleaseEvent(cl_event event)
678*8975f5c5SAndroid Build Coastguard Worker {
679*8975f5c5SAndroid Build Coastguard Worker     Event &evt = event->cast<Event>();
680*8975f5c5SAndroid Build Coastguard Worker     if (evt.release())
681*8975f5c5SAndroid Build Coastguard Worker     {
682*8975f5c5SAndroid Build Coastguard Worker         delete &evt;
683*8975f5c5SAndroid Build Coastguard Worker     }
684*8975f5c5SAndroid Build Coastguard Worker     return CL_SUCCESS;
685*8975f5c5SAndroid Build Coastguard Worker }
686*8975f5c5SAndroid Build Coastguard Worker 
SetUserEventStatus(cl_event event,cl_int execution_status)687*8975f5c5SAndroid Build Coastguard Worker cl_int SetUserEventStatus(cl_event event, cl_int execution_status)
688*8975f5c5SAndroid Build Coastguard Worker {
689*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(event->cast<Event>().setUserEventStatus(execution_status));
690*8975f5c5SAndroid Build Coastguard Worker }
691*8975f5c5SAndroid Build Coastguard Worker 
SetEventCallback(cl_event event,cl_int command_exec_callback_type,void (CL_CALLBACK * pfn_notify)(cl_event event,cl_int event_command_status,void * user_data),void * user_data)692*8975f5c5SAndroid Build Coastguard Worker cl_int SetEventCallback(cl_event event,
693*8975f5c5SAndroid Build Coastguard Worker                         cl_int command_exec_callback_type,
694*8975f5c5SAndroid Build Coastguard Worker                         void(CL_CALLBACK *pfn_notify)(cl_event event,
695*8975f5c5SAndroid Build Coastguard Worker                                                       cl_int event_command_status,
696*8975f5c5SAndroid Build Coastguard Worker                                                       void *user_data),
697*8975f5c5SAndroid Build Coastguard Worker                         void *user_data)
698*8975f5c5SAndroid Build Coastguard Worker {
699*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(
700*8975f5c5SAndroid Build Coastguard Worker         event->cast<Event>().setCallback(command_exec_callback_type, pfn_notify, user_data));
701*8975f5c5SAndroid Build Coastguard Worker }
702*8975f5c5SAndroid Build Coastguard Worker 
GetEventProfilingInfo(cl_event event,ProfilingInfo param_name,size_t param_value_size,void * param_value,size_t * param_value_size_ret)703*8975f5c5SAndroid Build Coastguard Worker cl_int GetEventProfilingInfo(cl_event event,
704*8975f5c5SAndroid Build Coastguard Worker                              ProfilingInfo param_name,
705*8975f5c5SAndroid Build Coastguard Worker                              size_t param_value_size,
706*8975f5c5SAndroid Build Coastguard Worker                              void *param_value,
707*8975f5c5SAndroid Build Coastguard Worker                              size_t *param_value_size_ret)
708*8975f5c5SAndroid Build Coastguard Worker {
709*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(event->cast<Event>().getProfilingInfo(param_name, param_value_size, param_value,
710*8975f5c5SAndroid Build Coastguard Worker                                                           param_value_size_ret));
711*8975f5c5SAndroid Build Coastguard Worker }
712*8975f5c5SAndroid Build Coastguard Worker 
Flush(cl_command_queue command_queue)713*8975f5c5SAndroid Build Coastguard Worker cl_int Flush(cl_command_queue command_queue)
714*8975f5c5SAndroid Build Coastguard Worker {
715*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().flush());
716*8975f5c5SAndroid Build Coastguard Worker }
717*8975f5c5SAndroid Build Coastguard Worker 
Finish(cl_command_queue command_queue)718*8975f5c5SAndroid Build Coastguard Worker cl_int Finish(cl_command_queue command_queue)
719*8975f5c5SAndroid Build Coastguard Worker {
720*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().finish());
721*8975f5c5SAndroid Build Coastguard Worker }
722*8975f5c5SAndroid Build Coastguard Worker 
EnqueueReadBuffer(cl_command_queue command_queue,cl_mem buffer,cl_bool blocking_read,size_t offset,size_t size,void * ptr,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)723*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueReadBuffer(cl_command_queue command_queue,
724*8975f5c5SAndroid Build Coastguard Worker                          cl_mem buffer,
725*8975f5c5SAndroid Build Coastguard Worker                          cl_bool blocking_read,
726*8975f5c5SAndroid Build Coastguard Worker                          size_t offset,
727*8975f5c5SAndroid Build Coastguard Worker                          size_t size,
728*8975f5c5SAndroid Build Coastguard Worker                          void *ptr,
729*8975f5c5SAndroid Build Coastguard Worker                          cl_uint num_events_in_wait_list,
730*8975f5c5SAndroid Build Coastguard Worker                          const cl_event *event_wait_list,
731*8975f5c5SAndroid Build Coastguard Worker                          cl_event *event)
732*8975f5c5SAndroid Build Coastguard Worker {
733*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueReadBuffer(
734*8975f5c5SAndroid Build Coastguard Worker         buffer, blocking_read, offset, size, ptr, num_events_in_wait_list, event_wait_list, event));
735*8975f5c5SAndroid Build Coastguard Worker }
736*8975f5c5SAndroid Build Coastguard Worker 
EnqueueReadBufferRect(cl_command_queue command_queue,cl_mem buffer,cl_bool blocking_read,const size_t * buffer_origin,const size_t * host_origin,const size_t * region,size_t buffer_row_pitch,size_t buffer_slice_pitch,size_t host_row_pitch,size_t host_slice_pitch,void * ptr,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)737*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueReadBufferRect(cl_command_queue command_queue,
738*8975f5c5SAndroid Build Coastguard Worker                              cl_mem buffer,
739*8975f5c5SAndroid Build Coastguard Worker                              cl_bool blocking_read,
740*8975f5c5SAndroid Build Coastguard Worker                              const size_t *buffer_origin,
741*8975f5c5SAndroid Build Coastguard Worker                              const size_t *host_origin,
742*8975f5c5SAndroid Build Coastguard Worker                              const size_t *region,
743*8975f5c5SAndroid Build Coastguard Worker                              size_t buffer_row_pitch,
744*8975f5c5SAndroid Build Coastguard Worker                              size_t buffer_slice_pitch,
745*8975f5c5SAndroid Build Coastguard Worker                              size_t host_row_pitch,
746*8975f5c5SAndroid Build Coastguard Worker                              size_t host_slice_pitch,
747*8975f5c5SAndroid Build Coastguard Worker                              void *ptr,
748*8975f5c5SAndroid Build Coastguard Worker                              cl_uint num_events_in_wait_list,
749*8975f5c5SAndroid Build Coastguard Worker                              const cl_event *event_wait_list,
750*8975f5c5SAndroid Build Coastguard Worker                              cl_event *event)
751*8975f5c5SAndroid Build Coastguard Worker {
752*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueReadBufferRect(
753*8975f5c5SAndroid Build Coastguard Worker         buffer, blocking_read, cl::MemOffsets{buffer_origin[0], buffer_origin[1], buffer_origin[2]},
754*8975f5c5SAndroid Build Coastguard Worker         cl::MemOffsets{host_origin[0], host_origin[1], host_origin[2]},
755*8975f5c5SAndroid Build Coastguard Worker         cl::Coordinate{region[0], region[1], region[2]}, buffer_row_pitch, buffer_slice_pitch,
756*8975f5c5SAndroid Build Coastguard Worker         host_row_pitch, host_slice_pitch, ptr, num_events_in_wait_list, event_wait_list, event));
757*8975f5c5SAndroid Build Coastguard Worker }
758*8975f5c5SAndroid Build Coastguard Worker 
EnqueueWriteBuffer(cl_command_queue command_queue,cl_mem buffer,cl_bool blocking_write,size_t offset,size_t size,const void * ptr,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)759*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueWriteBuffer(cl_command_queue command_queue,
760*8975f5c5SAndroid Build Coastguard Worker                           cl_mem buffer,
761*8975f5c5SAndroid Build Coastguard Worker                           cl_bool blocking_write,
762*8975f5c5SAndroid Build Coastguard Worker                           size_t offset,
763*8975f5c5SAndroid Build Coastguard Worker                           size_t size,
764*8975f5c5SAndroid Build Coastguard Worker                           const void *ptr,
765*8975f5c5SAndroid Build Coastguard Worker                           cl_uint num_events_in_wait_list,
766*8975f5c5SAndroid Build Coastguard Worker                           const cl_event *event_wait_list,
767*8975f5c5SAndroid Build Coastguard Worker                           cl_event *event)
768*8975f5c5SAndroid Build Coastguard Worker {
769*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueWriteBuffer(
770*8975f5c5SAndroid Build Coastguard Worker         buffer, blocking_write, offset, size, ptr, num_events_in_wait_list, event_wait_list,
771*8975f5c5SAndroid Build Coastguard Worker         event));
772*8975f5c5SAndroid Build Coastguard Worker }
773*8975f5c5SAndroid Build Coastguard Worker 
EnqueueWriteBufferRect(cl_command_queue command_queue,cl_mem buffer,cl_bool blocking_write,const size_t * buffer_origin,const size_t * host_origin,const size_t * region,size_t buffer_row_pitch,size_t buffer_slice_pitch,size_t host_row_pitch,size_t host_slice_pitch,const void * ptr,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)774*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueWriteBufferRect(cl_command_queue command_queue,
775*8975f5c5SAndroid Build Coastguard Worker                               cl_mem buffer,
776*8975f5c5SAndroid Build Coastguard Worker                               cl_bool blocking_write,
777*8975f5c5SAndroid Build Coastguard Worker                               const size_t *buffer_origin,
778*8975f5c5SAndroid Build Coastguard Worker                               const size_t *host_origin,
779*8975f5c5SAndroid Build Coastguard Worker                               const size_t *region,
780*8975f5c5SAndroid Build Coastguard Worker                               size_t buffer_row_pitch,
781*8975f5c5SAndroid Build Coastguard Worker                               size_t buffer_slice_pitch,
782*8975f5c5SAndroid Build Coastguard Worker                               size_t host_row_pitch,
783*8975f5c5SAndroid Build Coastguard Worker                               size_t host_slice_pitch,
784*8975f5c5SAndroid Build Coastguard Worker                               const void *ptr,
785*8975f5c5SAndroid Build Coastguard Worker                               cl_uint num_events_in_wait_list,
786*8975f5c5SAndroid Build Coastguard Worker                               const cl_event *event_wait_list,
787*8975f5c5SAndroid Build Coastguard Worker                               cl_event *event)
788*8975f5c5SAndroid Build Coastguard Worker {
789*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueWriteBufferRect(
790*8975f5c5SAndroid Build Coastguard Worker         buffer, blocking_write,
791*8975f5c5SAndroid Build Coastguard Worker         cl::MemOffsets{buffer_origin[0], buffer_origin[1], buffer_origin[2]},
792*8975f5c5SAndroid Build Coastguard Worker         cl::MemOffsets{host_origin[0], host_origin[1], host_origin[2]},
793*8975f5c5SAndroid Build Coastguard Worker         cl::Coordinate{region[0], region[1], region[2]}, buffer_row_pitch, buffer_slice_pitch,
794*8975f5c5SAndroid Build Coastguard Worker         host_row_pitch, host_slice_pitch, ptr, num_events_in_wait_list, event_wait_list, event));
795*8975f5c5SAndroid Build Coastguard Worker }
796*8975f5c5SAndroid Build Coastguard Worker 
EnqueueFillBuffer(cl_command_queue command_queue,cl_mem buffer,const void * pattern,size_t pattern_size,size_t offset,size_t size,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)797*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueFillBuffer(cl_command_queue command_queue,
798*8975f5c5SAndroid Build Coastguard Worker                          cl_mem buffer,
799*8975f5c5SAndroid Build Coastguard Worker                          const void *pattern,
800*8975f5c5SAndroid Build Coastguard Worker                          size_t pattern_size,
801*8975f5c5SAndroid Build Coastguard Worker                          size_t offset,
802*8975f5c5SAndroid Build Coastguard Worker                          size_t size,
803*8975f5c5SAndroid Build Coastguard Worker                          cl_uint num_events_in_wait_list,
804*8975f5c5SAndroid Build Coastguard Worker                          const cl_event *event_wait_list,
805*8975f5c5SAndroid Build Coastguard Worker                          cl_event *event)
806*8975f5c5SAndroid Build Coastguard Worker {
807*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueFillBuffer(
808*8975f5c5SAndroid Build Coastguard Worker         buffer, pattern, pattern_size, offset, size, num_events_in_wait_list, event_wait_list,
809*8975f5c5SAndroid Build Coastguard Worker         event));
810*8975f5c5SAndroid Build Coastguard Worker }
811*8975f5c5SAndroid Build Coastguard Worker 
EnqueueCopyBuffer(cl_command_queue command_queue,cl_mem src_buffer,cl_mem dst_buffer,size_t src_offset,size_t dst_offset,size_t size,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)812*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueCopyBuffer(cl_command_queue command_queue,
813*8975f5c5SAndroid Build Coastguard Worker                          cl_mem src_buffer,
814*8975f5c5SAndroid Build Coastguard Worker                          cl_mem dst_buffer,
815*8975f5c5SAndroid Build Coastguard Worker                          size_t src_offset,
816*8975f5c5SAndroid Build Coastguard Worker                          size_t dst_offset,
817*8975f5c5SAndroid Build Coastguard Worker                          size_t size,
818*8975f5c5SAndroid Build Coastguard Worker                          cl_uint num_events_in_wait_list,
819*8975f5c5SAndroid Build Coastguard Worker                          const cl_event *event_wait_list,
820*8975f5c5SAndroid Build Coastguard Worker                          cl_event *event)
821*8975f5c5SAndroid Build Coastguard Worker {
822*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueCopyBuffer(
823*8975f5c5SAndroid Build Coastguard Worker         src_buffer, dst_buffer, src_offset, dst_offset, size, num_events_in_wait_list,
824*8975f5c5SAndroid Build Coastguard Worker         event_wait_list, event));
825*8975f5c5SAndroid Build Coastguard Worker }
826*8975f5c5SAndroid Build Coastguard Worker 
EnqueueCopyBufferRect(cl_command_queue command_queue,cl_mem src_buffer,cl_mem dst_buffer,const size_t * src_origin,const size_t * dst_origin,const size_t * region,size_t src_row_pitch,size_t src_slice_pitch,size_t dst_row_pitch,size_t dst_slice_pitch,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)827*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueCopyBufferRect(cl_command_queue command_queue,
828*8975f5c5SAndroid Build Coastguard Worker                              cl_mem src_buffer,
829*8975f5c5SAndroid Build Coastguard Worker                              cl_mem dst_buffer,
830*8975f5c5SAndroid Build Coastguard Worker                              const size_t *src_origin,
831*8975f5c5SAndroid Build Coastguard Worker                              const size_t *dst_origin,
832*8975f5c5SAndroid Build Coastguard Worker                              const size_t *region,
833*8975f5c5SAndroid Build Coastguard Worker                              size_t src_row_pitch,
834*8975f5c5SAndroid Build Coastguard Worker                              size_t src_slice_pitch,
835*8975f5c5SAndroid Build Coastguard Worker                              size_t dst_row_pitch,
836*8975f5c5SAndroid Build Coastguard Worker                              size_t dst_slice_pitch,
837*8975f5c5SAndroid Build Coastguard Worker                              cl_uint num_events_in_wait_list,
838*8975f5c5SAndroid Build Coastguard Worker                              const cl_event *event_wait_list,
839*8975f5c5SAndroid Build Coastguard Worker                              cl_event *event)
840*8975f5c5SAndroid Build Coastguard Worker {
841*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueCopyBufferRect(
842*8975f5c5SAndroid Build Coastguard Worker         src_buffer, dst_buffer, cl::MemOffsets{src_origin[0], src_origin[1], src_origin[2]},
843*8975f5c5SAndroid Build Coastguard Worker         cl::MemOffsets{dst_origin[0], dst_origin[1], dst_origin[2]},
844*8975f5c5SAndroid Build Coastguard Worker         cl::Coordinate{region[0], region[1], region[2]}, src_row_pitch, src_slice_pitch,
845*8975f5c5SAndroid Build Coastguard Worker         dst_row_pitch, dst_slice_pitch, num_events_in_wait_list, event_wait_list, event));
846*8975f5c5SAndroid Build Coastguard Worker }
847*8975f5c5SAndroid Build Coastguard Worker 
EnqueueReadImage(cl_command_queue command_queue,cl_mem image,cl_bool blocking_read,const size_t * origin,const size_t * region,size_t row_pitch,size_t slice_pitch,void * ptr,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)848*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueReadImage(cl_command_queue command_queue,
849*8975f5c5SAndroid Build Coastguard Worker                         cl_mem image,
850*8975f5c5SAndroid Build Coastguard Worker                         cl_bool blocking_read,
851*8975f5c5SAndroid Build Coastguard Worker                         const size_t *origin,
852*8975f5c5SAndroid Build Coastguard Worker                         const size_t *region,
853*8975f5c5SAndroid Build Coastguard Worker                         size_t row_pitch,
854*8975f5c5SAndroid Build Coastguard Worker                         size_t slice_pitch,
855*8975f5c5SAndroid Build Coastguard Worker                         void *ptr,
856*8975f5c5SAndroid Build Coastguard Worker                         cl_uint num_events_in_wait_list,
857*8975f5c5SAndroid Build Coastguard Worker                         const cl_event *event_wait_list,
858*8975f5c5SAndroid Build Coastguard Worker                         cl_event *event)
859*8975f5c5SAndroid Build Coastguard Worker {
860*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueReadImage(
861*8975f5c5SAndroid Build Coastguard Worker         image, blocking_read, cl::MemOffsets{origin[0], origin[1], origin[2]},
862*8975f5c5SAndroid Build Coastguard Worker         cl::Coordinate{region[0], region[1], region[2]}, row_pitch, slice_pitch, ptr,
863*8975f5c5SAndroid Build Coastguard Worker         num_events_in_wait_list, event_wait_list, event));
864*8975f5c5SAndroid Build Coastguard Worker }
865*8975f5c5SAndroid Build Coastguard Worker 
EnqueueWriteImage(cl_command_queue command_queue,cl_mem image,cl_bool blocking_write,const size_t * origin,const size_t * region,size_t input_row_pitch,size_t input_slice_pitch,const void * ptr,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)866*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueWriteImage(cl_command_queue command_queue,
867*8975f5c5SAndroid Build Coastguard Worker                          cl_mem image,
868*8975f5c5SAndroid Build Coastguard Worker                          cl_bool blocking_write,
869*8975f5c5SAndroid Build Coastguard Worker                          const size_t *origin,
870*8975f5c5SAndroid Build Coastguard Worker                          const size_t *region,
871*8975f5c5SAndroid Build Coastguard Worker                          size_t input_row_pitch,
872*8975f5c5SAndroid Build Coastguard Worker                          size_t input_slice_pitch,
873*8975f5c5SAndroid Build Coastguard Worker                          const void *ptr,
874*8975f5c5SAndroid Build Coastguard Worker                          cl_uint num_events_in_wait_list,
875*8975f5c5SAndroid Build Coastguard Worker                          const cl_event *event_wait_list,
876*8975f5c5SAndroid Build Coastguard Worker                          cl_event *event)
877*8975f5c5SAndroid Build Coastguard Worker {
878*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueWriteImage(
879*8975f5c5SAndroid Build Coastguard Worker         image, blocking_write, cl::MemOffsets{origin[0], origin[1], origin[2]},
880*8975f5c5SAndroid Build Coastguard Worker         cl::Coordinate{region[0], region[1], region[2]}, input_row_pitch, input_slice_pitch, ptr,
881*8975f5c5SAndroid Build Coastguard Worker         num_events_in_wait_list, event_wait_list, event));
882*8975f5c5SAndroid Build Coastguard Worker }
883*8975f5c5SAndroid Build Coastguard Worker 
EnqueueFillImage(cl_command_queue command_queue,cl_mem image,const void * fill_color,const size_t * origin,const size_t * region,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)884*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueFillImage(cl_command_queue command_queue,
885*8975f5c5SAndroid Build Coastguard Worker                         cl_mem image,
886*8975f5c5SAndroid Build Coastguard Worker                         const void *fill_color,
887*8975f5c5SAndroid Build Coastguard Worker                         const size_t *origin,
888*8975f5c5SAndroid Build Coastguard Worker                         const size_t *region,
889*8975f5c5SAndroid Build Coastguard Worker                         cl_uint num_events_in_wait_list,
890*8975f5c5SAndroid Build Coastguard Worker                         const cl_event *event_wait_list,
891*8975f5c5SAndroid Build Coastguard Worker                         cl_event *event)
892*8975f5c5SAndroid Build Coastguard Worker {
893*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueFillImage(
894*8975f5c5SAndroid Build Coastguard Worker         image, fill_color, cl::MemOffsets{origin[0], origin[1], origin[2]},
895*8975f5c5SAndroid Build Coastguard Worker         cl::Coordinate{region[0], region[1], region[2]}, num_events_in_wait_list, event_wait_list,
896*8975f5c5SAndroid Build Coastguard Worker         event));
897*8975f5c5SAndroid Build Coastguard Worker }
898*8975f5c5SAndroid Build Coastguard Worker 
EnqueueCopyImage(cl_command_queue command_queue,cl_mem src_image,cl_mem dst_image,const size_t * src_origin,const size_t * dst_origin,const size_t * region,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)899*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueCopyImage(cl_command_queue command_queue,
900*8975f5c5SAndroid Build Coastguard Worker                         cl_mem src_image,
901*8975f5c5SAndroid Build Coastguard Worker                         cl_mem dst_image,
902*8975f5c5SAndroid Build Coastguard Worker                         const size_t *src_origin,
903*8975f5c5SAndroid Build Coastguard Worker                         const size_t *dst_origin,
904*8975f5c5SAndroid Build Coastguard Worker                         const size_t *region,
905*8975f5c5SAndroid Build Coastguard Worker                         cl_uint num_events_in_wait_list,
906*8975f5c5SAndroid Build Coastguard Worker                         const cl_event *event_wait_list,
907*8975f5c5SAndroid Build Coastguard Worker                         cl_event *event)
908*8975f5c5SAndroid Build Coastguard Worker {
909*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueCopyImage(
910*8975f5c5SAndroid Build Coastguard Worker         src_image, dst_image, cl::MemOffsets{src_origin[0], src_origin[1], src_origin[2]},
911*8975f5c5SAndroid Build Coastguard Worker         cl::MemOffsets{dst_origin[0], dst_origin[1], dst_origin[2]},
912*8975f5c5SAndroid Build Coastguard Worker         cl::Coordinate{region[0], region[1], region[2]}, num_events_in_wait_list, event_wait_list,
913*8975f5c5SAndroid Build Coastguard Worker         event));
914*8975f5c5SAndroid Build Coastguard Worker }
915*8975f5c5SAndroid Build Coastguard Worker 
EnqueueCopyImageToBuffer(cl_command_queue command_queue,cl_mem src_image,cl_mem dst_buffer,const size_t * src_origin,const size_t * region,size_t dst_offset,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)916*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueCopyImageToBuffer(cl_command_queue command_queue,
917*8975f5c5SAndroid Build Coastguard Worker                                 cl_mem src_image,
918*8975f5c5SAndroid Build Coastguard Worker                                 cl_mem dst_buffer,
919*8975f5c5SAndroid Build Coastguard Worker                                 const size_t *src_origin,
920*8975f5c5SAndroid Build Coastguard Worker                                 const size_t *region,
921*8975f5c5SAndroid Build Coastguard Worker                                 size_t dst_offset,
922*8975f5c5SAndroid Build Coastguard Worker                                 cl_uint num_events_in_wait_list,
923*8975f5c5SAndroid Build Coastguard Worker                                 const cl_event *event_wait_list,
924*8975f5c5SAndroid Build Coastguard Worker                                 cl_event *event)
925*8975f5c5SAndroid Build Coastguard Worker {
926*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueCopyImageToBuffer(
927*8975f5c5SAndroid Build Coastguard Worker         src_image, dst_buffer, cl::MemOffsets{src_origin[0], src_origin[1], src_origin[2]},
928*8975f5c5SAndroid Build Coastguard Worker         cl::Coordinate{region[0], region[1], region[2]}, dst_offset, num_events_in_wait_list,
929*8975f5c5SAndroid Build Coastguard Worker         event_wait_list, event));
930*8975f5c5SAndroid Build Coastguard Worker }
931*8975f5c5SAndroid Build Coastguard Worker 
EnqueueCopyBufferToImage(cl_command_queue command_queue,cl_mem src_buffer,cl_mem dst_image,size_t src_offset,const size_t * dst_origin,const size_t * region,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)932*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueCopyBufferToImage(cl_command_queue command_queue,
933*8975f5c5SAndroid Build Coastguard Worker                                 cl_mem src_buffer,
934*8975f5c5SAndroid Build Coastguard Worker                                 cl_mem dst_image,
935*8975f5c5SAndroid Build Coastguard Worker                                 size_t src_offset,
936*8975f5c5SAndroid Build Coastguard Worker                                 const size_t *dst_origin,
937*8975f5c5SAndroid Build Coastguard Worker                                 const size_t *region,
938*8975f5c5SAndroid Build Coastguard Worker                                 cl_uint num_events_in_wait_list,
939*8975f5c5SAndroid Build Coastguard Worker                                 const cl_event *event_wait_list,
940*8975f5c5SAndroid Build Coastguard Worker                                 cl_event *event)
941*8975f5c5SAndroid Build Coastguard Worker {
942*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueCopyBufferToImage(
943*8975f5c5SAndroid Build Coastguard Worker         src_buffer, dst_image, src_offset,
944*8975f5c5SAndroid Build Coastguard Worker         cl::MemOffsets{dst_origin[0], dst_origin[1], dst_origin[2]},
945*8975f5c5SAndroid Build Coastguard Worker         cl::Coordinate{region[0], region[1], region[2]}, num_events_in_wait_list, event_wait_list,
946*8975f5c5SAndroid Build Coastguard Worker         event));
947*8975f5c5SAndroid Build Coastguard Worker }
948*8975f5c5SAndroid Build Coastguard Worker 
EnqueueMapBuffer(cl_command_queue command_queue,cl_mem buffer,cl_bool blocking_map,MapFlags map_flags,size_t offset,size_t size,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)949*8975f5c5SAndroid Build Coastguard Worker void *EnqueueMapBuffer(cl_command_queue command_queue,
950*8975f5c5SAndroid Build Coastguard Worker                        cl_mem buffer,
951*8975f5c5SAndroid Build Coastguard Worker                        cl_bool blocking_map,
952*8975f5c5SAndroid Build Coastguard Worker                        MapFlags map_flags,
953*8975f5c5SAndroid Build Coastguard Worker                        size_t offset,
954*8975f5c5SAndroid Build Coastguard Worker                        size_t size,
955*8975f5c5SAndroid Build Coastguard Worker                        cl_uint num_events_in_wait_list,
956*8975f5c5SAndroid Build Coastguard Worker                        const cl_event *event_wait_list,
957*8975f5c5SAndroid Build Coastguard Worker                        cl_event *event)
958*8975f5c5SAndroid Build Coastguard Worker {
959*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_PTR(ptrOut, command_queue->cast<CommandQueue>().enqueueMapBuffer(
960*8975f5c5SAndroid Build Coastguard Worker                               buffer, blocking_map, map_flags, offset, size,
961*8975f5c5SAndroid Build Coastguard Worker                               num_events_in_wait_list, event_wait_list, event, ptrOut));
962*8975f5c5SAndroid Build Coastguard Worker }
963*8975f5c5SAndroid Build Coastguard Worker 
EnqueueMapImage(cl_command_queue command_queue,cl_mem image,cl_bool blocking_map,MapFlags map_flags,const size_t * origin,const size_t * region,size_t * image_row_pitch,size_t * image_slice_pitch,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)964*8975f5c5SAndroid Build Coastguard Worker void *EnqueueMapImage(cl_command_queue command_queue,
965*8975f5c5SAndroid Build Coastguard Worker                       cl_mem image,
966*8975f5c5SAndroid Build Coastguard Worker                       cl_bool blocking_map,
967*8975f5c5SAndroid Build Coastguard Worker                       MapFlags map_flags,
968*8975f5c5SAndroid Build Coastguard Worker                       const size_t *origin,
969*8975f5c5SAndroid Build Coastguard Worker                       const size_t *region,
970*8975f5c5SAndroid Build Coastguard Worker                       size_t *image_row_pitch,
971*8975f5c5SAndroid Build Coastguard Worker                       size_t *image_slice_pitch,
972*8975f5c5SAndroid Build Coastguard Worker                       cl_uint num_events_in_wait_list,
973*8975f5c5SAndroid Build Coastguard Worker                       const cl_event *event_wait_list,
974*8975f5c5SAndroid Build Coastguard Worker                       cl_event *event)
975*8975f5c5SAndroid Build Coastguard Worker {
976*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_PTR(
977*8975f5c5SAndroid Build Coastguard Worker         ptrOut, command_queue->cast<CommandQueue>().enqueueMapImage(
978*8975f5c5SAndroid Build Coastguard Worker                     image, blocking_map, map_flags, cl::MemOffsets{origin[0], origin[1], origin[2]},
979*8975f5c5SAndroid Build Coastguard Worker                     cl::Coordinate{region[0], region[1], region[2]}, image_row_pitch,
980*8975f5c5SAndroid Build Coastguard Worker                     image_slice_pitch, num_events_in_wait_list, event_wait_list, event, ptrOut));
981*8975f5c5SAndroid Build Coastguard Worker }
982*8975f5c5SAndroid Build Coastguard Worker 
EnqueueUnmapMemObject(cl_command_queue command_queue,cl_mem memobj,void * mapped_ptr,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)983*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueUnmapMemObject(cl_command_queue command_queue,
984*8975f5c5SAndroid Build Coastguard Worker                              cl_mem memobj,
985*8975f5c5SAndroid Build Coastguard Worker                              void *mapped_ptr,
986*8975f5c5SAndroid Build Coastguard Worker                              cl_uint num_events_in_wait_list,
987*8975f5c5SAndroid Build Coastguard Worker                              const cl_event *event_wait_list,
988*8975f5c5SAndroid Build Coastguard Worker                              cl_event *event)
989*8975f5c5SAndroid Build Coastguard Worker {
990*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueUnmapMemObject(
991*8975f5c5SAndroid Build Coastguard Worker         memobj, mapped_ptr, num_events_in_wait_list, event_wait_list, event));
992*8975f5c5SAndroid Build Coastguard Worker }
993*8975f5c5SAndroid Build Coastguard Worker 
EnqueueMigrateMemObjects(cl_command_queue command_queue,cl_uint num_mem_objects,const cl_mem * mem_objects,MemMigrationFlags flags,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)994*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueMigrateMemObjects(cl_command_queue command_queue,
995*8975f5c5SAndroid Build Coastguard Worker                                 cl_uint num_mem_objects,
996*8975f5c5SAndroid Build Coastguard Worker                                 const cl_mem *mem_objects,
997*8975f5c5SAndroid Build Coastguard Worker                                 MemMigrationFlags flags,
998*8975f5c5SAndroid Build Coastguard Worker                                 cl_uint num_events_in_wait_list,
999*8975f5c5SAndroid Build Coastguard Worker                                 const cl_event *event_wait_list,
1000*8975f5c5SAndroid Build Coastguard Worker                                 cl_event *event)
1001*8975f5c5SAndroid Build Coastguard Worker {
1002*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueMigrateMemObjects(
1003*8975f5c5SAndroid Build Coastguard Worker         num_mem_objects, mem_objects, flags, num_events_in_wait_list, event_wait_list, event));
1004*8975f5c5SAndroid Build Coastguard Worker }
1005*8975f5c5SAndroid Build Coastguard Worker 
EnqueueNDRangeKernel(cl_command_queue command_queue,cl_kernel kernel,cl_uint work_dim,const size_t * global_work_offset,const size_t * global_work_size,const size_t * local_work_size,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)1006*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueNDRangeKernel(cl_command_queue command_queue,
1007*8975f5c5SAndroid Build Coastguard Worker                             cl_kernel kernel,
1008*8975f5c5SAndroid Build Coastguard Worker                             cl_uint work_dim,
1009*8975f5c5SAndroid Build Coastguard Worker                             const size_t *global_work_offset,
1010*8975f5c5SAndroid Build Coastguard Worker                             const size_t *global_work_size,
1011*8975f5c5SAndroid Build Coastguard Worker                             const size_t *local_work_size,
1012*8975f5c5SAndroid Build Coastguard Worker                             cl_uint num_events_in_wait_list,
1013*8975f5c5SAndroid Build Coastguard Worker                             const cl_event *event_wait_list,
1014*8975f5c5SAndroid Build Coastguard Worker                             cl_event *event)
1015*8975f5c5SAndroid Build Coastguard Worker {
1016*8975f5c5SAndroid Build Coastguard Worker     cl::NDRange ndrange(work_dim, global_work_offset, global_work_size, local_work_size);
1017*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueNDRangeKernel(
1018*8975f5c5SAndroid Build Coastguard Worker         kernel, ndrange, num_events_in_wait_list, event_wait_list, event));
1019*8975f5c5SAndroid Build Coastguard Worker }
1020*8975f5c5SAndroid Build Coastguard Worker 
EnqueueNativeKernel(cl_command_queue command_queue,void (CL_CALLBACK * user_func)(void *),void * args,size_t cb_args,cl_uint num_mem_objects,const cl_mem * mem_list,const void ** args_mem_loc,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)1021*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueNativeKernel(cl_command_queue command_queue,
1022*8975f5c5SAndroid Build Coastguard Worker                            void(CL_CALLBACK *user_func)(void *),
1023*8975f5c5SAndroid Build Coastguard Worker                            void *args,
1024*8975f5c5SAndroid Build Coastguard Worker                            size_t cb_args,
1025*8975f5c5SAndroid Build Coastguard Worker                            cl_uint num_mem_objects,
1026*8975f5c5SAndroid Build Coastguard Worker                            const cl_mem *mem_list,
1027*8975f5c5SAndroid Build Coastguard Worker                            const void **args_mem_loc,
1028*8975f5c5SAndroid Build Coastguard Worker                            cl_uint num_events_in_wait_list,
1029*8975f5c5SAndroid Build Coastguard Worker                            const cl_event *event_wait_list,
1030*8975f5c5SAndroid Build Coastguard Worker                            cl_event *event)
1031*8975f5c5SAndroid Build Coastguard Worker {
1032*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueNativeKernel(
1033*8975f5c5SAndroid Build Coastguard Worker         user_func, args, cb_args, num_mem_objects, mem_list, args_mem_loc, num_events_in_wait_list,
1034*8975f5c5SAndroid Build Coastguard Worker         event_wait_list, event));
1035*8975f5c5SAndroid Build Coastguard Worker }
1036*8975f5c5SAndroid Build Coastguard Worker 
EnqueueMarkerWithWaitList(cl_command_queue command_queue,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)1037*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueMarkerWithWaitList(cl_command_queue command_queue,
1038*8975f5c5SAndroid Build Coastguard Worker                                  cl_uint num_events_in_wait_list,
1039*8975f5c5SAndroid Build Coastguard Worker                                  const cl_event *event_wait_list,
1040*8975f5c5SAndroid Build Coastguard Worker                                  cl_event *event)
1041*8975f5c5SAndroid Build Coastguard Worker {
1042*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueMarkerWithWaitList(
1043*8975f5c5SAndroid Build Coastguard Worker         num_events_in_wait_list, event_wait_list, event));
1044*8975f5c5SAndroid Build Coastguard Worker }
1045*8975f5c5SAndroid Build Coastguard Worker 
EnqueueBarrierWithWaitList(cl_command_queue command_queue,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)1046*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueBarrierWithWaitList(cl_command_queue command_queue,
1047*8975f5c5SAndroid Build Coastguard Worker                                   cl_uint num_events_in_wait_list,
1048*8975f5c5SAndroid Build Coastguard Worker                                   const cl_event *event_wait_list,
1049*8975f5c5SAndroid Build Coastguard Worker                                   cl_event *event)
1050*8975f5c5SAndroid Build Coastguard Worker {
1051*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueBarrierWithWaitList(
1052*8975f5c5SAndroid Build Coastguard Worker         num_events_in_wait_list, event_wait_list, event));
1053*8975f5c5SAndroid Build Coastguard Worker }
1054*8975f5c5SAndroid Build Coastguard Worker 
EnqueueSVMFree(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)1055*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueSVMFree(cl_command_queue command_queue,
1056*8975f5c5SAndroid Build Coastguard Worker                       cl_uint num_svm_pointers,
1057*8975f5c5SAndroid Build Coastguard Worker                       void *svm_pointers[],
1058*8975f5c5SAndroid Build Coastguard Worker                       void(CL_CALLBACK *pfn_free_func)(cl_command_queue queue,
1059*8975f5c5SAndroid Build Coastguard Worker                                                        cl_uint num_svm_pointers,
1060*8975f5c5SAndroid Build Coastguard Worker                                                        void *svm_pointers[],
1061*8975f5c5SAndroid Build Coastguard Worker                                                        void *user_data),
1062*8975f5c5SAndroid Build Coastguard Worker                       void *user_data,
1063*8975f5c5SAndroid Build Coastguard Worker                       cl_uint num_events_in_wait_list,
1064*8975f5c5SAndroid Build Coastguard Worker                       const cl_event *event_wait_list,
1065*8975f5c5SAndroid Build Coastguard Worker                       cl_event *event)
1066*8975f5c5SAndroid Build Coastguard Worker {
1067*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(EnqueueSVMFree);
1068*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
1069*8975f5c5SAndroid Build Coastguard Worker }
1070*8975f5c5SAndroid Build Coastguard Worker 
EnqueueSVMMemcpy(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)1071*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueSVMMemcpy(cl_command_queue command_queue,
1072*8975f5c5SAndroid Build Coastguard Worker                         cl_bool blocking_copy,
1073*8975f5c5SAndroid Build Coastguard Worker                         void *dst_ptr,
1074*8975f5c5SAndroid Build Coastguard Worker                         const void *src_ptr,
1075*8975f5c5SAndroid Build Coastguard Worker                         size_t size,
1076*8975f5c5SAndroid Build Coastguard Worker                         cl_uint num_events_in_wait_list,
1077*8975f5c5SAndroid Build Coastguard Worker                         const cl_event *event_wait_list,
1078*8975f5c5SAndroid Build Coastguard Worker                         cl_event *event)
1079*8975f5c5SAndroid Build Coastguard Worker {
1080*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(EnqueueSVMMemcpy);
1081*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
1082*8975f5c5SAndroid Build Coastguard Worker }
1083*8975f5c5SAndroid Build Coastguard Worker 
EnqueueSVMMemFill(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)1084*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueSVMMemFill(cl_command_queue command_queue,
1085*8975f5c5SAndroid Build Coastguard Worker                          void *svm_ptr,
1086*8975f5c5SAndroid Build Coastguard Worker                          const void *pattern,
1087*8975f5c5SAndroid Build Coastguard Worker                          size_t pattern_size,
1088*8975f5c5SAndroid Build Coastguard Worker                          size_t size,
1089*8975f5c5SAndroid Build Coastguard Worker                          cl_uint num_events_in_wait_list,
1090*8975f5c5SAndroid Build Coastguard Worker                          const cl_event *event_wait_list,
1091*8975f5c5SAndroid Build Coastguard Worker                          cl_event *event)
1092*8975f5c5SAndroid Build Coastguard Worker {
1093*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(EnqueueSVMMemFill);
1094*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
1095*8975f5c5SAndroid Build Coastguard Worker }
1096*8975f5c5SAndroid Build Coastguard Worker 
EnqueueSVMMap(cl_command_queue command_queue,cl_bool blocking_map,MapFlags flags,void * svm_ptr,size_t size,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)1097*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueSVMMap(cl_command_queue command_queue,
1098*8975f5c5SAndroid Build Coastguard Worker                      cl_bool blocking_map,
1099*8975f5c5SAndroid Build Coastguard Worker                      MapFlags flags,
1100*8975f5c5SAndroid Build Coastguard Worker                      void *svm_ptr,
1101*8975f5c5SAndroid Build Coastguard Worker                      size_t size,
1102*8975f5c5SAndroid Build Coastguard Worker                      cl_uint num_events_in_wait_list,
1103*8975f5c5SAndroid Build Coastguard Worker                      const cl_event *event_wait_list,
1104*8975f5c5SAndroid Build Coastguard Worker                      cl_event *event)
1105*8975f5c5SAndroid Build Coastguard Worker {
1106*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(EnqueueSVMMap);
1107*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
1108*8975f5c5SAndroid Build Coastguard Worker }
1109*8975f5c5SAndroid Build Coastguard Worker 
EnqueueSVMUnmap(cl_command_queue command_queue,void * svm_ptr,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)1110*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueSVMUnmap(cl_command_queue command_queue,
1111*8975f5c5SAndroid Build Coastguard Worker                        void *svm_ptr,
1112*8975f5c5SAndroid Build Coastguard Worker                        cl_uint num_events_in_wait_list,
1113*8975f5c5SAndroid Build Coastguard Worker                        const cl_event *event_wait_list,
1114*8975f5c5SAndroid Build Coastguard Worker                        cl_event *event)
1115*8975f5c5SAndroid Build Coastguard Worker {
1116*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(EnqueueSVMUnmap);
1117*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
1118*8975f5c5SAndroid Build Coastguard Worker }
1119*8975f5c5SAndroid Build Coastguard Worker 
EnqueueSVMMigrateMem(cl_command_queue command_queue,cl_uint num_svm_pointers,const void ** svm_pointers,const size_t * sizes,MemMigrationFlags flags,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)1120*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueSVMMigrateMem(cl_command_queue command_queue,
1121*8975f5c5SAndroid Build Coastguard Worker                             cl_uint num_svm_pointers,
1122*8975f5c5SAndroid Build Coastguard Worker                             const void **svm_pointers,
1123*8975f5c5SAndroid Build Coastguard Worker                             const size_t *sizes,
1124*8975f5c5SAndroid Build Coastguard Worker                             MemMigrationFlags flags,
1125*8975f5c5SAndroid Build Coastguard Worker                             cl_uint num_events_in_wait_list,
1126*8975f5c5SAndroid Build Coastguard Worker                             const cl_event *event_wait_list,
1127*8975f5c5SAndroid Build Coastguard Worker                             cl_event *event)
1128*8975f5c5SAndroid Build Coastguard Worker {
1129*8975f5c5SAndroid Build Coastguard Worker     WARN_NOT_SUPPORTED(EnqueueSVMMigrateMem);
1130*8975f5c5SAndroid Build Coastguard Worker     return CL_INVALID_OPERATION;
1131*8975f5c5SAndroid Build Coastguard Worker }
1132*8975f5c5SAndroid Build Coastguard Worker 
GetExtensionFunctionAddressForPlatform(cl_platform_id platform,const char * func_name)1133*8975f5c5SAndroid Build Coastguard Worker void *GetExtensionFunctionAddressForPlatform(cl_platform_id platform, const char *func_name)
1134*8975f5c5SAndroid Build Coastguard Worker {
1135*8975f5c5SAndroid Build Coastguard Worker     return GetExtensionFunctionAddress(func_name);
1136*8975f5c5SAndroid Build Coastguard Worker }
1137*8975f5c5SAndroid Build Coastguard Worker 
SetCommandQueueProperty(cl_command_queue command_queue,CommandQueueProperties properties,cl_bool enable,cl_command_queue_properties * old_properties)1138*8975f5c5SAndroid Build Coastguard Worker cl_int SetCommandQueueProperty(cl_command_queue command_queue,
1139*8975f5c5SAndroid Build Coastguard Worker                                CommandQueueProperties properties,
1140*8975f5c5SAndroid Build Coastguard Worker                                cl_bool enable,
1141*8975f5c5SAndroid Build Coastguard Worker                                cl_command_queue_properties *old_properties)
1142*8975f5c5SAndroid Build Coastguard Worker {
1143*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(
1144*8975f5c5SAndroid Build Coastguard Worker         command_queue->cast<CommandQueue>().setProperty(properties, enable, old_properties));
1145*8975f5c5SAndroid Build Coastguard Worker }
1146*8975f5c5SAndroid Build Coastguard Worker 
CreateImage2D(cl_context context,MemFlags flags,const cl_image_format * image_format,size_t image_width,size_t image_height,size_t image_row_pitch,void * host_ptr)1147*8975f5c5SAndroid Build Coastguard Worker cl_mem CreateImage2D(cl_context context,
1148*8975f5c5SAndroid Build Coastguard Worker                      MemFlags flags,
1149*8975f5c5SAndroid Build Coastguard Worker                      const cl_image_format *image_format,
1150*8975f5c5SAndroid Build Coastguard Worker                      size_t image_width,
1151*8975f5c5SAndroid Build Coastguard Worker                      size_t image_height,
1152*8975f5c5SAndroid Build Coastguard Worker                      size_t image_row_pitch,
1153*8975f5c5SAndroid Build Coastguard Worker                      void *host_ptr)
1154*8975f5c5SAndroid Build Coastguard Worker {
1155*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createImage2D(flags, image_format, image_width,
1156*8975f5c5SAndroid Build Coastguard Worker                                                          image_height, image_row_pitch, host_ptr));
1157*8975f5c5SAndroid Build Coastguard Worker }
1158*8975f5c5SAndroid Build Coastguard Worker 
CreateImage3D(cl_context context,MemFlags flags,const cl_image_format * image_format,size_t image_width,size_t image_height,size_t image_depth,size_t image_row_pitch,size_t image_slice_pitch,void * host_ptr)1159*8975f5c5SAndroid Build Coastguard Worker cl_mem CreateImage3D(cl_context context,
1160*8975f5c5SAndroid Build Coastguard Worker                      MemFlags flags,
1161*8975f5c5SAndroid Build Coastguard Worker                      const cl_image_format *image_format,
1162*8975f5c5SAndroid Build Coastguard Worker                      size_t image_width,
1163*8975f5c5SAndroid Build Coastguard Worker                      size_t image_height,
1164*8975f5c5SAndroid Build Coastguard Worker                      size_t image_depth,
1165*8975f5c5SAndroid Build Coastguard Worker                      size_t image_row_pitch,
1166*8975f5c5SAndroid Build Coastguard Worker                      size_t image_slice_pitch,
1167*8975f5c5SAndroid Build Coastguard Worker                      void *host_ptr)
1168*8975f5c5SAndroid Build Coastguard Worker {
1169*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createImage3D(flags, image_format, image_width,
1170*8975f5c5SAndroid Build Coastguard Worker                                                          image_height, image_depth, image_row_pitch,
1171*8975f5c5SAndroid Build Coastguard Worker                                                          image_slice_pitch, host_ptr));
1172*8975f5c5SAndroid Build Coastguard Worker }
1173*8975f5c5SAndroid Build Coastguard Worker 
EnqueueMarker(cl_command_queue command_queue,cl_event * event)1174*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueMarker(cl_command_queue command_queue, cl_event *event)
1175*8975f5c5SAndroid Build Coastguard Worker {
1176*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueMarker(event));
1177*8975f5c5SAndroid Build Coastguard Worker }
1178*8975f5c5SAndroid Build Coastguard Worker 
EnqueueWaitForEvents(cl_command_queue command_queue,cl_uint num_events,const cl_event * event_list)1179*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueWaitForEvents(cl_command_queue command_queue,
1180*8975f5c5SAndroid Build Coastguard Worker                             cl_uint num_events,
1181*8975f5c5SAndroid Build Coastguard Worker                             const cl_event *event_list)
1182*8975f5c5SAndroid Build Coastguard Worker {
1183*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(
1184*8975f5c5SAndroid Build Coastguard Worker         command_queue->cast<CommandQueue>().enqueueWaitForEvents(num_events, event_list));
1185*8975f5c5SAndroid Build Coastguard Worker }
1186*8975f5c5SAndroid Build Coastguard Worker 
EnqueueBarrier(cl_command_queue command_queue)1187*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueBarrier(cl_command_queue command_queue)
1188*8975f5c5SAndroid Build Coastguard Worker {
1189*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(IsError(command_queue->cast<CommandQueue>().enqueueBarrier()));
1190*8975f5c5SAndroid Build Coastguard Worker }
1191*8975f5c5SAndroid Build Coastguard Worker 
UnloadCompiler()1192*8975f5c5SAndroid Build Coastguard Worker cl_int UnloadCompiler()
1193*8975f5c5SAndroid Build Coastguard Worker {
1194*8975f5c5SAndroid Build Coastguard Worker     Platform *const platform = Platform::GetDefault();
1195*8975f5c5SAndroid Build Coastguard Worker     if (platform == nullptr)
1196*8975f5c5SAndroid Build Coastguard Worker     {
1197*8975f5c5SAndroid Build Coastguard Worker         return CL_SUCCESS;
1198*8975f5c5SAndroid Build Coastguard Worker     }
1199*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(platform->unloadCompiler());
1200*8975f5c5SAndroid Build Coastguard Worker }
1201*8975f5c5SAndroid Build Coastguard Worker 
GetExtensionFunctionAddress(const char * func_name)1202*8975f5c5SAndroid Build Coastguard Worker void *GetExtensionFunctionAddress(const char *func_name)
1203*8975f5c5SAndroid Build Coastguard Worker {
1204*8975f5c5SAndroid Build Coastguard Worker     if (func_name == nullptr)
1205*8975f5c5SAndroid Build Coastguard Worker     {
1206*8975f5c5SAndroid Build Coastguard Worker         return nullptr;
1207*8975f5c5SAndroid Build Coastguard Worker     }
1208*8975f5c5SAndroid Build Coastguard Worker     const ProcTable &procTable = GetProcTable();
1209*8975f5c5SAndroid Build Coastguard Worker     const auto it              = procTable.find(func_name);
1210*8975f5c5SAndroid Build Coastguard Worker     return it != procTable.cend() ? it->second : nullptr;
1211*8975f5c5SAndroid Build Coastguard Worker }
1212*8975f5c5SAndroid Build Coastguard Worker 
CreateCommandQueue(cl_context context,cl_device_id device,CommandQueueProperties properties)1213*8975f5c5SAndroid Build Coastguard Worker cl_command_queue CreateCommandQueue(cl_context context,
1214*8975f5c5SAndroid Build Coastguard Worker                                     cl_device_id device,
1215*8975f5c5SAndroid Build Coastguard Worker                                     CommandQueueProperties properties)
1216*8975f5c5SAndroid Build Coastguard Worker {
1217*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(context->cast<Context>().createCommandQueue(device, properties));
1218*8975f5c5SAndroid Build Coastguard Worker }
1219*8975f5c5SAndroid Build Coastguard Worker 
CreateSampler(cl_context context,cl_bool normalized_coords,AddressingMode addressing_mode,FilterMode filter_mode)1220*8975f5c5SAndroid Build Coastguard Worker cl_sampler CreateSampler(cl_context context,
1221*8975f5c5SAndroid Build Coastguard Worker                          cl_bool normalized_coords,
1222*8975f5c5SAndroid Build Coastguard Worker                          AddressingMode addressing_mode,
1223*8975f5c5SAndroid Build Coastguard Worker                          FilterMode filter_mode)
1224*8975f5c5SAndroid Build Coastguard Worker {
1225*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_OBJ(
1226*8975f5c5SAndroid Build Coastguard Worker         context->cast<Context>().createSampler(normalized_coords, addressing_mode, filter_mode));
1227*8975f5c5SAndroid Build Coastguard Worker }
1228*8975f5c5SAndroid Build Coastguard Worker 
EnqueueTask(cl_command_queue command_queue,cl_kernel kernel,cl_uint num_events_in_wait_list,const cl_event * event_wait_list,cl_event * event)1229*8975f5c5SAndroid Build Coastguard Worker cl_int EnqueueTask(cl_command_queue command_queue,
1230*8975f5c5SAndroid Build Coastguard Worker                    cl_kernel kernel,
1231*8975f5c5SAndroid Build Coastguard Worker                    cl_uint num_events_in_wait_list,
1232*8975f5c5SAndroid Build Coastguard Worker                    const cl_event *event_wait_list,
1233*8975f5c5SAndroid Build Coastguard Worker                    cl_event *event)
1234*8975f5c5SAndroid Build Coastguard Worker {
1235*8975f5c5SAndroid Build Coastguard Worker     CL_RETURN_ERROR(command_queue->cast<CommandQueue>().enqueueTask(kernel, num_events_in_wait_list,
1236*8975f5c5SAndroid Build Coastguard Worker                                                                     event_wait_list, event));
1237*8975f5c5SAndroid Build Coastguard Worker }
1238*8975f5c5SAndroid Build Coastguard Worker 
1239*8975f5c5SAndroid Build Coastguard Worker }  // namespace cl
1240