Path: blob/main_old/src/libGLESv2/entry_points_cl_autogen.cpp
1693 views
// GENERATED FILE - DO NOT EDIT.1// Generated by generate_entry_points.py using data from cl.xml.2//3// Copyright 2020 The ANGLE Project Authors. All rights reserved.4// Use of this source code is governed by a BSD-style license that can be5// found in the LICENSE file.6//7// entry_points_cl_autogen.cpp:8// Defines the CL entry points.910#include "libGLESv2/entry_points_cl_autogen.h"1112#include "libANGLE/validationCL_autogen.h"13#include "libGLESv2/cl_stubs_autogen.h"14#include "libGLESv2/entry_points_cl_utils.h"1516namespace cl17{1819// CL 1.020cl_int CL_API_CALL clGetPlatformIDs(cl_uint num_entries,21cl_platform_id *platforms,22cl_uint *num_platforms)23{24InitBackEnds(false);2526CL_EVENT(GetPlatformIDs,27"num_entries = %u, platforms = 0x%016" PRIxPTR ", num_platforms = 0x%016" PRIxPTR "",28num_entries, (uintptr_t)platforms, (uintptr_t)num_platforms);2930ANGLE_CL_VALIDATE_ERROR(GetPlatformIDs, num_entries, platforms, num_platforms);3132return GetPlatformIDs(num_entries, platforms, num_platforms);33}3435cl_int CL_API_CALL clGetPlatformInfo(cl_platform_id platform,36cl_platform_info param_name,37size_t param_value_size,38void *param_value,39size_t *param_value_size_ret)40{41InitBackEnds(false);4243CL_EVENT(GetPlatformInfo,44"platform = 0x%016" PRIxPTR45", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR46", param_value_size_ret = 0x%016" PRIxPTR "",47(uintptr_t)platform, param_name, param_value_size, (uintptr_t)param_value,48(uintptr_t)param_value_size_ret);4950PlatformInfo param_namePacked = PackParam<PlatformInfo>(param_name);5152ANGLE_CL_VALIDATE_ERROR(GetPlatformInfo, platform, param_namePacked, param_value_size,53param_value, param_value_size_ret);5455return GetPlatformInfo(platform, param_namePacked, param_value_size, param_value,56param_value_size_ret);57}5859cl_int CL_API_CALL clGetDeviceIDs(cl_platform_id platform,60cl_device_type device_type,61cl_uint num_entries,62cl_device_id *devices,63cl_uint *num_devices)64{65InitBackEnds(false);6667CL_EVENT(GetDeviceIDs,68"platform = 0x%016" PRIxPTR69", device_type = %llu, num_entries = %u, devices = 0x%016" PRIxPTR70", num_devices = 0x%016" PRIxPTR "",71(uintptr_t)platform, static_cast<unsigned long long>(device_type), num_entries,72(uintptr_t)devices, (uintptr_t)num_devices);7374DeviceType device_typePacked = PackParam<DeviceType>(device_type);7576ANGLE_CL_VALIDATE_ERROR(GetDeviceIDs, platform, device_typePacked, num_entries, devices,77num_devices);7879return GetDeviceIDs(platform, device_typePacked, num_entries, devices, num_devices);80}8182cl_int CL_API_CALL clGetDeviceInfo(cl_device_id device,83cl_device_info param_name,84size_t param_value_size,85void *param_value,86size_t *param_value_size_ret)87{88CL_EVENT(GetDeviceInfo,89"device = 0x%016" PRIxPTR90", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR91", param_value_size_ret = 0x%016" PRIxPTR "",92(uintptr_t)device, param_name, param_value_size, (uintptr_t)param_value,93(uintptr_t)param_value_size_ret);9495DeviceInfo param_namePacked = PackParam<DeviceInfo>(param_name);9697ANGLE_CL_VALIDATE_ERROR(GetDeviceInfo, device, param_namePacked, param_value_size, param_value,98param_value_size_ret);99100return GetDeviceInfo(device, param_namePacked, param_value_size, param_value,101param_value_size_ret);102}103104cl_context CL_API_CALL clCreateContext(const cl_context_properties *properties,105cl_uint num_devices,106const cl_device_id *devices,107void(CL_CALLBACK *pfn_notify)(const char *errinfo,108const void *private_info,109size_t cb,110void *user_data),111void *user_data,112cl_int *errcode_ret)113{114InitBackEnds(false);115116CL_EVENT(CreateContext,117"properties = 0x%016" PRIxPTR ", num_devices = %u, devices = 0x%016" PRIxPTR118", pfn_notify = 0x%016" PRIxPTR ", user_data = 0x%016" PRIxPTR119", errcode_ret = 0x%016" PRIxPTR "",120(uintptr_t)properties, num_devices, (uintptr_t)devices, (uintptr_t)pfn_notify,121(uintptr_t)user_data, (uintptr_t)errcode_ret);122123ANGLE_CL_VALIDATE_ERRCODE_RET(CreateContext, properties, num_devices, devices, pfn_notify,124user_data);125126cl_int errorCode = CL_SUCCESS;127cl_context object =128CreateContext(properties, num_devices, devices, pfn_notify, user_data, errorCode);129130ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));131if (errcode_ret != nullptr)132{133*errcode_ret = errorCode;134}135return object;136}137138cl_context CL_API_CALL139clCreateContextFromType(const cl_context_properties *properties,140cl_device_type device_type,141void(CL_CALLBACK *pfn_notify)(const char *errinfo,142const void *private_info,143size_t cb,144void *user_data),145void *user_data,146cl_int *errcode_ret)147{148InitBackEnds(false);149150CL_EVENT(CreateContextFromType,151"properties = 0x%016" PRIxPTR ", device_type = %llu, pfn_notify = 0x%016" PRIxPTR152", user_data = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",153(uintptr_t)properties, static_cast<unsigned long long>(device_type),154(uintptr_t)pfn_notify, (uintptr_t)user_data, (uintptr_t)errcode_ret);155156DeviceType device_typePacked = PackParam<DeviceType>(device_type);157158ANGLE_CL_VALIDATE_ERRCODE_RET(CreateContextFromType, properties, device_typePacked, pfn_notify,159user_data);160161cl_int errorCode = CL_SUCCESS;162cl_context object =163CreateContextFromType(properties, device_typePacked, pfn_notify, user_data, errorCode);164165ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));166if (errcode_ret != nullptr)167{168*errcode_ret = errorCode;169}170return object;171}172173cl_int CL_API_CALL clRetainContext(cl_context context)174{175CL_EVENT(RetainContext, "context = 0x%016" PRIxPTR "", (uintptr_t)context);176177ANGLE_CL_VALIDATE_ERROR(RetainContext, context);178179return RetainContext(context);180}181182cl_int CL_API_CALL clReleaseContext(cl_context context)183{184CL_EVENT(ReleaseContext, "context = 0x%016" PRIxPTR "", (uintptr_t)context);185186ANGLE_CL_VALIDATE_ERROR(ReleaseContext, context);187188return ReleaseContext(context);189}190191cl_int CL_API_CALL clGetContextInfo(cl_context context,192cl_context_info param_name,193size_t param_value_size,194void *param_value,195size_t *param_value_size_ret)196{197CL_EVENT(GetContextInfo,198"context = 0x%016" PRIxPTR199", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR200", param_value_size_ret = 0x%016" PRIxPTR "",201(uintptr_t)context, param_name, param_value_size, (uintptr_t)param_value,202(uintptr_t)param_value_size_ret);203204ContextInfo param_namePacked = PackParam<ContextInfo>(param_name);205206ANGLE_CL_VALIDATE_ERROR(GetContextInfo, context, param_namePacked, param_value_size,207param_value, param_value_size_ret);208209return GetContextInfo(context, param_namePacked, param_value_size, param_value,210param_value_size_ret);211}212213cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue command_queue)214{215CL_EVENT(RetainCommandQueue, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);216217ANGLE_CL_VALIDATE_ERROR(RetainCommandQueue, command_queue);218219return RetainCommandQueue(command_queue);220}221222cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue command_queue)223{224CL_EVENT(ReleaseCommandQueue, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);225226ANGLE_CL_VALIDATE_ERROR(ReleaseCommandQueue, command_queue);227228return ReleaseCommandQueue(command_queue);229}230231cl_int CL_API_CALL clGetCommandQueueInfo(cl_command_queue command_queue,232cl_command_queue_info param_name,233size_t param_value_size,234void *param_value,235size_t *param_value_size_ret)236{237CL_EVENT(GetCommandQueueInfo,238"command_queue = 0x%016" PRIxPTR239", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR240", param_value_size_ret = 0x%016" PRIxPTR "",241(uintptr_t)command_queue, param_name, param_value_size, (uintptr_t)param_value,242(uintptr_t)param_value_size_ret);243244CommandQueueInfo param_namePacked = PackParam<CommandQueueInfo>(param_name);245246ANGLE_CL_VALIDATE_ERROR(GetCommandQueueInfo, command_queue, param_namePacked, param_value_size,247param_value, param_value_size_ret);248249return GetCommandQueueInfo(command_queue, param_namePacked, param_value_size, param_value,250param_value_size_ret);251}252253cl_mem CL_API_CALL clCreateBuffer(cl_context context,254cl_mem_flags flags,255size_t size,256void *host_ptr,257cl_int *errcode_ret)258{259CL_EVENT(CreateBuffer,260"context = 0x%016" PRIxPTR ", flags = %llu, size = %zu, host_ptr = 0x%016" PRIxPTR261", errcode_ret = 0x%016" PRIxPTR "",262(uintptr_t)context, static_cast<unsigned long long>(flags), size, (uintptr_t)host_ptr,263(uintptr_t)errcode_ret);264265MemFlags flagsPacked = PackParam<MemFlags>(flags);266267ANGLE_CL_VALIDATE_ERRCODE_RET(CreateBuffer, context, flagsPacked, size, host_ptr);268269cl_int errorCode = CL_SUCCESS;270cl_mem object = CreateBuffer(context, flagsPacked, size, host_ptr, errorCode);271272ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));273if (errcode_ret != nullptr)274{275*errcode_ret = errorCode;276}277return object;278}279280cl_int CL_API_CALL clRetainMemObject(cl_mem memobj)281{282CL_EVENT(RetainMemObject, "memobj = 0x%016" PRIxPTR "", (uintptr_t)memobj);283284ANGLE_CL_VALIDATE_ERROR(RetainMemObject, memobj);285286return RetainMemObject(memobj);287}288289cl_int CL_API_CALL clReleaseMemObject(cl_mem memobj)290{291CL_EVENT(ReleaseMemObject, "memobj = 0x%016" PRIxPTR "", (uintptr_t)memobj);292293ANGLE_CL_VALIDATE_ERROR(ReleaseMemObject, memobj);294295return ReleaseMemObject(memobj);296}297298cl_int CL_API_CALL clGetSupportedImageFormats(cl_context context,299cl_mem_flags flags,300cl_mem_object_type image_type,301cl_uint num_entries,302cl_image_format *image_formats,303cl_uint *num_image_formats)304{305CL_EVENT(GetSupportedImageFormats,306"context = 0x%016" PRIxPTR307", flags = %llu, image_type = %u, num_entries = %u, image_formats = 0x%016" PRIxPTR308", num_image_formats = 0x%016" PRIxPTR "",309(uintptr_t)context, static_cast<unsigned long long>(flags), image_type, num_entries,310(uintptr_t)image_formats, (uintptr_t)num_image_formats);311312MemFlags flagsPacked = PackParam<MemFlags>(flags);313MemObjectType image_typePacked = PackParam<MemObjectType>(image_type);314315ANGLE_CL_VALIDATE_ERROR(GetSupportedImageFormats, context, flagsPacked, image_typePacked,316num_entries, image_formats, num_image_formats);317318return GetSupportedImageFormats(context, flagsPacked, image_typePacked, num_entries,319image_formats, num_image_formats);320}321322cl_int CL_API_CALL clGetMemObjectInfo(cl_mem memobj,323cl_mem_info param_name,324size_t param_value_size,325void *param_value,326size_t *param_value_size_ret)327{328CL_EVENT(GetMemObjectInfo,329"memobj = 0x%016" PRIxPTR330", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR331", param_value_size_ret = 0x%016" PRIxPTR "",332(uintptr_t)memobj, param_name, param_value_size, (uintptr_t)param_value,333(uintptr_t)param_value_size_ret);334335MemInfo param_namePacked = PackParam<MemInfo>(param_name);336337ANGLE_CL_VALIDATE_ERROR(GetMemObjectInfo, memobj, param_namePacked, param_value_size,338param_value, param_value_size_ret);339340return GetMemObjectInfo(memobj, param_namePacked, param_value_size, param_value,341param_value_size_ret);342}343344cl_int CL_API_CALL clGetImageInfo(cl_mem image,345cl_image_info param_name,346size_t param_value_size,347void *param_value,348size_t *param_value_size_ret)349{350CL_EVENT(GetImageInfo,351"image = 0x%016" PRIxPTR352", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR353", param_value_size_ret = 0x%016" PRIxPTR "",354(uintptr_t)image, param_name, param_value_size, (uintptr_t)param_value,355(uintptr_t)param_value_size_ret);356357ImageInfo param_namePacked = PackParam<ImageInfo>(param_name);358359ANGLE_CL_VALIDATE_ERROR(GetImageInfo, image, param_namePacked, param_value_size, param_value,360param_value_size_ret);361362return GetImageInfo(image, param_namePacked, param_value_size, param_value,363param_value_size_ret);364}365366cl_int CL_API_CALL clRetainSampler(cl_sampler sampler)367{368CL_EVENT(RetainSampler, "sampler = 0x%016" PRIxPTR "", (uintptr_t)sampler);369370ANGLE_CL_VALIDATE_ERROR(RetainSampler, sampler);371372return RetainSampler(sampler);373}374375cl_int CL_API_CALL clReleaseSampler(cl_sampler sampler)376{377CL_EVENT(ReleaseSampler, "sampler = 0x%016" PRIxPTR "", (uintptr_t)sampler);378379ANGLE_CL_VALIDATE_ERROR(ReleaseSampler, sampler);380381return ReleaseSampler(sampler);382}383384cl_int CL_API_CALL clGetSamplerInfo(cl_sampler sampler,385cl_sampler_info param_name,386size_t param_value_size,387void *param_value,388size_t *param_value_size_ret)389{390CL_EVENT(GetSamplerInfo,391"sampler = 0x%016" PRIxPTR392", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR393", param_value_size_ret = 0x%016" PRIxPTR "",394(uintptr_t)sampler, param_name, param_value_size, (uintptr_t)param_value,395(uintptr_t)param_value_size_ret);396397SamplerInfo param_namePacked = PackParam<SamplerInfo>(param_name);398399ANGLE_CL_VALIDATE_ERROR(GetSamplerInfo, sampler, param_namePacked, param_value_size,400param_value, param_value_size_ret);401402return GetSamplerInfo(sampler, param_namePacked, param_value_size, param_value,403param_value_size_ret);404}405406cl_program CL_API_CALL clCreateProgramWithSource(cl_context context,407cl_uint count,408const char **strings,409const size_t *lengths,410cl_int *errcode_ret)411{412CL_EVENT(CreateProgramWithSource,413"context = 0x%016" PRIxPTR ", count = %u, strings = 0x%016" PRIxPTR414", lengths = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",415(uintptr_t)context, count, (uintptr_t)strings, (uintptr_t)lengths,416(uintptr_t)errcode_ret);417418ANGLE_CL_VALIDATE_ERRCODE_RET(CreateProgramWithSource, context, count, strings, lengths);419420cl_int errorCode = CL_SUCCESS;421cl_program object = CreateProgramWithSource(context, count, strings, lengths, errorCode);422423ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));424if (errcode_ret != nullptr)425{426*errcode_ret = errorCode;427}428return object;429}430431cl_program CL_API_CALL clCreateProgramWithBinary(cl_context context,432cl_uint num_devices,433const cl_device_id *device_list,434const size_t *lengths,435const unsigned char **binaries,436cl_int *binary_status,437cl_int *errcode_ret)438{439CL_EVENT(CreateProgramWithBinary,440"context = 0x%016" PRIxPTR ", num_devices = %u, device_list = 0x%016" PRIxPTR441", lengths = 0x%016" PRIxPTR ", binaries = 0x%016" PRIxPTR442", binary_status = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",443(uintptr_t)context, num_devices, (uintptr_t)device_list, (uintptr_t)lengths,444(uintptr_t)binaries, (uintptr_t)binary_status, (uintptr_t)errcode_ret);445446ANGLE_CL_VALIDATE_ERRCODE_RET(CreateProgramWithBinary, context, num_devices, device_list,447lengths, binaries, binary_status);448449cl_int errorCode = CL_SUCCESS;450cl_program object = CreateProgramWithBinary(context, num_devices, device_list, lengths,451binaries, binary_status, errorCode);452453ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));454if (errcode_ret != nullptr)455{456*errcode_ret = errorCode;457}458return object;459}460461cl_int CL_API_CALL clRetainProgram(cl_program program)462{463CL_EVENT(RetainProgram, "program = 0x%016" PRIxPTR "", (uintptr_t)program);464465ANGLE_CL_VALIDATE_ERROR(RetainProgram, program);466467return RetainProgram(program);468}469470cl_int CL_API_CALL clReleaseProgram(cl_program program)471{472CL_EVENT(ReleaseProgram, "program = 0x%016" PRIxPTR "", (uintptr_t)program);473474ANGLE_CL_VALIDATE_ERROR(ReleaseProgram, program);475476return ReleaseProgram(program);477}478479cl_int CL_API_CALL clBuildProgram(cl_program program,480cl_uint num_devices,481const cl_device_id *device_list,482const char *options,483void(CL_CALLBACK *pfn_notify)(cl_program program,484void *user_data),485void *user_data)486{487CL_EVENT(BuildProgram,488"program = 0x%016" PRIxPTR ", num_devices = %u, device_list = 0x%016" PRIxPTR489", options = 0x%016" PRIxPTR ", pfn_notify = 0x%016" PRIxPTR490", user_data = 0x%016" PRIxPTR "",491(uintptr_t)program, num_devices, (uintptr_t)device_list, (uintptr_t)options,492(uintptr_t)pfn_notify, (uintptr_t)user_data);493494ANGLE_CL_VALIDATE_ERROR(BuildProgram, program, num_devices, device_list, options, pfn_notify,495user_data);496497return BuildProgram(program, num_devices, device_list, options, pfn_notify, user_data);498}499500cl_int CL_API_CALL clGetProgramInfo(cl_program program,501cl_program_info param_name,502size_t param_value_size,503void *param_value,504size_t *param_value_size_ret)505{506CL_EVENT(GetProgramInfo,507"program = 0x%016" PRIxPTR508", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR509", param_value_size_ret = 0x%016" PRIxPTR "",510(uintptr_t)program, param_name, param_value_size, (uintptr_t)param_value,511(uintptr_t)param_value_size_ret);512513ProgramInfo param_namePacked = PackParam<ProgramInfo>(param_name);514515ANGLE_CL_VALIDATE_ERROR(GetProgramInfo, program, param_namePacked, param_value_size,516param_value, param_value_size_ret);517518return GetProgramInfo(program, param_namePacked, param_value_size, param_value,519param_value_size_ret);520}521522cl_int CL_API_CALL clGetProgramBuildInfo(cl_program program,523cl_device_id device,524cl_program_build_info param_name,525size_t param_value_size,526void *param_value,527size_t *param_value_size_ret)528{529CL_EVENT(GetProgramBuildInfo,530"program = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR531", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR532", param_value_size_ret = 0x%016" PRIxPTR "",533(uintptr_t)program, (uintptr_t)device, param_name, param_value_size,534(uintptr_t)param_value, (uintptr_t)param_value_size_ret);535536ProgramBuildInfo param_namePacked = PackParam<ProgramBuildInfo>(param_name);537538ANGLE_CL_VALIDATE_ERROR(GetProgramBuildInfo, program, device, param_namePacked,539param_value_size, param_value, param_value_size_ret);540541return GetProgramBuildInfo(program, device, param_namePacked, param_value_size, param_value,542param_value_size_ret);543}544545cl_kernel CL_API_CALL clCreateKernel(cl_program program,546const char *kernel_name,547cl_int *errcode_ret)548{549CL_EVENT(CreateKernel,550"program = 0x%016" PRIxPTR ", kernel_name = 0x%016" PRIxPTR551", errcode_ret = 0x%016" PRIxPTR "",552(uintptr_t)program, (uintptr_t)kernel_name, (uintptr_t)errcode_ret);553554ANGLE_CL_VALIDATE_ERRCODE_RET(CreateKernel, program, kernel_name);555556cl_int errorCode = CL_SUCCESS;557cl_kernel object = CreateKernel(program, kernel_name, errorCode);558559ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));560if (errcode_ret != nullptr)561{562*errcode_ret = errorCode;563}564return object;565}566567cl_int CL_API_CALL clCreateKernelsInProgram(cl_program program,568cl_uint num_kernels,569cl_kernel *kernels,570cl_uint *num_kernels_ret)571{572CL_EVENT(CreateKernelsInProgram,573"program = 0x%016" PRIxPTR ", num_kernels = %u, kernels = 0x%016" PRIxPTR574", num_kernels_ret = 0x%016" PRIxPTR "",575(uintptr_t)program, num_kernels, (uintptr_t)kernels, (uintptr_t)num_kernels_ret);576577ANGLE_CL_VALIDATE_ERROR(CreateKernelsInProgram, program, num_kernels, kernels, num_kernels_ret);578579return CreateKernelsInProgram(program, num_kernels, kernels, num_kernels_ret);580}581582cl_int CL_API_CALL clRetainKernel(cl_kernel kernel)583{584CL_EVENT(RetainKernel, "kernel = 0x%016" PRIxPTR "", (uintptr_t)kernel);585586ANGLE_CL_VALIDATE_ERROR(RetainKernel, kernel);587588return RetainKernel(kernel);589}590591cl_int CL_API_CALL clReleaseKernel(cl_kernel kernel)592{593CL_EVENT(ReleaseKernel, "kernel = 0x%016" PRIxPTR "", (uintptr_t)kernel);594595ANGLE_CL_VALIDATE_ERROR(ReleaseKernel, kernel);596597return ReleaseKernel(kernel);598}599600cl_int CL_API_CALL clSetKernelArg(cl_kernel kernel,601cl_uint arg_index,602size_t arg_size,603const void *arg_value)604{605CL_EVENT(SetKernelArg,606"kernel = 0x%016" PRIxPTR607", arg_index = %u, arg_size = %zu, arg_value = 0x%016" PRIxPTR "",608(uintptr_t)kernel, arg_index, arg_size, (uintptr_t)arg_value);609610ANGLE_CL_VALIDATE_ERROR(SetKernelArg, kernel, arg_index, arg_size, arg_value);611612return SetKernelArg(kernel, arg_index, arg_size, arg_value);613}614615cl_int CL_API_CALL clGetKernelInfo(cl_kernel kernel,616cl_kernel_info param_name,617size_t param_value_size,618void *param_value,619size_t *param_value_size_ret)620{621CL_EVENT(GetKernelInfo,622"kernel = 0x%016" PRIxPTR623", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR624", param_value_size_ret = 0x%016" PRIxPTR "",625(uintptr_t)kernel, param_name, param_value_size, (uintptr_t)param_value,626(uintptr_t)param_value_size_ret);627628KernelInfo param_namePacked = PackParam<KernelInfo>(param_name);629630ANGLE_CL_VALIDATE_ERROR(GetKernelInfo, kernel, param_namePacked, param_value_size, param_value,631param_value_size_ret);632633return GetKernelInfo(kernel, param_namePacked, param_value_size, param_value,634param_value_size_ret);635}636637cl_int CL_API_CALL clGetKernelWorkGroupInfo(cl_kernel kernel,638cl_device_id device,639cl_kernel_work_group_info param_name,640size_t param_value_size,641void *param_value,642size_t *param_value_size_ret)643{644CL_EVENT(GetKernelWorkGroupInfo,645"kernel = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR646", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR647", param_value_size_ret = 0x%016" PRIxPTR "",648(uintptr_t)kernel, (uintptr_t)device, param_name, param_value_size,649(uintptr_t)param_value, (uintptr_t)param_value_size_ret);650651KernelWorkGroupInfo param_namePacked = PackParam<KernelWorkGroupInfo>(param_name);652653ANGLE_CL_VALIDATE_ERROR(GetKernelWorkGroupInfo, kernel, device, param_namePacked,654param_value_size, param_value, param_value_size_ret);655656return GetKernelWorkGroupInfo(kernel, device, param_namePacked, param_value_size, param_value,657param_value_size_ret);658}659660cl_int CL_API_CALL clWaitForEvents(cl_uint num_events, const cl_event *event_list)661{662CL_EVENT(WaitForEvents, "num_events = %u, event_list = 0x%016" PRIxPTR "", num_events,663(uintptr_t)event_list);664665ANGLE_CL_VALIDATE_ERROR(WaitForEvents, num_events, event_list);666667return WaitForEvents(num_events, event_list);668}669670cl_int CL_API_CALL clGetEventInfo(cl_event event,671cl_event_info param_name,672size_t param_value_size,673void *param_value,674size_t *param_value_size_ret)675{676CL_EVENT(GetEventInfo,677"event = 0x%016" PRIxPTR678", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR679", param_value_size_ret = 0x%016" PRIxPTR "",680(uintptr_t)event, param_name, param_value_size, (uintptr_t)param_value,681(uintptr_t)param_value_size_ret);682683EventInfo param_namePacked = PackParam<EventInfo>(param_name);684685ANGLE_CL_VALIDATE_ERROR(GetEventInfo, event, param_namePacked, param_value_size, param_value,686param_value_size_ret);687688return GetEventInfo(event, param_namePacked, param_value_size, param_value,689param_value_size_ret);690}691692cl_int CL_API_CALL clRetainEvent(cl_event event)693{694CL_EVENT(RetainEvent, "event = 0x%016" PRIxPTR "", (uintptr_t)event);695696ANGLE_CL_VALIDATE_ERROR(RetainEvent, event);697698return RetainEvent(event);699}700701cl_int CL_API_CALL clReleaseEvent(cl_event event)702{703CL_EVENT(ReleaseEvent, "event = 0x%016" PRIxPTR "", (uintptr_t)event);704705ANGLE_CL_VALIDATE_ERROR(ReleaseEvent, event);706707return ReleaseEvent(event);708}709710cl_int CL_API_CALL clGetEventProfilingInfo(cl_event event,711cl_profiling_info param_name,712size_t param_value_size,713void *param_value,714size_t *param_value_size_ret)715{716CL_EVENT(GetEventProfilingInfo,717"event = 0x%016" PRIxPTR718", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR719", param_value_size_ret = 0x%016" PRIxPTR "",720(uintptr_t)event, param_name, param_value_size, (uintptr_t)param_value,721(uintptr_t)param_value_size_ret);722723ProfilingInfo param_namePacked = PackParam<ProfilingInfo>(param_name);724725ANGLE_CL_VALIDATE_ERROR(GetEventProfilingInfo, event, param_namePacked, param_value_size,726param_value, param_value_size_ret);727728return GetEventProfilingInfo(event, param_namePacked, param_value_size, param_value,729param_value_size_ret);730}731732cl_int CL_API_CALL clFlush(cl_command_queue command_queue)733{734CL_EVENT(Flush, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);735736ANGLE_CL_VALIDATE_ERROR(Flush, command_queue);737738return Flush(command_queue);739}740741cl_int CL_API_CALL clFinish(cl_command_queue command_queue)742{743CL_EVENT(Finish, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);744745ANGLE_CL_VALIDATE_ERROR(Finish, command_queue);746747return Finish(command_queue);748}749750cl_int CL_API_CALL clEnqueueReadBuffer(cl_command_queue command_queue,751cl_mem buffer,752cl_bool blocking_read,753size_t offset,754size_t size,755void *ptr,756cl_uint num_events_in_wait_list,757const cl_event *event_wait_list,758cl_event *event)759{760CL_EVENT(EnqueueReadBuffer,761"command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR762", blocking_read = %u, offset = %zu, size = %zu, ptr = 0x%016" PRIxPTR763", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR764", event = 0x%016" PRIxPTR "",765(uintptr_t)command_queue, (uintptr_t)buffer, blocking_read, offset, size,766(uintptr_t)ptr, num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);767768ANGLE_CL_VALIDATE_ERROR(EnqueueReadBuffer, command_queue, buffer, blocking_read, offset, size,769ptr, num_events_in_wait_list, event_wait_list, event);770771return EnqueueReadBuffer(command_queue, buffer, blocking_read, offset, size, ptr,772num_events_in_wait_list, event_wait_list, event);773}774775cl_int CL_API_CALL clEnqueueWriteBuffer(cl_command_queue command_queue,776cl_mem buffer,777cl_bool blocking_write,778size_t offset,779size_t size,780const void *ptr,781cl_uint num_events_in_wait_list,782const cl_event *event_wait_list,783cl_event *event)784{785CL_EVENT(EnqueueWriteBuffer,786"command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR787", blocking_write = %u, offset = %zu, size = %zu, ptr = 0x%016" PRIxPTR788", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR789", event = 0x%016" PRIxPTR "",790(uintptr_t)command_queue, (uintptr_t)buffer, blocking_write, offset, size,791(uintptr_t)ptr, num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);792793ANGLE_CL_VALIDATE_ERROR(EnqueueWriteBuffer, command_queue, buffer, blocking_write, offset, size,794ptr, num_events_in_wait_list, event_wait_list, event);795796return EnqueueWriteBuffer(command_queue, buffer, blocking_write, offset, size, ptr,797num_events_in_wait_list, event_wait_list, event);798}799800cl_int CL_API_CALL clEnqueueCopyBuffer(cl_command_queue command_queue,801cl_mem src_buffer,802cl_mem dst_buffer,803size_t src_offset,804size_t dst_offset,805size_t size,806cl_uint num_events_in_wait_list,807const cl_event *event_wait_list,808cl_event *event)809{810CL_EVENT(EnqueueCopyBuffer,811"command_queue = 0x%016" PRIxPTR ", src_buffer = 0x%016" PRIxPTR812", dst_buffer = 0x%016" PRIxPTR813", src_offset = %zu, dst_offset = %zu, size = %zu, num_events_in_wait_list = %u, "814"event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",815(uintptr_t)command_queue, (uintptr_t)src_buffer, (uintptr_t)dst_buffer, src_offset,816dst_offset, size, num_events_in_wait_list, (uintptr_t)event_wait_list,817(uintptr_t)event);818819ANGLE_CL_VALIDATE_ERROR(EnqueueCopyBuffer, command_queue, src_buffer, dst_buffer, src_offset,820dst_offset, size, num_events_in_wait_list, event_wait_list, event);821822return EnqueueCopyBuffer(command_queue, src_buffer, dst_buffer, src_offset, dst_offset, size,823num_events_in_wait_list, event_wait_list, event);824}825826cl_int CL_API_CALL clEnqueueReadImage(cl_command_queue command_queue,827cl_mem image,828cl_bool blocking_read,829const size_t *origin,830const size_t *region,831size_t row_pitch,832size_t slice_pitch,833void *ptr,834cl_uint num_events_in_wait_list,835const cl_event *event_wait_list,836cl_event *event)837{838CL_EVENT(EnqueueReadImage,839"command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR840", blocking_read = %u, origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR841", row_pitch = %zu, slice_pitch = %zu, ptr = 0x%016" PRIxPTR842", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR843", event = 0x%016" PRIxPTR "",844(uintptr_t)command_queue, (uintptr_t)image, blocking_read, (uintptr_t)origin,845(uintptr_t)region, row_pitch, slice_pitch, (uintptr_t)ptr, num_events_in_wait_list,846(uintptr_t)event_wait_list, (uintptr_t)event);847848ANGLE_CL_VALIDATE_ERROR(EnqueueReadImage, command_queue, image, blocking_read, origin, region,849row_pitch, slice_pitch, ptr, num_events_in_wait_list, event_wait_list,850event);851852return EnqueueReadImage(command_queue, image, blocking_read, origin, region, row_pitch,853slice_pitch, ptr, num_events_in_wait_list, event_wait_list, event);854}855856cl_int CL_API_CALL clEnqueueWriteImage(cl_command_queue command_queue,857cl_mem image,858cl_bool blocking_write,859const size_t *origin,860const size_t *region,861size_t input_row_pitch,862size_t input_slice_pitch,863const void *ptr,864cl_uint num_events_in_wait_list,865const cl_event *event_wait_list,866cl_event *event)867{868CL_EVENT(EnqueueWriteImage,869"command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR870", blocking_write = %u, origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR871", input_row_pitch = %zu, input_slice_pitch = %zu, ptr = 0x%016" PRIxPTR872", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR873", event = 0x%016" PRIxPTR "",874(uintptr_t)command_queue, (uintptr_t)image, blocking_write, (uintptr_t)origin,875(uintptr_t)region, input_row_pitch, input_slice_pitch, (uintptr_t)ptr,876num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);877878ANGLE_CL_VALIDATE_ERROR(EnqueueWriteImage, command_queue, image, blocking_write, origin, region,879input_row_pitch, input_slice_pitch, ptr, num_events_in_wait_list,880event_wait_list, event);881882return EnqueueWriteImage(command_queue, image, blocking_write, origin, region, input_row_pitch,883input_slice_pitch, ptr, num_events_in_wait_list, event_wait_list,884event);885}886887cl_int CL_API_CALL clEnqueueCopyImage(cl_command_queue command_queue,888cl_mem src_image,889cl_mem dst_image,890const size_t *src_origin,891const size_t *dst_origin,892const size_t *region,893cl_uint num_events_in_wait_list,894const cl_event *event_wait_list,895cl_event *event)896{897CL_EVENT(EnqueueCopyImage,898"command_queue = 0x%016" PRIxPTR ", src_image = 0x%016" PRIxPTR899", dst_image = 0x%016" PRIxPTR ", src_origin = 0x%016" PRIxPTR900", dst_origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR901", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR902", event = 0x%016" PRIxPTR "",903(uintptr_t)command_queue, (uintptr_t)src_image, (uintptr_t)dst_image,904(uintptr_t)src_origin, (uintptr_t)dst_origin, (uintptr_t)region,905num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);906907ANGLE_CL_VALIDATE_ERROR(EnqueueCopyImage, command_queue, src_image, dst_image, src_origin,908dst_origin, region, num_events_in_wait_list, event_wait_list, event);909910return EnqueueCopyImage(command_queue, src_image, dst_image, src_origin, dst_origin, region,911num_events_in_wait_list, event_wait_list, event);912}913914cl_int CL_API_CALL clEnqueueCopyImageToBuffer(cl_command_queue command_queue,915cl_mem src_image,916cl_mem dst_buffer,917const size_t *src_origin,918const size_t *region,919size_t dst_offset,920cl_uint num_events_in_wait_list,921const cl_event *event_wait_list,922cl_event *event)923{924CL_EVENT(EnqueueCopyImageToBuffer,925"command_queue = 0x%016" PRIxPTR ", src_image = 0x%016" PRIxPTR926", dst_buffer = 0x%016" PRIxPTR ", src_origin = 0x%016" PRIxPTR927", region = 0x%016" PRIxPTR928", dst_offset = %zu, num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR929", event = 0x%016" PRIxPTR "",930(uintptr_t)command_queue, (uintptr_t)src_image, (uintptr_t)dst_buffer,931(uintptr_t)src_origin, (uintptr_t)region, dst_offset, num_events_in_wait_list,932(uintptr_t)event_wait_list, (uintptr_t)event);933934ANGLE_CL_VALIDATE_ERROR(EnqueueCopyImageToBuffer, command_queue, src_image, dst_buffer,935src_origin, region, dst_offset, num_events_in_wait_list,936event_wait_list, event);937938return EnqueueCopyImageToBuffer(command_queue, src_image, dst_buffer, src_origin, region,939dst_offset, num_events_in_wait_list, event_wait_list, event);940}941942cl_int CL_API_CALL clEnqueueCopyBufferToImage(cl_command_queue command_queue,943cl_mem src_buffer,944cl_mem dst_image,945size_t src_offset,946const size_t *dst_origin,947const size_t *region,948cl_uint num_events_in_wait_list,949const cl_event *event_wait_list,950cl_event *event)951{952CL_EVENT(EnqueueCopyBufferToImage,953"command_queue = 0x%016" PRIxPTR ", src_buffer = 0x%016" PRIxPTR954", dst_image = 0x%016" PRIxPTR ", src_offset = %zu, dst_origin = 0x%016" PRIxPTR955", region = 0x%016" PRIxPTR956", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR957", event = 0x%016" PRIxPTR "",958(uintptr_t)command_queue, (uintptr_t)src_buffer, (uintptr_t)dst_image, src_offset,959(uintptr_t)dst_origin, (uintptr_t)region, num_events_in_wait_list,960(uintptr_t)event_wait_list, (uintptr_t)event);961962ANGLE_CL_VALIDATE_ERROR(EnqueueCopyBufferToImage, command_queue, src_buffer, dst_image,963src_offset, dst_origin, region, num_events_in_wait_list,964event_wait_list, event);965966return EnqueueCopyBufferToImage(command_queue, src_buffer, dst_image, src_offset, dst_origin,967region, num_events_in_wait_list, event_wait_list, event);968}969970void *CL_API_CALL clEnqueueMapBuffer(cl_command_queue command_queue,971cl_mem buffer,972cl_bool blocking_map,973cl_map_flags map_flags,974size_t offset,975size_t size,976cl_uint num_events_in_wait_list,977const cl_event *event_wait_list,978cl_event *event,979cl_int *errcode_ret)980{981CL_EVENT(EnqueueMapBuffer,982"command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR983", blocking_map = %u, map_flags = %llu, offset = %zu, size = %zu, "984"num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR985", event = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",986(uintptr_t)command_queue, (uintptr_t)buffer, blocking_map,987static_cast<unsigned long long>(map_flags), offset, size, num_events_in_wait_list,988(uintptr_t)event_wait_list, (uintptr_t)event, (uintptr_t)errcode_ret);989990MapFlags map_flagsPacked = PackParam<MapFlags>(map_flags);991992ANGLE_CL_VALIDATE_ERRCODE_RET(EnqueueMapBuffer, command_queue, buffer, blocking_map,993map_flagsPacked, offset, size, num_events_in_wait_list,994event_wait_list, event);995996cl_int errorCode = CL_SUCCESS;997void *object =998EnqueueMapBuffer(command_queue, buffer, blocking_map, map_flagsPacked, offset, size,999num_events_in_wait_list, event_wait_list, event, errorCode);10001001ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1002if (errcode_ret != nullptr)1003{1004*errcode_ret = errorCode;1005}1006return object;1007}10081009void *CL_API_CALL clEnqueueMapImage(cl_command_queue command_queue,1010cl_mem image,1011cl_bool blocking_map,1012cl_map_flags map_flags,1013const size_t *origin,1014const size_t *region,1015size_t *image_row_pitch,1016size_t *image_slice_pitch,1017cl_uint num_events_in_wait_list,1018const cl_event *event_wait_list,1019cl_event *event,1020cl_int *errcode_ret)1021{1022CL_EVENT(EnqueueMapImage,1023"command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR1024", blocking_map = %u, map_flags = %llu, origin = 0x%016" PRIxPTR1025", region = 0x%016" PRIxPTR ", image_row_pitch = 0x%016" PRIxPTR1026", image_slice_pitch = 0x%016" PRIxPTR1027", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1028", event = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",1029(uintptr_t)command_queue, (uintptr_t)image, blocking_map,1030static_cast<unsigned long long>(map_flags), (uintptr_t)origin, (uintptr_t)region,1031(uintptr_t)image_row_pitch, (uintptr_t)image_slice_pitch, num_events_in_wait_list,1032(uintptr_t)event_wait_list, (uintptr_t)event, (uintptr_t)errcode_ret);10331034MapFlags map_flagsPacked = PackParam<MapFlags>(map_flags);10351036ANGLE_CL_VALIDATE_ERRCODE_RET(1037EnqueueMapImage, command_queue, image, blocking_map, map_flagsPacked, origin, region,1038image_row_pitch, image_slice_pitch, num_events_in_wait_list, event_wait_list, event);10391040cl_int errorCode = CL_SUCCESS;1041void *object = EnqueueMapImage(command_queue, image, blocking_map, map_flagsPacked, origin,1042region, image_row_pitch, image_slice_pitch,1043num_events_in_wait_list, event_wait_list, event, errorCode);10441045ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1046if (errcode_ret != nullptr)1047{1048*errcode_ret = errorCode;1049}1050return object;1051}10521053cl_int CL_API_CALL clEnqueueUnmapMemObject(cl_command_queue command_queue,1054cl_mem memobj,1055void *mapped_ptr,1056cl_uint num_events_in_wait_list,1057const cl_event *event_wait_list,1058cl_event *event)1059{1060CL_EVENT(EnqueueUnmapMemObject,1061"command_queue = 0x%016" PRIxPTR ", memobj = 0x%016" PRIxPTR1062", mapped_ptr = 0x%016" PRIxPTR1063", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1064", event = 0x%016" PRIxPTR "",1065(uintptr_t)command_queue, (uintptr_t)memobj, (uintptr_t)mapped_ptr,1066num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);10671068ANGLE_CL_VALIDATE_ERROR(EnqueueUnmapMemObject, command_queue, memobj, mapped_ptr,1069num_events_in_wait_list, event_wait_list, event);10701071return EnqueueUnmapMemObject(command_queue, memobj, mapped_ptr, num_events_in_wait_list,1072event_wait_list, event);1073}10741075cl_int CL_API_CALL clEnqueueNDRangeKernel(cl_command_queue command_queue,1076cl_kernel kernel,1077cl_uint work_dim,1078const size_t *global_work_offset,1079const size_t *global_work_size,1080const size_t *local_work_size,1081cl_uint num_events_in_wait_list,1082const cl_event *event_wait_list,1083cl_event *event)1084{1085CL_EVENT(EnqueueNDRangeKernel,1086"command_queue = 0x%016" PRIxPTR ", kernel = 0x%016" PRIxPTR1087", work_dim = %u, global_work_offset = 0x%016" PRIxPTR1088", global_work_size = 0x%016" PRIxPTR ", local_work_size = 0x%016" PRIxPTR1089", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1090", event = 0x%016" PRIxPTR "",1091(uintptr_t)command_queue, (uintptr_t)kernel, work_dim, (uintptr_t)global_work_offset,1092(uintptr_t)global_work_size, (uintptr_t)local_work_size, num_events_in_wait_list,1093(uintptr_t)event_wait_list, (uintptr_t)event);10941095ANGLE_CL_VALIDATE_ERROR(EnqueueNDRangeKernel, command_queue, kernel, work_dim,1096global_work_offset, global_work_size, local_work_size,1097num_events_in_wait_list, event_wait_list, event);10981099return EnqueueNDRangeKernel(command_queue, kernel, work_dim, global_work_offset,1100global_work_size, local_work_size, num_events_in_wait_list,1101event_wait_list, event);1102}11031104cl_int CL_API_CALL clEnqueueNativeKernel(cl_command_queue command_queue,1105void(CL_CALLBACK *user_func)(void *),1106void *args,1107size_t cb_args,1108cl_uint num_mem_objects,1109const cl_mem *mem_list,1110const void **args_mem_loc,1111cl_uint num_events_in_wait_list,1112const cl_event *event_wait_list,1113cl_event *event)1114{1115CL_EVENT(EnqueueNativeKernel,1116"command_queue = 0x%016" PRIxPTR ", user_func = 0x%016" PRIxPTR1117", args = 0x%016" PRIxPTR1118", cb_args = %zu, num_mem_objects = %u, mem_list = 0x%016" PRIxPTR1119", args_mem_loc = 0x%016" PRIxPTR1120", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1121", event = 0x%016" PRIxPTR "",1122(uintptr_t)command_queue, (uintptr_t)user_func, (uintptr_t)args, cb_args,1123num_mem_objects, (uintptr_t)mem_list, (uintptr_t)args_mem_loc, num_events_in_wait_list,1124(uintptr_t)event_wait_list, (uintptr_t)event);11251126ANGLE_CL_VALIDATE_ERROR(EnqueueNativeKernel, command_queue, user_func, args, cb_args,1127num_mem_objects, mem_list, args_mem_loc, num_events_in_wait_list,1128event_wait_list, event);11291130return EnqueueNativeKernel(command_queue, user_func, args, cb_args, num_mem_objects, mem_list,1131args_mem_loc, num_events_in_wait_list, event_wait_list, event);1132}11331134cl_int CL_API_CALL clSetCommandQueueProperty(cl_command_queue command_queue,1135cl_command_queue_properties properties,1136cl_bool enable,1137cl_command_queue_properties *old_properties)1138{1139CL_EVENT(SetCommandQueueProperty,1140"command_queue = 0x%016" PRIxPTR1141", properties = %llu, enable = %u, old_properties = 0x%016" PRIxPTR "",1142(uintptr_t)command_queue, static_cast<unsigned long long>(properties), enable,1143(uintptr_t)old_properties);11441145CommandQueueProperties propertiesPacked = PackParam<CommandQueueProperties>(properties);11461147ANGLE_CL_VALIDATE_ERROR(SetCommandQueueProperty, command_queue, propertiesPacked, enable,1148old_properties);11491150return SetCommandQueueProperty(command_queue, propertiesPacked, enable, old_properties);1151}11521153cl_mem CL_API_CALL clCreateImage2D(cl_context context,1154cl_mem_flags flags,1155const cl_image_format *image_format,1156size_t image_width,1157size_t image_height,1158size_t image_row_pitch,1159void *host_ptr,1160cl_int *errcode_ret)1161{1162CL_EVENT(1163CreateImage2D,1164"context = 0x%016" PRIxPTR ", flags = %llu, image_format = 0x%016" PRIxPTR1165", image_width = %zu, image_height = %zu, image_row_pitch = %zu, host_ptr = 0x%016" PRIxPTR1166", errcode_ret = 0x%016" PRIxPTR "",1167(uintptr_t)context, static_cast<unsigned long long>(flags), (uintptr_t)image_format,1168image_width, image_height, image_row_pitch, (uintptr_t)host_ptr, (uintptr_t)errcode_ret);11691170MemFlags flagsPacked = PackParam<MemFlags>(flags);11711172ANGLE_CL_VALIDATE_ERRCODE_RET(CreateImage2D, context, flagsPacked, image_format, image_width,1173image_height, image_row_pitch, host_ptr);11741175cl_int errorCode = CL_SUCCESS;1176cl_mem object = CreateImage2D(context, flagsPacked, image_format, image_width, image_height,1177image_row_pitch, host_ptr, errorCode);11781179ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1180if (errcode_ret != nullptr)1181{1182*errcode_ret = errorCode;1183}1184return object;1185}11861187cl_mem CL_API_CALL clCreateImage3D(cl_context context,1188cl_mem_flags flags,1189const cl_image_format *image_format,1190size_t image_width,1191size_t image_height,1192size_t image_depth,1193size_t image_row_pitch,1194size_t image_slice_pitch,1195void *host_ptr,1196cl_int *errcode_ret)1197{1198CL_EVENT(CreateImage3D,1199"context = 0x%016" PRIxPTR ", flags = %llu, image_format = 0x%016" PRIxPTR1200", image_width = %zu, image_height = %zu, image_depth = %zu, image_row_pitch = %zu, "1201"image_slice_pitch = %zu, host_ptr = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR1202"",1203(uintptr_t)context, static_cast<unsigned long long>(flags), (uintptr_t)image_format,1204image_width, image_height, image_depth, image_row_pitch, image_slice_pitch,1205(uintptr_t)host_ptr, (uintptr_t)errcode_ret);12061207MemFlags flagsPacked = PackParam<MemFlags>(flags);12081209ANGLE_CL_VALIDATE_ERRCODE_RET(CreateImage3D, context, flagsPacked, image_format, image_width,1210image_height, image_depth, image_row_pitch, image_slice_pitch,1211host_ptr);12121213cl_int errorCode = CL_SUCCESS;1214cl_mem object =1215CreateImage3D(context, flagsPacked, image_format, image_width, image_height, image_depth,1216image_row_pitch, image_slice_pitch, host_ptr, errorCode);12171218ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1219if (errcode_ret != nullptr)1220{1221*errcode_ret = errorCode;1222}1223return object;1224}12251226cl_int CL_API_CALL clEnqueueMarker(cl_command_queue command_queue, cl_event *event)1227{1228CL_EVENT(EnqueueMarker, "command_queue = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",1229(uintptr_t)command_queue, (uintptr_t)event);12301231ANGLE_CL_VALIDATE_ERROR(EnqueueMarker, command_queue, event);12321233return EnqueueMarker(command_queue, event);1234}12351236cl_int CL_API_CALL clEnqueueWaitForEvents(cl_command_queue command_queue,1237cl_uint num_events,1238const cl_event *event_list)1239{1240CL_EVENT(EnqueueWaitForEvents,1241"command_queue = 0x%016" PRIxPTR ", num_events = %u, event_list = 0x%016" PRIxPTR "",1242(uintptr_t)command_queue, num_events, (uintptr_t)event_list);12431244ANGLE_CL_VALIDATE_ERROR(EnqueueWaitForEvents, command_queue, num_events, event_list);12451246return EnqueueWaitForEvents(command_queue, num_events, event_list);1247}12481249cl_int CL_API_CALL clEnqueueBarrier(cl_command_queue command_queue)1250{1251CL_EVENT(EnqueueBarrier, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);12521253ANGLE_CL_VALIDATE_ERROR(EnqueueBarrier, command_queue);12541255return EnqueueBarrier(command_queue);1256}12571258cl_int CL_API_CALL clUnloadCompiler()1259{1260CL_EVENT(UnloadCompiler, "");12611262ANGLE_CL_VALIDATE_ERROR(UnloadCompiler);12631264return UnloadCompiler();1265}12661267void *CL_API_CALL clGetExtensionFunctionAddress(const char *func_name)1268{1269CL_EVENT(GetExtensionFunctionAddress, "func_name = 0x%016" PRIxPTR "", (uintptr_t)func_name);12701271ANGLE_CL_VALIDATE_POINTER(GetExtensionFunctionAddress, func_name);12721273return GetExtensionFunctionAddress(func_name);1274}12751276cl_command_queue CL_API_CALL clCreateCommandQueue(cl_context context,1277cl_device_id device,1278cl_command_queue_properties properties,1279cl_int *errcode_ret)1280{1281CL_EVENT(CreateCommandQueue,1282"context = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR1283", properties = %llu, errcode_ret = 0x%016" PRIxPTR "",1284(uintptr_t)context, (uintptr_t)device, static_cast<unsigned long long>(properties),1285(uintptr_t)errcode_ret);12861287CommandQueueProperties propertiesPacked = PackParam<CommandQueueProperties>(properties);12881289ANGLE_CL_VALIDATE_ERRCODE_RET(CreateCommandQueue, context, device, propertiesPacked);12901291cl_int errorCode = CL_SUCCESS;1292cl_command_queue object = CreateCommandQueue(context, device, propertiesPacked, errorCode);12931294ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1295if (errcode_ret != nullptr)1296{1297*errcode_ret = errorCode;1298}1299return object;1300}13011302cl_sampler CL_API_CALL clCreateSampler(cl_context context,1303cl_bool normalized_coords,1304cl_addressing_mode addressing_mode,1305cl_filter_mode filter_mode,1306cl_int *errcode_ret)1307{1308CL_EVENT(CreateSampler,1309"context = 0x%016" PRIxPTR1310", normalized_coords = %u, addressing_mode = %u, filter_mode = %u, errcode_ret = "1311"0x%016" PRIxPTR "",1312(uintptr_t)context, normalized_coords, addressing_mode, filter_mode,1313(uintptr_t)errcode_ret);13141315AddressingMode addressing_modePacked = PackParam<AddressingMode>(addressing_mode);1316FilterMode filter_modePacked = PackParam<FilterMode>(filter_mode);13171318ANGLE_CL_VALIDATE_ERRCODE_RET(CreateSampler, context, normalized_coords, addressing_modePacked,1319filter_modePacked);13201321cl_int errorCode = CL_SUCCESS;1322cl_sampler object = CreateSampler(context, normalized_coords, addressing_modePacked,1323filter_modePacked, errorCode);13241325ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1326if (errcode_ret != nullptr)1327{1328*errcode_ret = errorCode;1329}1330return object;1331}13321333cl_int CL_API_CALL clEnqueueTask(cl_command_queue command_queue,1334cl_kernel kernel,1335cl_uint num_events_in_wait_list,1336const cl_event *event_wait_list,1337cl_event *event)1338{1339CL_EVENT(EnqueueTask,1340"command_queue = 0x%016" PRIxPTR ", kernel = 0x%016" PRIxPTR1341", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1342", event = 0x%016" PRIxPTR "",1343(uintptr_t)command_queue, (uintptr_t)kernel, num_events_in_wait_list,1344(uintptr_t)event_wait_list, (uintptr_t)event);13451346ANGLE_CL_VALIDATE_ERROR(EnqueueTask, command_queue, kernel, num_events_in_wait_list,1347event_wait_list, event);13481349return EnqueueTask(command_queue, kernel, num_events_in_wait_list, event_wait_list, event);1350}13511352// CL 1.11353cl_mem CL_API_CALL clCreateSubBuffer(cl_mem buffer,1354cl_mem_flags flags,1355cl_buffer_create_type buffer_create_type,1356const void *buffer_create_info,1357cl_int *errcode_ret)1358{1359CL_EVENT(CreateSubBuffer,1360"buffer = 0x%016" PRIxPTR1361", flags = %llu, buffer_create_type = %u, buffer_create_info = 0x%016" PRIxPTR1362", errcode_ret = 0x%016" PRIxPTR "",1363(uintptr_t)buffer, static_cast<unsigned long long>(flags), buffer_create_type,1364(uintptr_t)buffer_create_info, (uintptr_t)errcode_ret);13651366MemFlags flagsPacked = PackParam<MemFlags>(flags);13671368ANGLE_CL_VALIDATE_ERRCODE_RET(CreateSubBuffer, buffer, flagsPacked, buffer_create_type,1369buffer_create_info);13701371cl_int errorCode = CL_SUCCESS;1372cl_mem object =1373CreateSubBuffer(buffer, flagsPacked, buffer_create_type, buffer_create_info, errorCode);13741375ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1376if (errcode_ret != nullptr)1377{1378*errcode_ret = errorCode;1379}1380return object;1381}13821383cl_int CL_API_CALL clSetMemObjectDestructorCallback(cl_mem memobj,1384void(CL_CALLBACK *pfn_notify)(cl_mem memobj,1385void *user_data),1386void *user_data)1387{1388CL_EVENT(SetMemObjectDestructorCallback,1389"memobj = 0x%016" PRIxPTR ", pfn_notify = 0x%016" PRIxPTR1390", user_data = 0x%016" PRIxPTR "",1391(uintptr_t)memobj, (uintptr_t)pfn_notify, (uintptr_t)user_data);13921393ANGLE_CL_VALIDATE_ERROR(SetMemObjectDestructorCallback, memobj, pfn_notify, user_data);13941395return SetMemObjectDestructorCallback(memobj, pfn_notify, user_data);1396}13971398cl_event CL_API_CALL clCreateUserEvent(cl_context context, cl_int *errcode_ret)1399{1400CL_EVENT(CreateUserEvent, "context = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",1401(uintptr_t)context, (uintptr_t)errcode_ret);14021403ANGLE_CL_VALIDATE_ERRCODE_RET(CreateUserEvent, context);14041405cl_int errorCode = CL_SUCCESS;1406cl_event object = CreateUserEvent(context, errorCode);14071408ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1409if (errcode_ret != nullptr)1410{1411*errcode_ret = errorCode;1412}1413return object;1414}14151416cl_int CL_API_CALL clSetUserEventStatus(cl_event event, cl_int execution_status)1417{1418CL_EVENT(SetUserEventStatus, "event = 0x%016" PRIxPTR ", execution_status = %d",1419(uintptr_t)event, execution_status);14201421ANGLE_CL_VALIDATE_ERROR(SetUserEventStatus, event, execution_status);14221423return SetUserEventStatus(event, execution_status);1424}14251426cl_int CL_API_CALL clSetEventCallback(cl_event event,1427cl_int command_exec_callback_type,1428void(CL_CALLBACK *pfn_notify)(cl_event event,1429cl_int event_command_status,1430void *user_data),1431void *user_data)1432{1433CL_EVENT(1434SetEventCallback,1435"event = 0x%016" PRIxPTR ", command_exec_callback_type = %d, pfn_notify = 0x%016" PRIxPTR1436", user_data = 0x%016" PRIxPTR "",1437(uintptr_t)event, command_exec_callback_type, (uintptr_t)pfn_notify, (uintptr_t)user_data);14381439ANGLE_CL_VALIDATE_ERROR(SetEventCallback, event, command_exec_callback_type, pfn_notify,1440user_data);14411442return SetEventCallback(event, command_exec_callback_type, pfn_notify, user_data);1443}14441445cl_int CL_API_CALL clEnqueueReadBufferRect(cl_command_queue command_queue,1446cl_mem buffer,1447cl_bool blocking_read,1448const size_t *buffer_origin,1449const size_t *host_origin,1450const size_t *region,1451size_t buffer_row_pitch,1452size_t buffer_slice_pitch,1453size_t host_row_pitch,1454size_t host_slice_pitch,1455void *ptr,1456cl_uint num_events_in_wait_list,1457const cl_event *event_wait_list,1458cl_event *event)1459{1460CL_EVENT(EnqueueReadBufferRect,1461"command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR1462", blocking_read = %u, buffer_origin = 0x%016" PRIxPTR ", host_origin = 0x%016" PRIxPTR1463", region = 0x%016" PRIxPTR1464", buffer_row_pitch = %zu, buffer_slice_pitch = %zu, host_row_pitch = %zu, "1465"host_slice_pitch = %zu, ptr = 0x%016" PRIxPTR1466", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1467", event = 0x%016" PRIxPTR "",1468(uintptr_t)command_queue, (uintptr_t)buffer, blocking_read, (uintptr_t)buffer_origin,1469(uintptr_t)host_origin, (uintptr_t)region, buffer_row_pitch, buffer_slice_pitch,1470host_row_pitch, host_slice_pitch, (uintptr_t)ptr, num_events_in_wait_list,1471(uintptr_t)event_wait_list, (uintptr_t)event);14721473ANGLE_CL_VALIDATE_ERROR(EnqueueReadBufferRect, command_queue, buffer, blocking_read,1474buffer_origin, host_origin, region, buffer_row_pitch,1475buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr,1476num_events_in_wait_list, event_wait_list, event);14771478return EnqueueReadBufferRect(command_queue, buffer, blocking_read, buffer_origin, host_origin,1479region, buffer_row_pitch, buffer_slice_pitch, host_row_pitch,1480host_slice_pitch, ptr, num_events_in_wait_list, event_wait_list,1481event);1482}14831484cl_int CL_API_CALL clEnqueueWriteBufferRect(cl_command_queue command_queue,1485cl_mem buffer,1486cl_bool blocking_write,1487const size_t *buffer_origin,1488const size_t *host_origin,1489const size_t *region,1490size_t buffer_row_pitch,1491size_t buffer_slice_pitch,1492size_t host_row_pitch,1493size_t host_slice_pitch,1494const void *ptr,1495cl_uint num_events_in_wait_list,1496const cl_event *event_wait_list,1497cl_event *event)1498{1499CL_EVENT(EnqueueWriteBufferRect,1500"command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR1501", blocking_write = %u, buffer_origin = 0x%016" PRIxPTR1502", host_origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR1503", buffer_row_pitch = %zu, buffer_slice_pitch = %zu, host_row_pitch = %zu, "1504"host_slice_pitch = %zu, ptr = 0x%016" PRIxPTR1505", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1506", event = 0x%016" PRIxPTR "",1507(uintptr_t)command_queue, (uintptr_t)buffer, blocking_write, (uintptr_t)buffer_origin,1508(uintptr_t)host_origin, (uintptr_t)region, buffer_row_pitch, buffer_slice_pitch,1509host_row_pitch, host_slice_pitch, (uintptr_t)ptr, num_events_in_wait_list,1510(uintptr_t)event_wait_list, (uintptr_t)event);15111512ANGLE_CL_VALIDATE_ERROR(EnqueueWriteBufferRect, command_queue, buffer, blocking_write,1513buffer_origin, host_origin, region, buffer_row_pitch,1514buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr,1515num_events_in_wait_list, event_wait_list, event);15161517return EnqueueWriteBufferRect(command_queue, buffer, blocking_write, buffer_origin, host_origin,1518region, buffer_row_pitch, buffer_slice_pitch, host_row_pitch,1519host_slice_pitch, ptr, num_events_in_wait_list, event_wait_list,1520event);1521}15221523cl_int CL_API_CALL clEnqueueCopyBufferRect(cl_command_queue command_queue,1524cl_mem src_buffer,1525cl_mem dst_buffer,1526const size_t *src_origin,1527const size_t *dst_origin,1528const size_t *region,1529size_t src_row_pitch,1530size_t src_slice_pitch,1531size_t dst_row_pitch,1532size_t dst_slice_pitch,1533cl_uint num_events_in_wait_list,1534const cl_event *event_wait_list,1535cl_event *event)1536{1537CL_EVENT(EnqueueCopyBufferRect,1538"command_queue = 0x%016" PRIxPTR ", src_buffer = 0x%016" PRIxPTR1539", dst_buffer = 0x%016" PRIxPTR ", src_origin = 0x%016" PRIxPTR1540", dst_origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR1541", src_row_pitch = %zu, src_slice_pitch = %zu, dst_row_pitch = %zu, dst_slice_pitch = "1542"%zu, num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1543", event = 0x%016" PRIxPTR "",1544(uintptr_t)command_queue, (uintptr_t)src_buffer, (uintptr_t)dst_buffer,1545(uintptr_t)src_origin, (uintptr_t)dst_origin, (uintptr_t)region, src_row_pitch,1546src_slice_pitch, dst_row_pitch, dst_slice_pitch, num_events_in_wait_list,1547(uintptr_t)event_wait_list, (uintptr_t)event);15481549ANGLE_CL_VALIDATE_ERROR(EnqueueCopyBufferRect, command_queue, src_buffer, dst_buffer,1550src_origin, dst_origin, region, src_row_pitch, src_slice_pitch,1551dst_row_pitch, dst_slice_pitch, num_events_in_wait_list,1552event_wait_list, event);15531554return EnqueueCopyBufferRect(command_queue, src_buffer, dst_buffer, src_origin, dst_origin,1555region, src_row_pitch, src_slice_pitch, dst_row_pitch,1556dst_slice_pitch, num_events_in_wait_list, event_wait_list, event);1557}15581559// CL 1.21560cl_int CL_API_CALL clCreateSubDevices(cl_device_id in_device,1561const cl_device_partition_property *properties,1562cl_uint num_devices,1563cl_device_id *out_devices,1564cl_uint *num_devices_ret)1565{1566CL_EVENT(CreateSubDevices,1567"in_device = 0x%016" PRIxPTR ", properties = 0x%016" PRIxPTR1568", num_devices = %u, out_devices = 0x%016" PRIxPTR ", num_devices_ret = 0x%016" PRIxPTR1569"",1570(uintptr_t)in_device, (uintptr_t)properties, num_devices, (uintptr_t)out_devices,1571(uintptr_t)num_devices_ret);15721573ANGLE_CL_VALIDATE_ERROR(CreateSubDevices, in_device, properties, num_devices, out_devices,1574num_devices_ret);15751576return CreateSubDevices(in_device, properties, num_devices, out_devices, num_devices_ret);1577}15781579cl_int CL_API_CALL clRetainDevice(cl_device_id device)1580{1581CL_EVENT(RetainDevice, "device = 0x%016" PRIxPTR "", (uintptr_t)device);15821583ANGLE_CL_VALIDATE_ERROR(RetainDevice, device);15841585return RetainDevice(device);1586}15871588cl_int CL_API_CALL clReleaseDevice(cl_device_id device)1589{1590CL_EVENT(ReleaseDevice, "device = 0x%016" PRIxPTR "", (uintptr_t)device);15911592ANGLE_CL_VALIDATE_ERROR(ReleaseDevice, device);15931594return ReleaseDevice(device);1595}15961597cl_mem CL_API_CALL clCreateImage(cl_context context,1598cl_mem_flags flags,1599const cl_image_format *image_format,1600const cl_image_desc *image_desc,1601void *host_ptr,1602cl_int *errcode_ret)1603{1604CL_EVENT(CreateImage,1605"context = 0x%016" PRIxPTR ", flags = %llu, image_format = 0x%016" PRIxPTR1606", image_desc = 0x%016" PRIxPTR ", host_ptr = 0x%016" PRIxPTR1607", errcode_ret = 0x%016" PRIxPTR "",1608(uintptr_t)context, static_cast<unsigned long long>(flags), (uintptr_t)image_format,1609(uintptr_t)image_desc, (uintptr_t)host_ptr, (uintptr_t)errcode_ret);16101611MemFlags flagsPacked = PackParam<MemFlags>(flags);16121613ANGLE_CL_VALIDATE_ERRCODE_RET(CreateImage, context, flagsPacked, image_format, image_desc,1614host_ptr);16151616cl_int errorCode = CL_SUCCESS;1617cl_mem object =1618CreateImage(context, flagsPacked, image_format, image_desc, host_ptr, errorCode);16191620ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1621if (errcode_ret != nullptr)1622{1623*errcode_ret = errorCode;1624}1625return object;1626}16271628cl_program CL_API_CALL clCreateProgramWithBuiltInKernels(cl_context context,1629cl_uint num_devices,1630const cl_device_id *device_list,1631const char *kernel_names,1632cl_int *errcode_ret)1633{1634CL_EVENT(CreateProgramWithBuiltInKernels,1635"context = 0x%016" PRIxPTR ", num_devices = %u, device_list = 0x%016" PRIxPTR1636", kernel_names = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",1637(uintptr_t)context, num_devices, (uintptr_t)device_list, (uintptr_t)kernel_names,1638(uintptr_t)errcode_ret);16391640ANGLE_CL_VALIDATE_ERRCODE_RET(CreateProgramWithBuiltInKernels, context, num_devices,1641device_list, kernel_names);16421643cl_int errorCode = CL_SUCCESS;1644cl_program object =1645CreateProgramWithBuiltInKernels(context, num_devices, device_list, kernel_names, errorCode);16461647ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1648if (errcode_ret != nullptr)1649{1650*errcode_ret = errorCode;1651}1652return object;1653}16541655cl_int CL_API_CALL clCompileProgram(cl_program program,1656cl_uint num_devices,1657const cl_device_id *device_list,1658const char *options,1659cl_uint num_input_headers,1660const cl_program *input_headers,1661const char **header_include_names,1662void(CL_CALLBACK *pfn_notify)(cl_program program,1663void *user_data),1664void *user_data)1665{1666CL_EVENT(CompileProgram,1667"program = 0x%016" PRIxPTR ", num_devices = %u, device_list = 0x%016" PRIxPTR1668", options = 0x%016" PRIxPTR ", num_input_headers = %u, input_headers = 0x%016" PRIxPTR1669", header_include_names = 0x%016" PRIxPTR ", pfn_notify = 0x%016" PRIxPTR1670", user_data = 0x%016" PRIxPTR "",1671(uintptr_t)program, num_devices, (uintptr_t)device_list, (uintptr_t)options,1672num_input_headers, (uintptr_t)input_headers, (uintptr_t)header_include_names,1673(uintptr_t)pfn_notify, (uintptr_t)user_data);16741675ANGLE_CL_VALIDATE_ERROR(CompileProgram, program, num_devices, device_list, options,1676num_input_headers, input_headers, header_include_names, pfn_notify,1677user_data);16781679return CompileProgram(program, num_devices, device_list, options, num_input_headers,1680input_headers, header_include_names, pfn_notify, user_data);1681}16821683cl_program CL_API_CALL clLinkProgram(cl_context context,1684cl_uint num_devices,1685const cl_device_id *device_list,1686const char *options,1687cl_uint num_input_programs,1688const cl_program *input_programs,1689void(CL_CALLBACK *pfn_notify)(cl_program program,1690void *user_data),1691void *user_data,1692cl_int *errcode_ret)1693{1694CL_EVENT(LinkProgram,1695"context = 0x%016" PRIxPTR ", num_devices = %u, device_list = 0x%016" PRIxPTR1696", options = 0x%016" PRIxPTR1697", num_input_programs = %u, input_programs = 0x%016" PRIxPTR1698", pfn_notify = 0x%016" PRIxPTR ", user_data = 0x%016" PRIxPTR1699", errcode_ret = 0x%016" PRIxPTR "",1700(uintptr_t)context, num_devices, (uintptr_t)device_list, (uintptr_t)options,1701num_input_programs, (uintptr_t)input_programs, (uintptr_t)pfn_notify,1702(uintptr_t)user_data, (uintptr_t)errcode_ret);17031704ANGLE_CL_VALIDATE_ERRCODE_RET(LinkProgram, context, num_devices, device_list, options,1705num_input_programs, input_programs, pfn_notify, user_data);17061707cl_int errorCode = CL_SUCCESS;1708cl_program object = LinkProgram(context, num_devices, device_list, options, num_input_programs,1709input_programs, pfn_notify, user_data, errorCode);17101711ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1712if (errcode_ret != nullptr)1713{1714*errcode_ret = errorCode;1715}1716return object;1717}17181719cl_int CL_API_CALL clUnloadPlatformCompiler(cl_platform_id platform)1720{1721CL_EVENT(UnloadPlatformCompiler, "platform = 0x%016" PRIxPTR "", (uintptr_t)platform);17221723ANGLE_CL_VALIDATE_ERROR(UnloadPlatformCompiler, platform);17241725return UnloadPlatformCompiler(platform);1726}17271728cl_int CL_API_CALL clGetKernelArgInfo(cl_kernel kernel,1729cl_uint arg_index,1730cl_kernel_arg_info param_name,1731size_t param_value_size,1732void *param_value,1733size_t *param_value_size_ret)1734{1735CL_EVENT(1736GetKernelArgInfo,1737"kernel = 0x%016" PRIxPTR1738", arg_index = %u, param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR1739", param_value_size_ret = 0x%016" PRIxPTR "",1740(uintptr_t)kernel, arg_index, param_name, param_value_size, (uintptr_t)param_value,1741(uintptr_t)param_value_size_ret);17421743KernelArgInfo param_namePacked = PackParam<KernelArgInfo>(param_name);17441745ANGLE_CL_VALIDATE_ERROR(GetKernelArgInfo, kernel, arg_index, param_namePacked, param_value_size,1746param_value, param_value_size_ret);17471748return GetKernelArgInfo(kernel, arg_index, param_namePacked, param_value_size, param_value,1749param_value_size_ret);1750}17511752cl_int CL_API_CALL clEnqueueFillBuffer(cl_command_queue command_queue,1753cl_mem buffer,1754const void *pattern,1755size_t pattern_size,1756size_t offset,1757size_t size,1758cl_uint num_events_in_wait_list,1759const cl_event *event_wait_list,1760cl_event *event)1761{1762CL_EVENT(EnqueueFillBuffer,1763"command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR1764", pattern = 0x%016" PRIxPTR1765", pattern_size = %zu, offset = %zu, size = %zu, num_events_in_wait_list = %u, "1766"event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",1767(uintptr_t)command_queue, (uintptr_t)buffer, (uintptr_t)pattern, pattern_size, offset,1768size, num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);17691770ANGLE_CL_VALIDATE_ERROR(EnqueueFillBuffer, command_queue, buffer, pattern, pattern_size, offset,1771size, num_events_in_wait_list, event_wait_list, event);17721773return EnqueueFillBuffer(command_queue, buffer, pattern, pattern_size, offset, size,1774num_events_in_wait_list, event_wait_list, event);1775}17761777cl_int CL_API_CALL clEnqueueFillImage(cl_command_queue command_queue,1778cl_mem image,1779const void *fill_color,1780const size_t *origin,1781const size_t *region,1782cl_uint num_events_in_wait_list,1783const cl_event *event_wait_list,1784cl_event *event)1785{1786CL_EVENT(EnqueueFillImage,1787"command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR1788", fill_color = 0x%016" PRIxPTR ", origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR1789", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1790", event = 0x%016" PRIxPTR "",1791(uintptr_t)command_queue, (uintptr_t)image, (uintptr_t)fill_color, (uintptr_t)origin,1792(uintptr_t)region, num_events_in_wait_list, (uintptr_t)event_wait_list,1793(uintptr_t)event);17941795ANGLE_CL_VALIDATE_ERROR(EnqueueFillImage, command_queue, image, fill_color, origin, region,1796num_events_in_wait_list, event_wait_list, event);17971798return EnqueueFillImage(command_queue, image, fill_color, origin, region,1799num_events_in_wait_list, event_wait_list, event);1800}18011802cl_int CL_API_CALL clEnqueueMigrateMemObjects(cl_command_queue command_queue,1803cl_uint num_mem_objects,1804const cl_mem *mem_objects,1805cl_mem_migration_flags flags,1806cl_uint num_events_in_wait_list,1807const cl_event *event_wait_list,1808cl_event *event)1809{1810CL_EVENT(EnqueueMigrateMemObjects,1811"command_queue = 0x%016" PRIxPTR ", num_mem_objects = %u, mem_objects = 0x%016" PRIxPTR1812", flags = %llu, num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1813", event = 0x%016" PRIxPTR "",1814(uintptr_t)command_queue, num_mem_objects, (uintptr_t)mem_objects,1815static_cast<unsigned long long>(flags), num_events_in_wait_list,1816(uintptr_t)event_wait_list, (uintptr_t)event);18171818MemMigrationFlags flagsPacked = PackParam<MemMigrationFlags>(flags);18191820ANGLE_CL_VALIDATE_ERROR(EnqueueMigrateMemObjects, command_queue, num_mem_objects, mem_objects,1821flagsPacked, num_events_in_wait_list, event_wait_list, event);18221823return EnqueueMigrateMemObjects(command_queue, num_mem_objects, mem_objects, flagsPacked,1824num_events_in_wait_list, event_wait_list, event);1825}18261827cl_int CL_API_CALL clEnqueueMarkerWithWaitList(cl_command_queue command_queue,1828cl_uint num_events_in_wait_list,1829const cl_event *event_wait_list,1830cl_event *event)1831{1832CL_EVENT(EnqueueMarkerWithWaitList,1833"command_queue = 0x%016" PRIxPTR1834", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1835", event = 0x%016" PRIxPTR "",1836(uintptr_t)command_queue, num_events_in_wait_list, (uintptr_t)event_wait_list,1837(uintptr_t)event);18381839ANGLE_CL_VALIDATE_ERROR(EnqueueMarkerWithWaitList, command_queue, num_events_in_wait_list,1840event_wait_list, event);18411842return EnqueueMarkerWithWaitList(command_queue, num_events_in_wait_list, event_wait_list,1843event);1844}18451846cl_int CL_API_CALL clEnqueueBarrierWithWaitList(cl_command_queue command_queue,1847cl_uint num_events_in_wait_list,1848const cl_event *event_wait_list,1849cl_event *event)1850{1851CL_EVENT(EnqueueBarrierWithWaitList,1852"command_queue = 0x%016" PRIxPTR1853", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR1854", event = 0x%016" PRIxPTR "",1855(uintptr_t)command_queue, num_events_in_wait_list, (uintptr_t)event_wait_list,1856(uintptr_t)event);18571858ANGLE_CL_VALIDATE_ERROR(EnqueueBarrierWithWaitList, command_queue, num_events_in_wait_list,1859event_wait_list, event);18601861return EnqueueBarrierWithWaitList(command_queue, num_events_in_wait_list, event_wait_list,1862event);1863}18641865void *CL_API_CALL clGetExtensionFunctionAddressForPlatform(cl_platform_id platform,1866const char *func_name)1867{1868CL_EVENT(GetExtensionFunctionAddressForPlatform,1869"platform = 0x%016" PRIxPTR ", func_name = 0x%016" PRIxPTR "", (uintptr_t)platform,1870(uintptr_t)func_name);18711872ANGLE_CL_VALIDATE_POINTER(GetExtensionFunctionAddressForPlatform, platform, func_name);18731874return GetExtensionFunctionAddressForPlatform(platform, func_name);1875}18761877// CL 2.01878cl_command_queue CL_API_CALL1879clCreateCommandQueueWithProperties(cl_context context,1880cl_device_id device,1881const cl_queue_properties *properties,1882cl_int *errcode_ret)1883{1884CL_EVENT(CreateCommandQueueWithProperties,1885"context = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR ", properties = 0x%016" PRIxPTR1886", errcode_ret = 0x%016" PRIxPTR "",1887(uintptr_t)context, (uintptr_t)device, (uintptr_t)properties, (uintptr_t)errcode_ret);18881889ANGLE_CL_VALIDATE_ERRCODE_RET(CreateCommandQueueWithProperties, context, device, properties);18901891cl_int errorCode = CL_SUCCESS;1892cl_command_queue object =1893CreateCommandQueueWithProperties(context, device, properties, errorCode);18941895ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1896if (errcode_ret != nullptr)1897{1898*errcode_ret = errorCode;1899}1900return object;1901}19021903cl_mem CL_API_CALL clCreatePipe(cl_context context,1904cl_mem_flags flags,1905cl_uint pipe_packet_size,1906cl_uint pipe_max_packets,1907const cl_pipe_properties *properties,1908cl_int *errcode_ret)1909{1910CL_EVENT(1911CreatePipe,1912"context = 0x%016" PRIxPTR1913", flags = %llu, pipe_packet_size = %u, pipe_max_packets = %u, properties = 0x%016" PRIxPTR1914", errcode_ret = 0x%016" PRIxPTR "",1915(uintptr_t)context, static_cast<unsigned long long>(flags), pipe_packet_size,1916pipe_max_packets, (uintptr_t)properties, (uintptr_t)errcode_ret);19171918MemFlags flagsPacked = PackParam<MemFlags>(flags);19191920ANGLE_CL_VALIDATE_ERRCODE_RET(CreatePipe, context, flagsPacked, pipe_packet_size,1921pipe_max_packets, properties);19221923cl_int errorCode = CL_SUCCESS;1924cl_mem object =1925CreatePipe(context, flagsPacked, pipe_packet_size, pipe_max_packets, properties, errorCode);19261927ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1928if (errcode_ret != nullptr)1929{1930*errcode_ret = errorCode;1931}1932return object;1933}19341935cl_int CL_API_CALL clGetPipeInfo(cl_mem pipe,1936cl_pipe_info param_name,1937size_t param_value_size,1938void *param_value,1939size_t *param_value_size_ret)1940{1941CL_EVENT(GetPipeInfo,1942"pipe = 0x%016" PRIxPTR1943", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR1944", param_value_size_ret = 0x%016" PRIxPTR "",1945(uintptr_t)pipe, param_name, param_value_size, (uintptr_t)param_value,1946(uintptr_t)param_value_size_ret);19471948PipeInfo param_namePacked = PackParam<PipeInfo>(param_name);19491950ANGLE_CL_VALIDATE_ERROR(GetPipeInfo, pipe, param_namePacked, param_value_size, param_value,1951param_value_size_ret);19521953return GetPipeInfo(pipe, param_namePacked, param_value_size, param_value, param_value_size_ret);1954}19551956void *CL_API_CALL clSVMAlloc(cl_context context,1957cl_svm_mem_flags flags,1958size_t size,1959cl_uint alignment)1960{1961CL_EVENT(SVMAlloc, "context = 0x%016" PRIxPTR ", flags = %llu, size = %zu, alignment = %u",1962(uintptr_t)context, static_cast<unsigned long long>(flags), size, alignment);19631964SVM_MemFlags flagsPacked = PackParam<SVM_MemFlags>(flags);19651966ANGLE_CL_VALIDATE_POINTER(SVMAlloc, context, flagsPacked, size, alignment);19671968return SVMAlloc(context, flagsPacked, size, alignment);1969}19701971void CL_API_CALL clSVMFree(cl_context context, void *svm_pointer)1972{1973CL_EVENT(SVMFree, "context = 0x%016" PRIxPTR ", svm_pointer = 0x%016" PRIxPTR "",1974(uintptr_t)context, (uintptr_t)svm_pointer);19751976ANGLE_CL_VALIDATE_VOID(SVMFree, context, svm_pointer);19771978SVMFree(context, svm_pointer);1979}19801981cl_sampler CL_API_CALL1982clCreateSamplerWithProperties(cl_context context,1983const cl_sampler_properties *sampler_properties,1984cl_int *errcode_ret)1985{1986CL_EVENT(CreateSamplerWithProperties,1987"context = 0x%016" PRIxPTR ", sampler_properties = 0x%016" PRIxPTR1988", errcode_ret = 0x%016" PRIxPTR "",1989(uintptr_t)context, (uintptr_t)sampler_properties, (uintptr_t)errcode_ret);19901991ANGLE_CL_VALIDATE_ERRCODE_RET(CreateSamplerWithProperties, context, sampler_properties);19921993cl_int errorCode = CL_SUCCESS;1994cl_sampler object = CreateSamplerWithProperties(context, sampler_properties, errorCode);19951996ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));1997if (errcode_ret != nullptr)1998{1999*errcode_ret = errorCode;2000}2001return object;2002}20032004cl_int CL_API_CALL clSetKernelArgSVMPointer(cl_kernel kernel,2005cl_uint arg_index,2006const void *arg_value)2007{2008CL_EVENT(SetKernelArgSVMPointer,2009"kernel = 0x%016" PRIxPTR ", arg_index = %u, arg_value = 0x%016" PRIxPTR "",2010(uintptr_t)kernel, arg_index, (uintptr_t)arg_value);20112012ANGLE_CL_VALIDATE_ERROR(SetKernelArgSVMPointer, kernel, arg_index, arg_value);20132014return SetKernelArgSVMPointer(kernel, arg_index, arg_value);2015}20162017cl_int CL_API_CALL clSetKernelExecInfo(cl_kernel kernel,2018cl_kernel_exec_info param_name,2019size_t param_value_size,2020const void *param_value)2021{2022CL_EVENT(SetKernelExecInfo,2023"kernel = 0x%016" PRIxPTR2024", param_name = %u, param_value_size = %zu, param_value = 0x%016" PRIxPTR "",2025(uintptr_t)kernel, param_name, param_value_size, (uintptr_t)param_value);20262027KernelExecInfo param_namePacked = PackParam<KernelExecInfo>(param_name);20282029ANGLE_CL_VALIDATE_ERROR(SetKernelExecInfo, kernel, param_namePacked, param_value_size,2030param_value);20312032return SetKernelExecInfo(kernel, param_namePacked, param_value_size, param_value);2033}20342035cl_int CL_API_CALL clEnqueueSVMFree(cl_command_queue command_queue,2036cl_uint num_svm_pointers,2037void *svm_pointers[],2038void(CL_CALLBACK *pfn_free_func)(cl_command_queue queue,2039cl_uint num_svm_pointers,2040void *svm_pointers[],2041void *user_data),2042void *user_data,2043cl_uint num_events_in_wait_list,2044const cl_event *event_wait_list,2045cl_event *event)2046{2047CL_EVENT(EnqueueSVMFree,2048"command_queue = 0x%016" PRIxPTR2049", num_svm_pointers = %u, svm_pointers = 0x%016" PRIxPTR2050", pfn_free_func = 0x%016" PRIxPTR ", user_data = 0x%016" PRIxPTR2051", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR2052", event = 0x%016" PRIxPTR "",2053(uintptr_t)command_queue, num_svm_pointers, (uintptr_t)svm_pointers,2054(uintptr_t)pfn_free_func, (uintptr_t)user_data, num_events_in_wait_list,2055(uintptr_t)event_wait_list, (uintptr_t)event);20562057ANGLE_CL_VALIDATE_ERROR(EnqueueSVMFree, command_queue, num_svm_pointers, svm_pointers,2058pfn_free_func, user_data, num_events_in_wait_list, event_wait_list,2059event);20602061return EnqueueSVMFree(command_queue, num_svm_pointers, svm_pointers, pfn_free_func, user_data,2062num_events_in_wait_list, event_wait_list, event);2063}20642065cl_int CL_API_CALL clEnqueueSVMMemcpy(cl_command_queue command_queue,2066cl_bool blocking_copy,2067void *dst_ptr,2068const void *src_ptr,2069size_t size,2070cl_uint num_events_in_wait_list,2071const cl_event *event_wait_list,2072cl_event *event)2073{2074CL_EVENT(EnqueueSVMMemcpy,2075"command_queue = 0x%016" PRIxPTR ", blocking_copy = %u, dst_ptr = 0x%016" PRIxPTR2076", src_ptr = 0x%016" PRIxPTR2077", size = %zu, num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR2078", event = 0x%016" PRIxPTR "",2079(uintptr_t)command_queue, blocking_copy, (uintptr_t)dst_ptr, (uintptr_t)src_ptr, size,2080num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);20812082ANGLE_CL_VALIDATE_ERROR(EnqueueSVMMemcpy, command_queue, blocking_copy, dst_ptr, src_ptr, size,2083num_events_in_wait_list, event_wait_list, event);20842085return EnqueueSVMMemcpy(command_queue, blocking_copy, dst_ptr, src_ptr, size,2086num_events_in_wait_list, event_wait_list, event);2087}20882089cl_int CL_API_CALL clEnqueueSVMMemFill(cl_command_queue command_queue,2090void *svm_ptr,2091const void *pattern,2092size_t pattern_size,2093size_t size,2094cl_uint num_events_in_wait_list,2095const cl_event *event_wait_list,2096cl_event *event)2097{2098CL_EVENT(EnqueueSVMMemFill,2099"command_queue = 0x%016" PRIxPTR ", svm_ptr = 0x%016" PRIxPTR2100", pattern = 0x%016" PRIxPTR2101", pattern_size = %zu, size = %zu, num_events_in_wait_list = %u, event_wait_list = "2102"0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",2103(uintptr_t)command_queue, (uintptr_t)svm_ptr, (uintptr_t)pattern, pattern_size, size,2104num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);21052106ANGLE_CL_VALIDATE_ERROR(EnqueueSVMMemFill, command_queue, svm_ptr, pattern, pattern_size, size,2107num_events_in_wait_list, event_wait_list, event);21082109return EnqueueSVMMemFill(command_queue, svm_ptr, pattern, pattern_size, size,2110num_events_in_wait_list, event_wait_list, event);2111}21122113cl_int CL_API_CALL clEnqueueSVMMap(cl_command_queue command_queue,2114cl_bool blocking_map,2115cl_map_flags flags,2116void *svm_ptr,2117size_t size,2118cl_uint num_events_in_wait_list,2119const cl_event *event_wait_list,2120cl_event *event)2121{2122CL_EVENT(EnqueueSVMMap,2123"command_queue = 0x%016" PRIxPTR2124", blocking_map = %u, flags = %llu, svm_ptr = 0x%016" PRIxPTR2125", size = %zu, num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR2126", event = 0x%016" PRIxPTR "",2127(uintptr_t)command_queue, blocking_map, static_cast<unsigned long long>(flags),2128(uintptr_t)svm_ptr, size, num_events_in_wait_list, (uintptr_t)event_wait_list,2129(uintptr_t)event);21302131MapFlags flagsPacked = PackParam<MapFlags>(flags);21322133ANGLE_CL_VALIDATE_ERROR(EnqueueSVMMap, command_queue, blocking_map, flagsPacked, svm_ptr, size,2134num_events_in_wait_list, event_wait_list, event);21352136return EnqueueSVMMap(command_queue, blocking_map, flagsPacked, svm_ptr, size,2137num_events_in_wait_list, event_wait_list, event);2138}21392140cl_int CL_API_CALL clEnqueueSVMUnmap(cl_command_queue command_queue,2141void *svm_ptr,2142cl_uint num_events_in_wait_list,2143const cl_event *event_wait_list,2144cl_event *event)2145{2146CL_EVENT(EnqueueSVMUnmap,2147"command_queue = 0x%016" PRIxPTR ", svm_ptr = 0x%016" PRIxPTR2148", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR2149", event = 0x%016" PRIxPTR "",2150(uintptr_t)command_queue, (uintptr_t)svm_ptr, num_events_in_wait_list,2151(uintptr_t)event_wait_list, (uintptr_t)event);21522153ANGLE_CL_VALIDATE_ERROR(EnqueueSVMUnmap, command_queue, svm_ptr, num_events_in_wait_list,2154event_wait_list, event);21552156return EnqueueSVMUnmap(command_queue, svm_ptr, num_events_in_wait_list, event_wait_list, event);2157}21582159// CL 2.12160cl_int CL_API_CALL clSetDefaultDeviceCommandQueue(cl_context context,2161cl_device_id device,2162cl_command_queue command_queue)2163{2164CL_EVENT(SetDefaultDeviceCommandQueue,2165"context = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR2166", command_queue = 0x%016" PRIxPTR "",2167(uintptr_t)context, (uintptr_t)device, (uintptr_t)command_queue);21682169ANGLE_CL_VALIDATE_ERROR(SetDefaultDeviceCommandQueue, context, device, command_queue);21702171return SetDefaultDeviceCommandQueue(context, device, command_queue);2172}21732174cl_int CL_API_CALL clGetDeviceAndHostTimer(cl_device_id device,2175cl_ulong *device_timestamp,2176cl_ulong *host_timestamp)2177{2178CL_EVENT(GetDeviceAndHostTimer,2179"device = 0x%016" PRIxPTR ", device_timestamp = 0x%016" PRIxPTR2180", host_timestamp = 0x%016" PRIxPTR "",2181(uintptr_t)device, (uintptr_t)device_timestamp, (uintptr_t)host_timestamp);21822183ANGLE_CL_VALIDATE_ERROR(GetDeviceAndHostTimer, device, device_timestamp, host_timestamp);21842185return GetDeviceAndHostTimer(device, device_timestamp, host_timestamp);2186}21872188cl_int CL_API_CALL clGetHostTimer(cl_device_id device, cl_ulong *host_timestamp)2189{2190CL_EVENT(GetHostTimer, "device = 0x%016" PRIxPTR ", host_timestamp = 0x%016" PRIxPTR "",2191(uintptr_t)device, (uintptr_t)host_timestamp);21922193ANGLE_CL_VALIDATE_ERROR(GetHostTimer, device, host_timestamp);21942195return GetHostTimer(device, host_timestamp);2196}21972198cl_program CL_API_CALL clCreateProgramWithIL(cl_context context,2199const void *il,2200size_t length,2201cl_int *errcode_ret)2202{2203CL_EVENT(CreateProgramWithIL,2204"context = 0x%016" PRIxPTR ", il = 0x%016" PRIxPTR2205", length = %zu, errcode_ret = 0x%016" PRIxPTR "",2206(uintptr_t)context, (uintptr_t)il, length, (uintptr_t)errcode_ret);22072208ANGLE_CL_VALIDATE_ERRCODE_RET(CreateProgramWithIL, context, il, length);22092210cl_int errorCode = CL_SUCCESS;2211cl_program object = CreateProgramWithIL(context, il, length, errorCode);22122213ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));2214if (errcode_ret != nullptr)2215{2216*errcode_ret = errorCode;2217}2218return object;2219}22202221cl_kernel CL_API_CALL clCloneKernel(cl_kernel source_kernel, cl_int *errcode_ret)2222{2223CL_EVENT(CloneKernel, "source_kernel = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",2224(uintptr_t)source_kernel, (uintptr_t)errcode_ret);22252226ANGLE_CL_VALIDATE_ERRCODE_RET(CloneKernel, source_kernel);22272228cl_int errorCode = CL_SUCCESS;2229cl_kernel object = CloneKernel(source_kernel, errorCode);22302231ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));2232if (errcode_ret != nullptr)2233{2234*errcode_ret = errorCode;2235}2236return object;2237}22382239cl_int CL_API_CALL clGetKernelSubGroupInfo(cl_kernel kernel,2240cl_device_id device,2241cl_kernel_sub_group_info param_name,2242size_t input_value_size,2243const void *input_value,2244size_t param_value_size,2245void *param_value,2246size_t *param_value_size_ret)2247{2248CL_EVENT(GetKernelSubGroupInfo,2249"kernel = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR2250", param_name = %u, input_value_size = %zu, input_value = 0x%016" PRIxPTR2251", param_value_size = %zu, param_value = 0x%016" PRIxPTR2252", param_value_size_ret = 0x%016" PRIxPTR "",2253(uintptr_t)kernel, (uintptr_t)device, param_name, input_value_size,2254(uintptr_t)input_value, param_value_size, (uintptr_t)param_value,2255(uintptr_t)param_value_size_ret);22562257KernelSubGroupInfo param_namePacked = PackParam<KernelSubGroupInfo>(param_name);22582259ANGLE_CL_VALIDATE_ERROR(GetKernelSubGroupInfo, kernel, device, param_namePacked,2260input_value_size, input_value, param_value_size, param_value,2261param_value_size_ret);22622263return GetKernelSubGroupInfo(kernel, device, param_namePacked, input_value_size, input_value,2264param_value_size, param_value, param_value_size_ret);2265}22662267cl_int CL_API_CALL clEnqueueSVMMigrateMem(cl_command_queue command_queue,2268cl_uint num_svm_pointers,2269const void **svm_pointers,2270const size_t *sizes,2271cl_mem_migration_flags flags,2272cl_uint num_events_in_wait_list,2273const cl_event *event_wait_list,2274cl_event *event)2275{2276CL_EVENT(EnqueueSVMMigrateMem,2277"command_queue = 0x%016" PRIxPTR2278", num_svm_pointers = %u, svm_pointers = 0x%016" PRIxPTR ", sizes = 0x%016" PRIxPTR2279", flags = %llu, num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR2280", event = 0x%016" PRIxPTR "",2281(uintptr_t)command_queue, num_svm_pointers, (uintptr_t)svm_pointers, (uintptr_t)sizes,2282static_cast<unsigned long long>(flags), num_events_in_wait_list,2283(uintptr_t)event_wait_list, (uintptr_t)event);22842285MemMigrationFlags flagsPacked = PackParam<MemMigrationFlags>(flags);22862287ANGLE_CL_VALIDATE_ERROR(EnqueueSVMMigrateMem, command_queue, num_svm_pointers, svm_pointers,2288sizes, flagsPacked, num_events_in_wait_list, event_wait_list, event);22892290return EnqueueSVMMigrateMem(command_queue, num_svm_pointers, svm_pointers, sizes, flagsPacked,2291num_events_in_wait_list, event_wait_list, event);2292}22932294// CL 2.22295cl_int CL_API_CALL clSetProgramReleaseCallback(cl_program program,2296void(CL_CALLBACK *pfn_notify)(cl_program program,2297void *user_data),2298void *user_data)2299{2300CL_EVENT(SetProgramReleaseCallback,2301"program = 0x%016" PRIxPTR ", pfn_notify = 0x%016" PRIxPTR2302", user_data = 0x%016" PRIxPTR "",2303(uintptr_t)program, (uintptr_t)pfn_notify, (uintptr_t)user_data);23042305ANGLE_CL_VALIDATE_ERROR(SetProgramReleaseCallback, program, pfn_notify, user_data);23062307return SetProgramReleaseCallback(program, pfn_notify, user_data);2308}23092310cl_int CL_API_CALL clSetProgramSpecializationConstant(cl_program program,2311cl_uint spec_id,2312size_t spec_size,2313const void *spec_value)2314{2315CL_EVENT(SetProgramSpecializationConstant,2316"program = 0x%016" PRIxPTR2317", spec_id = %u, spec_size = %zu, spec_value = 0x%016" PRIxPTR "",2318(uintptr_t)program, spec_id, spec_size, (uintptr_t)spec_value);23192320ANGLE_CL_VALIDATE_ERROR(SetProgramSpecializationConstant, program, spec_id, spec_size,2321spec_value);23222323return SetProgramSpecializationConstant(program, spec_id, spec_size, spec_value);2324}23252326// CL 3.02327cl_int CL_API_CALL clSetContextDestructorCallback(cl_context context,2328void(CL_CALLBACK *pfn_notify)(cl_context context,2329void *user_data),2330void *user_data)2331{2332CL_EVENT(SetContextDestructorCallback,2333"context = 0x%016" PRIxPTR ", pfn_notify = 0x%016" PRIxPTR2334", user_data = 0x%016" PRIxPTR "",2335(uintptr_t)context, (uintptr_t)pfn_notify, (uintptr_t)user_data);23362337ANGLE_CL_VALIDATE_ERROR(SetContextDestructorCallback, context, pfn_notify, user_data);23382339return SetContextDestructorCallback(context, pfn_notify, user_data);2340}23412342cl_mem CL_API_CALL clCreateBufferWithProperties(cl_context context,2343const cl_mem_properties *properties,2344cl_mem_flags flags,2345size_t size,2346void *host_ptr,2347cl_int *errcode_ret)2348{2349CL_EVENT(CreateBufferWithProperties,2350"context = 0x%016" PRIxPTR ", properties = 0x%016" PRIxPTR2351", flags = %llu, size = %zu, host_ptr = 0x%016" PRIxPTR2352", errcode_ret = 0x%016" PRIxPTR "",2353(uintptr_t)context, (uintptr_t)properties, static_cast<unsigned long long>(flags),2354size, (uintptr_t)host_ptr, (uintptr_t)errcode_ret);23552356MemFlags flagsPacked = PackParam<MemFlags>(flags);23572358ANGLE_CL_VALIDATE_ERRCODE_RET(CreateBufferWithProperties, context, properties, flagsPacked,2359size, host_ptr);23602361cl_int errorCode = CL_SUCCESS;2362cl_mem object =2363CreateBufferWithProperties(context, properties, flagsPacked, size, host_ptr, errorCode);23642365ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));2366if (errcode_ret != nullptr)2367{2368*errcode_ret = errorCode;2369}2370return object;2371}23722373cl_mem CL_API_CALL clCreateImageWithProperties(cl_context context,2374const cl_mem_properties *properties,2375cl_mem_flags flags,2376const cl_image_format *image_format,2377const cl_image_desc *image_desc,2378void *host_ptr,2379cl_int *errcode_ret)2380{2381CL_EVENT(CreateImageWithProperties,2382"context = 0x%016" PRIxPTR ", properties = 0x%016" PRIxPTR2383", flags = %llu, image_format = 0x%016" PRIxPTR ", image_desc = 0x%016" PRIxPTR2384", host_ptr = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",2385(uintptr_t)context, (uintptr_t)properties, static_cast<unsigned long long>(flags),2386(uintptr_t)image_format, (uintptr_t)image_desc, (uintptr_t)host_ptr,2387(uintptr_t)errcode_ret);23882389MemFlags flagsPacked = PackParam<MemFlags>(flags);23902391ANGLE_CL_VALIDATE_ERRCODE_RET(CreateImageWithProperties, context, properties, flagsPacked,2392image_format, image_desc, host_ptr);23932394cl_int errorCode = CL_SUCCESS;2395cl_mem object = CreateImageWithProperties(context, properties, flagsPacked, image_format,2396image_desc, host_ptr, errorCode);23972398ASSERT((errorCode == CL_SUCCESS) == (object != nullptr));2399if (errcode_ret != nullptr)2400{2401*errcode_ret = errorCode;2402}2403return object;2404}24052406// cl_khr_icd2407cl_int CL_API_CALL clIcdGetPlatformIDsKHR(cl_uint num_entries,2408cl_platform_id *platforms,2409cl_uint *num_platforms)2410{2411InitBackEnds(true);24122413CL_EVENT(IcdGetPlatformIDsKHR,2414"num_entries = %u, platforms = 0x%016" PRIxPTR ", num_platforms = 0x%016" PRIxPTR "",2415num_entries, (uintptr_t)platforms, (uintptr_t)num_platforms);24162417ANGLE_CL_VALIDATE_ERROR(IcdGetPlatformIDsKHR, num_entries, platforms, num_platforms);24182419return IcdGetPlatformIDsKHR(num_entries, platforms, num_platforms);2420}24212422} // namespace cl242324242425