1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2021 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker // validationCL.h: Validation functions for generic CL entry point parameters 8*8975f5c5SAndroid Build Coastguard Worker 9*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_VALIDATIONCL_H_ 10*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_VALIDATIONCL_H_ 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLBuffer.h" 13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLCommandQueue.h" 14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLContext.h" 15*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLDevice.h" 16*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLEvent.h" 17*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLImage.h" 18*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLKernel.h" 19*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLMemory.h" 20*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLPlatform.h" 21*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLProgram.h" 22*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/CLSampler.h" 23*8975f5c5SAndroid Build Coastguard Worker 24*8975f5c5SAndroid Build Coastguard Worker #define ANGLE_CL_VALIDATE_VOID(EP, ...) \ 25*8975f5c5SAndroid Build Coastguard Worker do \ 26*8975f5c5SAndroid Build Coastguard Worker { \ 27*8975f5c5SAndroid Build Coastguard Worker if (Validate##EP(__VA_ARGS__) != CL_SUCCESS) \ 28*8975f5c5SAndroid Build Coastguard Worker { \ 29*8975f5c5SAndroid Build Coastguard Worker return; \ 30*8975f5c5SAndroid Build Coastguard Worker } \ 31*8975f5c5SAndroid Build Coastguard Worker } while (0) 32*8975f5c5SAndroid Build Coastguard Worker 33*8975f5c5SAndroid Build Coastguard Worker #define ANGLE_CL_VALIDATE_ERROR(EP, ...) \ 34*8975f5c5SAndroid Build Coastguard Worker do \ 35*8975f5c5SAndroid Build Coastguard Worker { \ 36*8975f5c5SAndroid Build Coastguard Worker cl_int errorCode = Validate##EP(__VA_ARGS__); \ 37*8975f5c5SAndroid Build Coastguard Worker if (errorCode != CL_SUCCESS) \ 38*8975f5c5SAndroid Build Coastguard Worker { \ 39*8975f5c5SAndroid Build Coastguard Worker return errorCode; \ 40*8975f5c5SAndroid Build Coastguard Worker } \ 41*8975f5c5SAndroid Build Coastguard Worker } while (0) 42*8975f5c5SAndroid Build Coastguard Worker 43*8975f5c5SAndroid Build Coastguard Worker #define ANGLE_CL_VALIDATE_ERRCODE_RET(EP, ...) \ 44*8975f5c5SAndroid Build Coastguard Worker do \ 45*8975f5c5SAndroid Build Coastguard Worker { \ 46*8975f5c5SAndroid Build Coastguard Worker cl_int errorCode = Validate##EP(__VA_ARGS__); \ 47*8975f5c5SAndroid Build Coastguard Worker if (errorCode != CL_SUCCESS) \ 48*8975f5c5SAndroid Build Coastguard Worker { \ 49*8975f5c5SAndroid Build Coastguard Worker if (errcode_ret != nullptr) \ 50*8975f5c5SAndroid Build Coastguard Worker { \ 51*8975f5c5SAndroid Build Coastguard Worker *errcode_ret = errorCode; \ 52*8975f5c5SAndroid Build Coastguard Worker } \ 53*8975f5c5SAndroid Build Coastguard Worker return nullptr; \ 54*8975f5c5SAndroid Build Coastguard Worker } \ 55*8975f5c5SAndroid Build Coastguard Worker } while (0) 56*8975f5c5SAndroid Build Coastguard Worker 57*8975f5c5SAndroid Build Coastguard Worker #define ANGLE_CL_VALIDATE_POINTER(EP, ...) \ 58*8975f5c5SAndroid Build Coastguard Worker do \ 59*8975f5c5SAndroid Build Coastguard Worker { \ 60*8975f5c5SAndroid Build Coastguard Worker cl_int errorCode = Validate##EP(__VA_ARGS__); \ 61*8975f5c5SAndroid Build Coastguard Worker if (errorCode != CL_SUCCESS) \ 62*8975f5c5SAndroid Build Coastguard Worker { \ 63*8975f5c5SAndroid Build Coastguard Worker return nullptr; \ 64*8975f5c5SAndroid Build Coastguard Worker } \ 65*8975f5c5SAndroid Build Coastguard Worker } while (0) 66*8975f5c5SAndroid Build Coastguard Worker 67*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_VALIDATIONCL_H_ 68