xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/cl/CLEventCL.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1 //
2 // Copyright 2021 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 // CLEventCL.h: Defines the class interface for CLEventCL, implementing CLEventImpl.
7 
8 #ifndef LIBANGLE_RENDERER_CL_CLEVENTCL_H_
9 #define LIBANGLE_RENDERER_CL_CLEVENTCL_H_
10 
11 #include "libANGLE/renderer/cl/cl_types.h"
12 
13 #include "libANGLE/renderer/CLEventImpl.h"
14 
15 namespace rx
16 {
17 
18 class CLEventCL : public CLEventImpl
19 {
20   public:
21     CLEventCL(const cl::Event &event, cl_event native);
22     ~CLEventCL() override;
23 
24     cl_event getNative() const;
25 
26     angle::Result getCommandExecutionStatus(cl_int &executionStatus) override;
27 
28     angle::Result setUserEventStatus(cl_int executionStatus) override;
29 
30     angle::Result setCallback(cl::Event &event, cl_int commandExecCallbackType) override;
31 
32     angle::Result getProfilingInfo(cl::ProfilingInfo name,
33                                    size_t valueSize,
34                                    void *value,
35                                    size_t *valueSizeRet) override;
36 
37     static std::vector<cl_event> Cast(const cl::EventPtrs &events);
38 
39   private:
40     static void CL_CALLBACK Callback(cl_event event, cl_int commandStatus, void *userData);
41 
42     const cl_event mNative;
43 };
44 
getNative()45 inline cl_event CLEventCL::getNative() const
46 {
47     return mNative;
48 }
49 
50 }  // namespace rx
51 
52 #endif  // LIBANGLE_RENDERER_CL_CLEVENTCL_H_
53