| // |
| // Copyright 2021 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| |
| // validationCL.h: Validation functions for generic CL entry point parameters |
| |
| #ifndef LIBANGLE_VALIDATIONCL_H_ |
| #define LIBANGLE_VALIDATIONCL_H_ |
| |
| #include "libANGLE/CLBuffer.h" |
| #include "libANGLE/CLCommandQueue.h" |
| #include "libANGLE/CLContext.h" |
| #include "libANGLE/CLDevice.h" |
| #include "libANGLE/CLEvent.h" |
| #include "libANGLE/CLImage.h" |
| #include "libANGLE/CLKernel.h" |
| #include "libANGLE/CLMemory.h" |
| #include "libANGLE/CLPlatform.h" |
| #include "libANGLE/CLProgram.h" |
| #include "libANGLE/CLSampler.h" |
| |
| #define ANGLE_CL_VALIDATE_VOID(EP, ...) \ |
| do \ |
| { \ |
| if (Validate##EP(__VA_ARGS__) != CL_SUCCESS) \ |
| { \ |
| return; \ |
| } \ |
| } while (0) |
| |
| #define ANGLE_CL_VALIDATE_ERROR(EP, ...) \ |
| do \ |
| { \ |
| cl_int errorCode = Validate##EP(__VA_ARGS__); \ |
| if (errorCode != CL_SUCCESS) \ |
| { \ |
| return errorCode; \ |
| } \ |
| } while (0) |
| |
| #define ANGLE_CL_VALIDATE_ERRCODE_RET(EP, ...) \ |
| do \ |
| { \ |
| cl_int errorCode = Validate##EP(__VA_ARGS__); \ |
| if (errorCode != CL_SUCCESS) \ |
| { \ |
| if (errcode_ret != nullptr) \ |
| { \ |
| *errcode_ret = errorCode; \ |
| } \ |
| return nullptr; \ |
| } \ |
| } while (0) |
| |
| #define ANGLE_CL_VALIDATE_POINTER(EP, ...) \ |
| do \ |
| { \ |
| cl_int errorCode = Validate##EP(__VA_ARGS__); \ |
| if (errorCode != CL_SUCCESS) \ |
| { \ |
| return nullptr; \ |
| } \ |
| } while (0) |
| |
| #endif // LIBANGLE_VALIDATIONCL_H_ |