/* GENERATED FILE - DO NOT EDIT.
 * Generated by gen_proc_table.py using data from cl.xml.
 *
 * Copyright 2021 The ANGLE Project Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 *
 * symbol version map: Maps versions to entry point names for a shared library.
 */

OPENCL_1.0 {
    global:
        clGetPlatformIDs;
        clGetPlatformInfo;
        clGetDeviceIDs;
        clGetDeviceInfo;
        clCreateContext;
        clCreateContextFromType;
        clRetainContext;
        clReleaseContext;
        clGetContextInfo;
        clRetainCommandQueue;
        clReleaseCommandQueue;
        clGetCommandQueueInfo;
        clCreateBuffer;
        clRetainMemObject;
        clReleaseMemObject;
        clGetSupportedImageFormats;
        clGetMemObjectInfo;
        clGetImageInfo;
        clRetainSampler;
        clReleaseSampler;
        clGetSamplerInfo;
        clCreateProgramWithSource;
        clCreateProgramWithBinary;
        clRetainProgram;
        clReleaseProgram;
        clBuildProgram;
        clGetProgramInfo;
        clGetProgramBuildInfo;
        clCreateKernel;
        clCreateKernelsInProgram;
        clRetainKernel;
        clReleaseKernel;
        clSetKernelArg;
        clGetKernelInfo;
        clGetKernelWorkGroupInfo;
        clWaitForEvents;
        clGetEventInfo;
        clRetainEvent;
        clReleaseEvent;
        clGetEventProfilingInfo;
        clFlush;
        clFinish;
        clEnqueueReadBuffer;
        clEnqueueWriteBuffer;
        clEnqueueCopyBuffer;
        clEnqueueReadImage;
        clEnqueueWriteImage;
        clEnqueueCopyImage;
        clEnqueueCopyImageToBuffer;
        clEnqueueCopyBufferToImage;
        clEnqueueMapBuffer;
        clEnqueueMapImage;
        clEnqueueUnmapMemObject;
        clEnqueueNDRangeKernel;
        clEnqueueNativeKernel;
        clSetCommandQueueProperty;
        clCreateImage2D;
        clCreateImage3D;
        clEnqueueMarker;
        clEnqueueWaitForEvents;
        clEnqueueBarrier;
        clUnloadCompiler;
        clGetExtensionFunctionAddress;
        clCreateCommandQueue;
        clCreateSampler;
        clEnqueueTask;
    local:
        *;
};

OPENCL_1.1 {
    global:
        clCreateSubBuffer;
        clSetMemObjectDestructorCallback;
        clCreateUserEvent;
        clSetUserEventStatus;
        clSetEventCallback;
        clEnqueueReadBufferRect;
        clEnqueueWriteBufferRect;
        clEnqueueCopyBufferRect;
} OPENCL_1.0;

OPENCL_1.2 {
    global:
        clCreateSubDevices;
        clRetainDevice;
        clReleaseDevice;
        clCreateImage;
        clCreateProgramWithBuiltInKernels;
        clCompileProgram;
        clLinkProgram;
        clUnloadPlatformCompiler;
        clGetKernelArgInfo;
        clEnqueueFillBuffer;
        clEnqueueFillImage;
        clEnqueueMigrateMemObjects;
        clEnqueueMarkerWithWaitList;
        clEnqueueBarrierWithWaitList;
        clGetExtensionFunctionAddressForPlatform;
} OPENCL_1.1;

OPENCL_2.0 {
    global:
        clCreateCommandQueueWithProperties;
        clCreatePipe;
        clGetPipeInfo;
        clSVMAlloc;
        clSVMFree;
        clCreateSamplerWithProperties;
        clSetKernelArgSVMPointer;
        clSetKernelExecInfo;
        clEnqueueSVMFree;
        clEnqueueSVMMemcpy;
        clEnqueueSVMMemFill;
        clEnqueueSVMMap;
        clEnqueueSVMUnmap;
} OPENCL_1.2;

OPENCL_2.1 {
    global:
        clSetDefaultDeviceCommandQueue;
        clGetDeviceAndHostTimer;
        clGetHostTimer;
        clCreateProgramWithIL;
        clCloneKernel;
        clGetKernelSubGroupInfo;
        clEnqueueSVMMigrateMem;
} OPENCL_2.0;

OPENCL_2.2 {
    global:
        clSetProgramSpecializationConstant;
        clSetProgramReleaseCallback;
} OPENCL_2.1;

OPENCL_3.0 {
    global:
        clSetContextDestructorCallback;
        clCreateBufferWithProperties;
        clCreateImageWithProperties;
} OPENCL_2.2;
