1*1cddb830SAndroid Build Coastguard Worker<% 2*1cddb830SAndroid Build Coastguard Worker# APIs to skip - they need to be done "manually": 3*1cddb830SAndroid Build Coastguard Workerapiskip = { 4*1cddb830SAndroid Build Coastguard Worker 'clGetPlatformIDs', # to query platforms 5*1cddb830SAndroid Build Coastguard Worker 'clGetExtensionFunctionAddress', # to return ICD-aware extensions 6*1cddb830SAndroid Build Coastguard Worker 'clGetExtensionFunctionAddressForPlatform', # to return ICD-aware extensions 7*1cddb830SAndroid Build Coastguard Worker } 8*1cddb830SAndroid Build Coastguard Worker 9*1cddb830SAndroid Build Coastguard Workerapiinit = { 10*1cddb830SAndroid Build Coastguard Worker 'clCreateContextFromType', 11*1cddb830SAndroid Build Coastguard Worker 'clGetGLContextInfoKHR', 12*1cddb830SAndroid Build Coastguard Worker } 13*1cddb830SAndroid Build Coastguard Worker# Handles, and mappings to errors when handles are invalid: 14*1cddb830SAndroid Build Coastguard Workerapihandles = { 15*1cddb830SAndroid Build Coastguard Worker 'cl_command_queue' : 'CL_INVALID_COMMAND_QUEUE', 16*1cddb830SAndroid Build Coastguard Worker 'cl_context' : 'CL_INVALID_CONTEXT', 17*1cddb830SAndroid Build Coastguard Worker 'cl_device_id' : 'CL_INVALID_DEVICE', 18*1cddb830SAndroid Build Coastguard Worker 'cl_event' : 'CL_INVALID_EVENT', 19*1cddb830SAndroid Build Coastguard Worker 'cl_kernel' : 'CL_INVALID_KERNEL', 20*1cddb830SAndroid Build Coastguard Worker 'cl_mem' : 'CL_INVALID_MEM_OBJECT', 21*1cddb830SAndroid Build Coastguard Worker 'cl_platform_id' : 'CL_INVALID_PLATFORM', 22*1cddb830SAndroid Build Coastguard Worker 'cl_program' : 'CL_INVALID_PROGRAM', 23*1cddb830SAndroid Build Coastguard Worker 'cl_sampler' : 'CL_INVALID_SAMPLER', 24*1cddb830SAndroid Build Coastguard Worker } 25*1cddb830SAndroid Build Coastguard Worker%>/* 26*1cddb830SAndroid Build Coastguard Worker * Copyright (c) 2012-2023 The Khronos Group Inc. 27*1cddb830SAndroid Build Coastguard Worker * 28*1cddb830SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 29*1cddb830SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 30*1cddb830SAndroid Build Coastguard Worker * You may obtain a copy of the License at 31*1cddb830SAndroid Build Coastguard Worker * 32*1cddb830SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 33*1cddb830SAndroid Build Coastguard Worker * 34*1cddb830SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 35*1cddb830SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 36*1cddb830SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 37*1cddb830SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 38*1cddb830SAndroid Build Coastguard Worker * limitations under the License. 39*1cddb830SAndroid Build Coastguard Worker * 40*1cddb830SAndroid Build Coastguard Worker * OpenCL is a trademark of Apple Inc. used under license by Khronos. 41*1cddb830SAndroid Build Coastguard Worker */ 42*1cddb830SAndroid Build Coastguard Worker 43*1cddb830SAndroid Build Coastguard Worker#include "icd.h" 44*1cddb830SAndroid Build Coastguard Worker#include "icd_dispatch.h" 45*1cddb830SAndroid Build Coastguard Worker 46*1cddb830SAndroid Build Coastguard Worker#ifdef __cplusplus 47*1cddb830SAndroid Build Coastguard Workerextern "C" { 48*1cddb830SAndroid Build Coastguard Worker#endif 49*1cddb830SAndroid Build Coastguard Worker 50*1cddb830SAndroid Build Coastguard Worker/////////////////////////////////////////////////////////////////////////////// 51*1cddb830SAndroid Build Coastguard Worker// Core APIs: 52*1cddb830SAndroid Build Coastguard Worker%for apis in coreapis.values(): 53*1cddb830SAndroid Build Coastguard Worker%for api in apis: 54*1cddb830SAndroid Build Coastguard Worker%if not api.Name in apiskip: 55*1cddb830SAndroid Build Coastguard Worker<% 56*1cddb830SAndroid Build Coastguard Worker handle = api.Params[0] 57*1cddb830SAndroid Build Coastguard Worker if handle.Type in apihandles: 58*1cddb830SAndroid Build Coastguard Worker invalid = apihandles[handle.Type] 59*1cddb830SAndroid Build Coastguard Worker else: 60*1cddb830SAndroid Build Coastguard Worker invalid = 'NULL' 61*1cddb830SAndroid Build Coastguard Worker%> 62*1cddb830SAndroid Build Coastguard Worker%for disp in [0, 1]: 63*1cddb830SAndroid Build Coastguard Worker% if disp == 1: 64*1cddb830SAndroid Build Coastguard Worker#if defined(CL_ENABLE_LAYERS) 65*1cddb830SAndroid Build Coastguard Worker% endif 66*1cddb830SAndroid Build Coastguard Worker${("CL_API_ENTRY", "static")[disp]} ${api.RetType} CL_API_CALL ${api.Name + ("", "_disp")[disp]}( 67*1cddb830SAndroid Build Coastguard Worker%for i, param in enumerate(api.Params): 68*1cddb830SAndroid Build Coastguard Worker% if i < len(api.Params)-1: 69*1cddb830SAndroid Build Coastguard Worker ${param.Type} ${param.Name}${param.TypeEnd}, 70*1cddb830SAndroid Build Coastguard Worker% else: 71*1cddb830SAndroid Build Coastguard Worker ${param.Type} ${param.Name}${param.TypeEnd}) 72*1cddb830SAndroid Build Coastguard Worker% endif 73*1cddb830SAndroid Build Coastguard Worker%endfor 74*1cddb830SAndroid Build Coastguard Worker{ 75*1cddb830SAndroid Build Coastguard Worker%if api.Name in apiinit: 76*1cddb830SAndroid Build Coastguard Worker khrIcdInitialize(); 77*1cddb830SAndroid Build Coastguard Worker%endif 78*1cddb830SAndroid Build Coastguard Worker%if disp == 0: 79*1cddb830SAndroid Build Coastguard Worker#if defined(CL_ENABLE_LAYERS) 80*1cddb830SAndroid Build Coastguard Worker if (khrFirstLayer) 81*1cddb830SAndroid Build Coastguard Worker% if api.Name == "clSVMFree": 82*1cddb830SAndroid Build Coastguard Worker { 83*1cddb830SAndroid Build Coastguard Worker khrFirstLayer->dispatch.${api.Name}( 84*1cddb830SAndroid Build Coastguard Worker% else: 85*1cddb830SAndroid Build Coastguard Worker return khrFirstLayer->dispatch.${api.Name}( 86*1cddb830SAndroid Build Coastguard Worker% endif 87*1cddb830SAndroid Build Coastguard Worker%for i, param in enumerate(api.Params): 88*1cddb830SAndroid Build Coastguard Worker% if i < len(api.Params)-1: 89*1cddb830SAndroid Build Coastguard Worker ${param.Name}, 90*1cddb830SAndroid Build Coastguard Worker% else: 91*1cddb830SAndroid Build Coastguard Worker ${param.Name}); 92*1cddb830SAndroid Build Coastguard Worker% endif 93*1cddb830SAndroid Build Coastguard Worker%endfor 94*1cddb830SAndroid Build Coastguard Worker% if api.Name == "clSVMFree": 95*1cddb830SAndroid Build Coastguard Worker } 96*1cddb830SAndroid Build Coastguard Worker else 97*1cddb830SAndroid Build Coastguard Worker% endif 98*1cddb830SAndroid Build Coastguard Worker#endif // defined(CL_ENABLE_LAYERS) 99*1cddb830SAndroid Build Coastguard Worker%endif 100*1cddb830SAndroid Build Coastguard Worker%if api.RetType in apihandles or api.RetType == "void*": 101*1cddb830SAndroid Build Coastguard Worker## clCreateContext is a special case, since it calls through 102*1cddb830SAndroid Build Coastguard Worker## the dispatch table via the first "device": 103*1cddb830SAndroid Build Coastguard Worker% if api.Name == "clCreateContext": 104*1cddb830SAndroid Build Coastguard Worker if (${api.Params[1].Name} == 0 || ${api.Params[2].Name} == NULL) { 105*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(NULL, CL_INVALID_VALUE); 106*1cddb830SAndroid Build Coastguard Worker } 107*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(${api.Params[2].Name}[0], CL_INVALID_DEVICE); 108*1cddb830SAndroid Build Coastguard Worker## clCreateContextFromType is a special case, since it calls 109*1cddb830SAndroid Build Coastguard Worker## through a platform passed via properties: 110*1cddb830SAndroid Build Coastguard Worker% elif api.Name == "clCreateContextFromType": 111*1cddb830SAndroid Build Coastguard Worker cl_platform_id platform = NULL; 112*1cddb830SAndroid Build Coastguard Worker khrIcdContextPropertiesGetPlatform(properties, &platform); 113*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(platform, CL_INVALID_PLATFORM); 114*1cddb830SAndroid Build Coastguard Worker## These APIs are special cases because they return a void*, but 115*1cddb830SAndroid Build Coastguard Worker## do not nave an errcode_ret: 116*1cddb830SAndroid Build Coastguard Worker% elif api.Name == "clSVMAlloc" or api.Name == "clGetExtensionFunctionAddressForPlatform": 117*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(${handle.Name}, NULL); 118*1cddb830SAndroid Build Coastguard Worker% else: 119*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(${handle.Name}, ${invalid}); 120*1cddb830SAndroid Build Coastguard Worker% endif 121*1cddb830SAndroid Build Coastguard Worker%elif api.Name == "clSVMFree": 122*1cddb830SAndroid Build Coastguard Worker## clSVMFree has no return value or errcode_ret: 123*1cddb830SAndroid Build Coastguard Worker if (${handle.Name} != NULL) 124*1cddb830SAndroid Build Coastguard Worker## clWaitForEvents is a special case, since it calls through 125*1cddb830SAndroid Build Coastguard Worker## the dispatch table via the first "event": 126*1cddb830SAndroid Build Coastguard Worker%elif api.Name == "clWaitForEvents": 127*1cddb830SAndroid Build Coastguard Worker if (${api.Params[0].Name} == 0 || ${api.Params[1].Name} == NULL) { 128*1cddb830SAndroid Build Coastguard Worker return CL_INVALID_VALUE; 129*1cddb830SAndroid Build Coastguard Worker } 130*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(${api.Params[1].Name}[0], CL_INVALID_EVENT); 131*1cddb830SAndroid Build Coastguard Worker%elif api.Name == "clUnloadCompiler": 132*1cddb830SAndroid Build Coastguard Worker // Nothing! 133*1cddb830SAndroid Build Coastguard Worker%else: 134*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(${handle.Name}, ${invalid}); 135*1cddb830SAndroid Build Coastguard Worker%endif 136*1cddb830SAndroid Build Coastguard Worker%if api.Name == "clCreateContext": 137*1cddb830SAndroid Build Coastguard Worker return ${api.Params[2].Name}[0]->dispatch->${api.Name}( 138*1cddb830SAndroid Build Coastguard Worker%elif api.Name == "clWaitForEvents": 139*1cddb830SAndroid Build Coastguard Worker return ${api.Params[1].Name}[0]->dispatch->${api.Name}( 140*1cddb830SAndroid Build Coastguard Worker%elif api.Name == "clCreateContextFromType": 141*1cddb830SAndroid Build Coastguard Worker return platform->dispatch->${api.Name}( 142*1cddb830SAndroid Build Coastguard Worker%elif api.Name == "clSVMFree": 143*1cddb830SAndroid Build Coastguard Worker ${handle.Name}->dispatch->${api.Name}( 144*1cddb830SAndroid Build Coastguard Worker%elif api.Name == "clUnloadCompiler": 145*1cddb830SAndroid Build Coastguard Worker return CL_SUCCESS; 146*1cddb830SAndroid Build Coastguard Worker%else: 147*1cddb830SAndroid Build Coastguard Worker return ${handle.Name}->dispatch->${api.Name}( 148*1cddb830SAndroid Build Coastguard Worker%endif: 149*1cddb830SAndroid Build Coastguard Worker%for i, param in enumerate(api.Params): 150*1cddb830SAndroid Build Coastguard Worker% if i < len(api.Params)-1: 151*1cddb830SAndroid Build Coastguard Worker ${param.Name}, 152*1cddb830SAndroid Build Coastguard Worker% elif param.Name: # for clUnloadCompiler 153*1cddb830SAndroid Build Coastguard Worker ${param.Name}); 154*1cddb830SAndroid Build Coastguard Worker% endif 155*1cddb830SAndroid Build Coastguard Worker%endfor 156*1cddb830SAndroid Build Coastguard Worker} 157*1cddb830SAndroid Build Coastguard Worker% if disp == 1: 158*1cddb830SAndroid Build Coastguard Worker#endif // defined(CL_ENABLE_LAYERS) 159*1cddb830SAndroid Build Coastguard Worker% endif 160*1cddb830SAndroid Build Coastguard Worker 161*1cddb830SAndroid Build Coastguard Worker/////////////////////////////////////////////////////////////////////////////// 162*1cddb830SAndroid Build Coastguard Worker%endfor 163*1cddb830SAndroid Build Coastguard Worker%else: 164*1cddb830SAndroid Build Coastguard Worker#if defined(CL_ENABLE_LAYERS) 165*1cddb830SAndroid Build Coastguard Workerextern ${api.RetType} CL_API_CALL ${api.Name + "_disp"}( 166*1cddb830SAndroid Build Coastguard Worker%for i, param in enumerate(api.Params): 167*1cddb830SAndroid Build Coastguard Worker% if i < len(api.Params)-1: 168*1cddb830SAndroid Build Coastguard Worker ${param.Type} ${param.Name}${param.TypeEnd}, 169*1cddb830SAndroid Build Coastguard Worker% else: 170*1cddb830SAndroid Build Coastguard Worker ${param.Type} ${param.Name}${param.TypeEnd}) ${api.Suffix}; 171*1cddb830SAndroid Build Coastguard Worker% endif 172*1cddb830SAndroid Build Coastguard Worker%endfor 173*1cddb830SAndroid Build Coastguard Worker#endif // defined(CL_ENABLE_LAYERS) 174*1cddb830SAndroid Build Coastguard Worker%endif 175*1cddb830SAndroid Build Coastguard Worker%endfor 176*1cddb830SAndroid Build Coastguard Worker%endfor 177*1cddb830SAndroid Build Coastguard Worker<% 178*1cddb830SAndroid Build Coastguard Workericdextensions = [ 179*1cddb830SAndroid Build Coastguard Worker 'cl_ext_device_fission', 180*1cddb830SAndroid Build Coastguard Worker 'cl_khr_d3d10_sharing', 181*1cddb830SAndroid Build Coastguard Worker 'cl_khr_d3d11_sharing', 182*1cddb830SAndroid Build Coastguard Worker 'cl_khr_dx9_media_sharing', 183*1cddb830SAndroid Build Coastguard Worker 'cl_khr_egl_event', 184*1cddb830SAndroid Build Coastguard Worker 'cl_khr_egl_image', 185*1cddb830SAndroid Build Coastguard Worker 'cl_khr_gl_event', 186*1cddb830SAndroid Build Coastguard Worker 'cl_khr_gl_sharing', 187*1cddb830SAndroid Build Coastguard Worker 'cl_khr_subgroups' 188*1cddb830SAndroid Build Coastguard Worker ] 189*1cddb830SAndroid Build Coastguard Workerwin32extensions = { 190*1cddb830SAndroid Build Coastguard Worker 'cl_khr_d3d10_sharing', 191*1cddb830SAndroid Build Coastguard Worker 'cl_khr_d3d11_sharing', 192*1cddb830SAndroid Build Coastguard Worker 'cl_khr_dx9_media_sharing', 193*1cddb830SAndroid Build Coastguard Worker } 194*1cddb830SAndroid Build Coastguard Worker%> 195*1cddb830SAndroid Build Coastguard Worker%for extension in icdextensions: 196*1cddb830SAndroid Build Coastguard Worker<% 197*1cddb830SAndroid Build Coastguard Worker apis = extapis[extension] 198*1cddb830SAndroid Build Coastguard Worker%>// ${extension} 199*1cddb830SAndroid Build Coastguard Worker%if extension in win32extensions: 200*1cddb830SAndroid Build Coastguard Worker 201*1cddb830SAndroid Build Coastguard Worker#if defined(_WIN32) 202*1cddb830SAndroid Build Coastguard Worker%endif 203*1cddb830SAndroid Build Coastguard Worker%for api in apis: 204*1cddb830SAndroid Build Coastguard Worker<% 205*1cddb830SAndroid Build Coastguard Worker handle = api.Params[0] 206*1cddb830SAndroid Build Coastguard Worker if handle.Type in apihandles: 207*1cddb830SAndroid Build Coastguard Worker invalid = apihandles[handle.Type] 208*1cddb830SAndroid Build Coastguard Worker else: 209*1cddb830SAndroid Build Coastguard Worker invalid = 'NULL' 210*1cddb830SAndroid Build Coastguard Worker%> 211*1cddb830SAndroid Build Coastguard Worker%for disp in [0, 1]: 212*1cddb830SAndroid Build Coastguard Worker% if disp == 1: 213*1cddb830SAndroid Build Coastguard Worker#if defined(CL_ENABLE_LAYERS) 214*1cddb830SAndroid Build Coastguard Worker% endif 215*1cddb830SAndroid Build Coastguard Worker${("CL_API_ENTRY", "static")[disp]} ${api.RetType} CL_API_CALL ${api.Name + ("", "_disp")[disp]}( 216*1cddb830SAndroid Build Coastguard Worker%for i, param in enumerate(api.Params): 217*1cddb830SAndroid Build Coastguard Worker% if i < len(api.Params)-1: 218*1cddb830SAndroid Build Coastguard Worker ${param.Type} ${param.Name}${param.TypeEnd}, 219*1cddb830SAndroid Build Coastguard Worker% else: 220*1cddb830SAndroid Build Coastguard Worker ${param.Type} ${param.Name}${param.TypeEnd}) 221*1cddb830SAndroid Build Coastguard Worker% endif 222*1cddb830SAndroid Build Coastguard Worker%endfor 223*1cddb830SAndroid Build Coastguard Worker{ 224*1cddb830SAndroid Build Coastguard Worker%if disp == 0: 225*1cddb830SAndroid Build Coastguard Worker#if defined(CL_ENABLE_LAYERS) 226*1cddb830SAndroid Build Coastguard Worker if (khrFirstLayer) 227*1cddb830SAndroid Build Coastguard Worker return khrFirstLayer->dispatch.${api.Name}( 228*1cddb830SAndroid Build Coastguard Worker%for i, param in enumerate(api.Params): 229*1cddb830SAndroid Build Coastguard Worker% if i < len(api.Params)-1: 230*1cddb830SAndroid Build Coastguard Worker ${param.Name}, 231*1cddb830SAndroid Build Coastguard Worker% else: 232*1cddb830SAndroid Build Coastguard Worker ${param.Name}); 233*1cddb830SAndroid Build Coastguard Worker% endif 234*1cddb830SAndroid Build Coastguard Worker%endfor 235*1cddb830SAndroid Build Coastguard Worker#endif // defined(CL_ENABLE_LAYERS) 236*1cddb830SAndroid Build Coastguard Worker%endif 237*1cddb830SAndroid Build Coastguard Worker%if api.RetType in apihandles or api.RetType == "void*": 238*1cddb830SAndroid Build Coastguard Worker% if False: 239*1cddb830SAndroid Build Coastguard Worker // api.Name == "clXXX": # There are currently no API special cases here. 240*1cddb830SAndroid Build Coastguard Worker% else: 241*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(${handle.Name}, ${invalid}); 242*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_POINTER_RETURN_HANDLE(${handle.Name}->dispatch->${api.Name}); 243*1cddb830SAndroid Build Coastguard Worker% endif 244*1cddb830SAndroid Build Coastguard Worker%else: 245*1cddb830SAndroid Build Coastguard Worker% if api.Name == "clGetGLContextInfoKHR": 246*1cddb830SAndroid Build Coastguard Worker cl_platform_id platform = NULL; 247*1cddb830SAndroid Build Coastguard Worker khrIcdContextPropertiesGetPlatform(properties, &platform); 248*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); 249*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_POINTER_RETURN_ERROR(platform->dispatch->${api.Name}); 250*1cddb830SAndroid Build Coastguard Worker% else: 251*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(${handle.Name}, ${invalid}); 252*1cddb830SAndroid Build Coastguard Worker KHR_ICD_VALIDATE_POINTER_RETURN_ERROR(${handle.Name}->dispatch->${api.Name}); 253*1cddb830SAndroid Build Coastguard Worker% endif 254*1cddb830SAndroid Build Coastguard Worker%endif 255*1cddb830SAndroid Build Coastguard Worker%if api.Name == "clGetGLContextInfoKHR": 256*1cddb830SAndroid Build Coastguard Worker return platform->dispatch->${api.Name}( 257*1cddb830SAndroid Build Coastguard Worker%else: 258*1cddb830SAndroid Build Coastguard Worker return ${handle.Name}->dispatch->${api.Name}( 259*1cddb830SAndroid Build Coastguard Worker%endif 260*1cddb830SAndroid Build Coastguard Worker%for i, param in enumerate(api.Params): 261*1cddb830SAndroid Build Coastguard Worker% if i < len(api.Params)-1: 262*1cddb830SAndroid Build Coastguard Worker ${param.Name}, 263*1cddb830SAndroid Build Coastguard Worker% elif param.Name: # for clUnloadCompiler 264*1cddb830SAndroid Build Coastguard Worker ${param.Name}); 265*1cddb830SAndroid Build Coastguard Worker% endif 266*1cddb830SAndroid Build Coastguard Worker%endfor 267*1cddb830SAndroid Build Coastguard Worker} 268*1cddb830SAndroid Build Coastguard Worker% if disp == 1: 269*1cddb830SAndroid Build Coastguard Worker#endif // defined(CL_ENABLE_LAYERS) 270*1cddb830SAndroid Build Coastguard Worker% endif 271*1cddb830SAndroid Build Coastguard Worker%endfor 272*1cddb830SAndroid Build Coastguard Worker%endfor 273*1cddb830SAndroid Build Coastguard Worker 274*1cddb830SAndroid Build Coastguard Worker%if extension in win32extensions: 275*1cddb830SAndroid Build Coastguard Worker#endif // defined(_WIN32) 276*1cddb830SAndroid Build Coastguard Worker 277*1cddb830SAndroid Build Coastguard Worker%endif 278*1cddb830SAndroid Build Coastguard Worker/////////////////////////////////////////////////////////////////////////////// 279*1cddb830SAndroid Build Coastguard Worker 280*1cddb830SAndroid Build Coastguard Worker%endfor 281*1cddb830SAndroid Build Coastguard Worker#if defined(CL_ENABLE_LAYERS) 282*1cddb830SAndroid Build Coastguard Workerstruct _cl_icd_dispatch khrMasterDispatch = { 283*1cddb830SAndroid Build Coastguard Worker &clGetPlatformIDs_disp, 284*1cddb830SAndroid Build Coastguard Worker &clGetPlatformInfo_disp, 285*1cddb830SAndroid Build Coastguard Worker &clGetDeviceIDs_disp, 286*1cddb830SAndroid Build Coastguard Worker &clGetDeviceInfo_disp, 287*1cddb830SAndroid Build Coastguard Worker &clCreateContext_disp, 288*1cddb830SAndroid Build Coastguard Worker &clCreateContextFromType_disp, 289*1cddb830SAndroid Build Coastguard Worker &clRetainContext_disp, 290*1cddb830SAndroid Build Coastguard Worker &clReleaseContext_disp, 291*1cddb830SAndroid Build Coastguard Worker &clGetContextInfo_disp, 292*1cddb830SAndroid Build Coastguard Worker &clCreateCommandQueue_disp, 293*1cddb830SAndroid Build Coastguard Worker &clRetainCommandQueue_disp, 294*1cddb830SAndroid Build Coastguard Worker &clReleaseCommandQueue_disp, 295*1cddb830SAndroid Build Coastguard Worker &clGetCommandQueueInfo_disp, 296*1cddb830SAndroid Build Coastguard Worker &clSetCommandQueueProperty_disp, 297*1cddb830SAndroid Build Coastguard Worker &clCreateBuffer_disp, 298*1cddb830SAndroid Build Coastguard Worker &clCreateImage2D_disp, 299*1cddb830SAndroid Build Coastguard Worker &clCreateImage3D_disp, 300*1cddb830SAndroid Build Coastguard Worker &clRetainMemObject_disp, 301*1cddb830SAndroid Build Coastguard Worker &clReleaseMemObject_disp, 302*1cddb830SAndroid Build Coastguard Worker &clGetSupportedImageFormats_disp, 303*1cddb830SAndroid Build Coastguard Worker &clGetMemObjectInfo_disp, 304*1cddb830SAndroid Build Coastguard Worker &clGetImageInfo_disp, 305*1cddb830SAndroid Build Coastguard Worker &clCreateSampler_disp, 306*1cddb830SAndroid Build Coastguard Worker &clRetainSampler_disp, 307*1cddb830SAndroid Build Coastguard Worker &clReleaseSampler_disp, 308*1cddb830SAndroid Build Coastguard Worker &clGetSamplerInfo_disp, 309*1cddb830SAndroid Build Coastguard Worker &clCreateProgramWithSource_disp, 310*1cddb830SAndroid Build Coastguard Worker &clCreateProgramWithBinary_disp, 311*1cddb830SAndroid Build Coastguard Worker &clRetainProgram_disp, 312*1cddb830SAndroid Build Coastguard Worker &clReleaseProgram_disp, 313*1cddb830SAndroid Build Coastguard Worker &clBuildProgram_disp, 314*1cddb830SAndroid Build Coastguard Worker &clUnloadCompiler_disp, 315*1cddb830SAndroid Build Coastguard Worker &clGetProgramInfo_disp, 316*1cddb830SAndroid Build Coastguard Worker &clGetProgramBuildInfo_disp, 317*1cddb830SAndroid Build Coastguard Worker &clCreateKernel_disp, 318*1cddb830SAndroid Build Coastguard Worker &clCreateKernelsInProgram_disp, 319*1cddb830SAndroid Build Coastguard Worker &clRetainKernel_disp, 320*1cddb830SAndroid Build Coastguard Worker &clReleaseKernel_disp, 321*1cddb830SAndroid Build Coastguard Worker &clSetKernelArg_disp, 322*1cddb830SAndroid Build Coastguard Worker &clGetKernelInfo_disp, 323*1cddb830SAndroid Build Coastguard Worker &clGetKernelWorkGroupInfo_disp, 324*1cddb830SAndroid Build Coastguard Worker &clWaitForEvents_disp, 325*1cddb830SAndroid Build Coastguard Worker &clGetEventInfo_disp, 326*1cddb830SAndroid Build Coastguard Worker &clRetainEvent_disp, 327*1cddb830SAndroid Build Coastguard Worker &clReleaseEvent_disp, 328*1cddb830SAndroid Build Coastguard Worker &clGetEventProfilingInfo_disp, 329*1cddb830SAndroid Build Coastguard Worker &clFlush_disp, 330*1cddb830SAndroid Build Coastguard Worker &clFinish_disp, 331*1cddb830SAndroid Build Coastguard Worker &clEnqueueReadBuffer_disp, 332*1cddb830SAndroid Build Coastguard Worker &clEnqueueWriteBuffer_disp, 333*1cddb830SAndroid Build Coastguard Worker &clEnqueueCopyBuffer_disp, 334*1cddb830SAndroid Build Coastguard Worker &clEnqueueReadImage_disp, 335*1cddb830SAndroid Build Coastguard Worker &clEnqueueWriteImage_disp, 336*1cddb830SAndroid Build Coastguard Worker &clEnqueueCopyImage_disp, 337*1cddb830SAndroid Build Coastguard Worker &clEnqueueCopyImageToBuffer_disp, 338*1cddb830SAndroid Build Coastguard Worker &clEnqueueCopyBufferToImage_disp, 339*1cddb830SAndroid Build Coastguard Worker &clEnqueueMapBuffer_disp, 340*1cddb830SAndroid Build Coastguard Worker &clEnqueueMapImage_disp, 341*1cddb830SAndroid Build Coastguard Worker &clEnqueueUnmapMemObject_disp, 342*1cddb830SAndroid Build Coastguard Worker &clEnqueueNDRangeKernel_disp, 343*1cddb830SAndroid Build Coastguard Worker &clEnqueueTask_disp, 344*1cddb830SAndroid Build Coastguard Worker &clEnqueueNativeKernel_disp, 345*1cddb830SAndroid Build Coastguard Worker &clEnqueueMarker_disp, 346*1cddb830SAndroid Build Coastguard Worker &clEnqueueWaitForEvents_disp, 347*1cddb830SAndroid Build Coastguard Worker &clEnqueueBarrier_disp, 348*1cddb830SAndroid Build Coastguard Worker &clGetExtensionFunctionAddress_disp, 349*1cddb830SAndroid Build Coastguard Worker &clCreateFromGLBuffer_disp, 350*1cddb830SAndroid Build Coastguard Worker &clCreateFromGLTexture2D_disp, 351*1cddb830SAndroid Build Coastguard Worker &clCreateFromGLTexture3D_disp, 352*1cddb830SAndroid Build Coastguard Worker &clCreateFromGLRenderbuffer_disp, 353*1cddb830SAndroid Build Coastguard Worker &clGetGLObjectInfo_disp, 354*1cddb830SAndroid Build Coastguard Worker &clGetGLTextureInfo_disp, 355*1cddb830SAndroid Build Coastguard Worker &clEnqueueAcquireGLObjects_disp, 356*1cddb830SAndroid Build Coastguard Worker &clEnqueueReleaseGLObjects_disp, 357*1cddb830SAndroid Build Coastguard Worker &clGetGLContextInfoKHR_disp, 358*1cddb830SAndroid Build Coastguard Worker 359*1cddb830SAndroid Build Coastguard Worker /* cl_khr_d3d10_sharing */ 360*1cddb830SAndroid Build Coastguard Worker#if defined(_WIN32) 361*1cddb830SAndroid Build Coastguard Worker &clGetDeviceIDsFromD3D10KHR_disp, 362*1cddb830SAndroid Build Coastguard Worker &clCreateFromD3D10BufferKHR_disp, 363*1cddb830SAndroid Build Coastguard Worker &clCreateFromD3D10Texture2DKHR_disp, 364*1cddb830SAndroid Build Coastguard Worker &clCreateFromD3D10Texture3DKHR_disp, 365*1cddb830SAndroid Build Coastguard Worker &clEnqueueAcquireD3D10ObjectsKHR_disp, 366*1cddb830SAndroid Build Coastguard Worker &clEnqueueReleaseD3D10ObjectsKHR_disp, 367*1cddb830SAndroid Build Coastguard Worker#else 368*1cddb830SAndroid Build Coastguard Worker NULL, 369*1cddb830SAndroid Build Coastguard Worker NULL, 370*1cddb830SAndroid Build Coastguard Worker NULL, 371*1cddb830SAndroid Build Coastguard Worker NULL, 372*1cddb830SAndroid Build Coastguard Worker NULL, 373*1cddb830SAndroid Build Coastguard Worker NULL, 374*1cddb830SAndroid Build Coastguard Worker#endif 375*1cddb830SAndroid Build Coastguard Worker 376*1cddb830SAndroid Build Coastguard Worker /* OpenCL 1.1 */ 377*1cddb830SAndroid Build Coastguard Worker &clSetEventCallback_disp, 378*1cddb830SAndroid Build Coastguard Worker &clCreateSubBuffer_disp, 379*1cddb830SAndroid Build Coastguard Worker &clSetMemObjectDestructorCallback_disp, 380*1cddb830SAndroid Build Coastguard Worker &clCreateUserEvent_disp, 381*1cddb830SAndroid Build Coastguard Worker &clSetUserEventStatus_disp, 382*1cddb830SAndroid Build Coastguard Worker &clEnqueueReadBufferRect_disp, 383*1cddb830SAndroid Build Coastguard Worker &clEnqueueWriteBufferRect_disp, 384*1cddb830SAndroid Build Coastguard Worker &clEnqueueCopyBufferRect_disp, 385*1cddb830SAndroid Build Coastguard Worker 386*1cddb830SAndroid Build Coastguard Worker /* cl_ext_device_fission */ 387*1cddb830SAndroid Build Coastguard Worker &clCreateSubDevicesEXT_disp, 388*1cddb830SAndroid Build Coastguard Worker &clRetainDeviceEXT_disp, 389*1cddb830SAndroid Build Coastguard Worker &clReleaseDeviceEXT_disp, 390*1cddb830SAndroid Build Coastguard Worker 391*1cddb830SAndroid Build Coastguard Worker /* cl_khr_gl_event */ 392*1cddb830SAndroid Build Coastguard Worker &clCreateEventFromGLsyncKHR_disp, 393*1cddb830SAndroid Build Coastguard Worker 394*1cddb830SAndroid Build Coastguard Worker /* OpenCL 1.2 */ 395*1cddb830SAndroid Build Coastguard Worker &clCreateSubDevices_disp, 396*1cddb830SAndroid Build Coastguard Worker &clRetainDevice_disp, 397*1cddb830SAndroid Build Coastguard Worker &clReleaseDevice_disp, 398*1cddb830SAndroid Build Coastguard Worker &clCreateImage_disp, 399*1cddb830SAndroid Build Coastguard Worker &clCreateProgramWithBuiltInKernels_disp, 400*1cddb830SAndroid Build Coastguard Worker &clCompileProgram_disp, 401*1cddb830SAndroid Build Coastguard Worker &clLinkProgram_disp, 402*1cddb830SAndroid Build Coastguard Worker &clUnloadPlatformCompiler_disp, 403*1cddb830SAndroid Build Coastguard Worker &clGetKernelArgInfo_disp, 404*1cddb830SAndroid Build Coastguard Worker &clEnqueueFillBuffer_disp, 405*1cddb830SAndroid Build Coastguard Worker &clEnqueueFillImage_disp, 406*1cddb830SAndroid Build Coastguard Worker &clEnqueueMigrateMemObjects_disp, 407*1cddb830SAndroid Build Coastguard Worker &clEnqueueMarkerWithWaitList_disp, 408*1cddb830SAndroid Build Coastguard Worker &clEnqueueBarrierWithWaitList_disp, 409*1cddb830SAndroid Build Coastguard Worker &clGetExtensionFunctionAddressForPlatform_disp, 410*1cddb830SAndroid Build Coastguard Worker &clCreateFromGLTexture_disp, 411*1cddb830SAndroid Build Coastguard Worker 412*1cddb830SAndroid Build Coastguard Worker /* cl_khr_d3d11_sharing */ 413*1cddb830SAndroid Build Coastguard Worker#if defined(_WIN32) 414*1cddb830SAndroid Build Coastguard Worker &clGetDeviceIDsFromD3D11KHR_disp, 415*1cddb830SAndroid Build Coastguard Worker &clCreateFromD3D11BufferKHR_disp, 416*1cddb830SAndroid Build Coastguard Worker &clCreateFromD3D11Texture2DKHR_disp, 417*1cddb830SAndroid Build Coastguard Worker &clCreateFromD3D11Texture3DKHR_disp, 418*1cddb830SAndroid Build Coastguard Worker &clCreateFromDX9MediaSurfaceKHR_disp, 419*1cddb830SAndroid Build Coastguard Worker &clEnqueueAcquireD3D11ObjectsKHR_disp, 420*1cddb830SAndroid Build Coastguard Worker &clEnqueueReleaseD3D11ObjectsKHR_disp, 421*1cddb830SAndroid Build Coastguard Worker#else 422*1cddb830SAndroid Build Coastguard Worker NULL, 423*1cddb830SAndroid Build Coastguard Worker NULL, 424*1cddb830SAndroid Build Coastguard Worker NULL, 425*1cddb830SAndroid Build Coastguard Worker NULL, 426*1cddb830SAndroid Build Coastguard Worker NULL, 427*1cddb830SAndroid Build Coastguard Worker NULL, 428*1cddb830SAndroid Build Coastguard Worker NULL, 429*1cddb830SAndroid Build Coastguard Worker#endif 430*1cddb830SAndroid Build Coastguard Worker 431*1cddb830SAndroid Build Coastguard Worker /* cl_khr_dx9_media_sharing */ 432*1cddb830SAndroid Build Coastguard Worker#if defined(_WIN32) 433*1cddb830SAndroid Build Coastguard Worker &clGetDeviceIDsFromDX9MediaAdapterKHR_disp, 434*1cddb830SAndroid Build Coastguard Worker &clEnqueueAcquireDX9MediaSurfacesKHR_disp, 435*1cddb830SAndroid Build Coastguard Worker &clEnqueueReleaseDX9MediaSurfacesKHR_disp, 436*1cddb830SAndroid Build Coastguard Worker#else 437*1cddb830SAndroid Build Coastguard Worker NULL, 438*1cddb830SAndroid Build Coastguard Worker NULL, 439*1cddb830SAndroid Build Coastguard Worker NULL, 440*1cddb830SAndroid Build Coastguard Worker#endif 441*1cddb830SAndroid Build Coastguard Worker 442*1cddb830SAndroid Build Coastguard Worker /* cl_khr_egl_image */ 443*1cddb830SAndroid Build Coastguard Worker &clCreateFromEGLImageKHR_disp, 444*1cddb830SAndroid Build Coastguard Worker &clEnqueueAcquireEGLObjectsKHR_disp, 445*1cddb830SAndroid Build Coastguard Worker &clEnqueueReleaseEGLObjectsKHR_disp, 446*1cddb830SAndroid Build Coastguard Worker 447*1cddb830SAndroid Build Coastguard Worker /* cl_khr_egl_event */ 448*1cddb830SAndroid Build Coastguard Worker &clCreateEventFromEGLSyncKHR_disp, 449*1cddb830SAndroid Build Coastguard Worker 450*1cddb830SAndroid Build Coastguard Worker /* OpenCL 2.0 */ 451*1cddb830SAndroid Build Coastguard Worker &clCreateCommandQueueWithProperties_disp, 452*1cddb830SAndroid Build Coastguard Worker &clCreatePipe_disp, 453*1cddb830SAndroid Build Coastguard Worker &clGetPipeInfo_disp, 454*1cddb830SAndroid Build Coastguard Worker &clSVMAlloc_disp, 455*1cddb830SAndroid Build Coastguard Worker &clSVMFree_disp, 456*1cddb830SAndroid Build Coastguard Worker &clEnqueueSVMFree_disp, 457*1cddb830SAndroid Build Coastguard Worker &clEnqueueSVMMemcpy_disp, 458*1cddb830SAndroid Build Coastguard Worker &clEnqueueSVMMemFill_disp, 459*1cddb830SAndroid Build Coastguard Worker &clEnqueueSVMMap_disp, 460*1cddb830SAndroid Build Coastguard Worker &clEnqueueSVMUnmap_disp, 461*1cddb830SAndroid Build Coastguard Worker &clCreateSamplerWithProperties_disp, 462*1cddb830SAndroid Build Coastguard Worker &clSetKernelArgSVMPointer_disp, 463*1cddb830SAndroid Build Coastguard Worker &clSetKernelExecInfo_disp, 464*1cddb830SAndroid Build Coastguard Worker 465*1cddb830SAndroid Build Coastguard Worker /* cl_khr_sub_groups */ 466*1cddb830SAndroid Build Coastguard Worker &clGetKernelSubGroupInfoKHR_disp, 467*1cddb830SAndroid Build Coastguard Worker 468*1cddb830SAndroid Build Coastguard Worker /* OpenCL 2.1 */ 469*1cddb830SAndroid Build Coastguard Worker &clCloneKernel_disp, 470*1cddb830SAndroid Build Coastguard Worker &clCreateProgramWithIL_disp, 471*1cddb830SAndroid Build Coastguard Worker &clEnqueueSVMMigrateMem_disp, 472*1cddb830SAndroid Build Coastguard Worker &clGetDeviceAndHostTimer_disp, 473*1cddb830SAndroid Build Coastguard Worker &clGetHostTimer_disp, 474*1cddb830SAndroid Build Coastguard Worker &clGetKernelSubGroupInfo_disp, 475*1cddb830SAndroid Build Coastguard Worker &clSetDefaultDeviceCommandQueue_disp, 476*1cddb830SAndroid Build Coastguard Worker 477*1cddb830SAndroid Build Coastguard Worker /* OpenCL 2.2 */ 478*1cddb830SAndroid Build Coastguard Worker &clSetProgramReleaseCallback_disp, 479*1cddb830SAndroid Build Coastguard Worker &clSetProgramSpecializationConstant_disp, 480*1cddb830SAndroid Build Coastguard Worker 481*1cddb830SAndroid Build Coastguard Worker /* OpenCL 3.0 */ 482*1cddb830SAndroid Build Coastguard Worker &clCreateBufferWithProperties_disp, 483*1cddb830SAndroid Build Coastguard Worker &clCreateImageWithProperties_disp, 484*1cddb830SAndroid Build Coastguard Worker &clSetContextDestructorCallback_disp 485*1cddb830SAndroid Build Coastguard Worker}; 486*1cddb830SAndroid Build Coastguard Worker#endif // defined(CL_ENABLE_LAYERS) 487*1cddb830SAndroid Build Coastguard Worker#ifdef __cplusplus 488*1cddb830SAndroid Build Coastguard Worker} 489*1cddb830SAndroid Build Coastguard Worker#endif 490