xref: /aosp_15_r20/external/angle/src/libANGLE/validationCL.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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