xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/cl/CLCommandQueueCL.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 // CLCommandQueueCL.h: Defines the class interface for CLCommandQueueCL,
7 // implementing CLCommandQueueImpl.
8 
9 #ifndef LIBANGLE_RENDERER_CL_CLCOMMANDQUEUECL_H_
10 #define LIBANGLE_RENDERER_CL_CLCOMMANDQUEUECL_H_
11 
12 #include "libANGLE/renderer/CLCommandQueueImpl.h"
13 
14 namespace rx
15 {
16 
17 class CLCommandQueueCL : public CLCommandQueueImpl
18 {
19   public:
20     CLCommandQueueCL(const cl::CommandQueue &commandQueue, cl_command_queue native);
21     ~CLCommandQueueCL() override;
22 
23     cl_command_queue getNative() const;
24 
25     angle::Result setProperty(cl::CommandQueueProperties properties, cl_bool enable) override;
26 
27     angle::Result enqueueReadBuffer(const cl::Buffer &buffer,
28                                     bool blocking,
29                                     size_t offset,
30                                     size_t size,
31                                     void *ptr,
32                                     const cl::EventPtrs &waitEvents,
33                                     CLEventImpl::CreateFunc *eventCreateFunc) override;
34 
35     angle::Result enqueueWriteBuffer(const cl::Buffer &buffer,
36                                      bool blocking,
37                                      size_t offset,
38                                      size_t size,
39                                      const void *ptr,
40                                      const cl::EventPtrs &waitEvents,
41                                      CLEventImpl::CreateFunc *eventCreateFunc) override;
42 
43     angle::Result enqueueReadBufferRect(const cl::Buffer &buffer,
44                                         bool blocking,
45                                         const cl::MemOffsets &bufferOrigin,
46                                         const cl::MemOffsets &hostOrigin,
47                                         const cl::Coordinate &region,
48                                         size_t bufferRowPitch,
49                                         size_t bufferSlicePitch,
50                                         size_t hostRowPitch,
51                                         size_t hostSlicePitch,
52                                         void *ptr,
53                                         const cl::EventPtrs &waitEvents,
54                                         CLEventImpl::CreateFunc *eventCreateFunc) override;
55 
56     angle::Result enqueueWriteBufferRect(const cl::Buffer &buffer,
57                                          bool blocking,
58                                          const cl::MemOffsets &bufferOrigin,
59                                          const cl::MemOffsets &hostOrigin,
60                                          const cl::Coordinate &region,
61                                          size_t bufferRowPitch,
62                                          size_t bufferSlicePitch,
63                                          size_t hostRowPitch,
64                                          size_t hostSlicePitch,
65                                          const void *ptr,
66                                          const cl::EventPtrs &waitEvents,
67                                          CLEventImpl::CreateFunc *eventCreateFunc) override;
68 
69     angle::Result enqueueCopyBuffer(const cl::Buffer &srcBuffer,
70                                     const cl::Buffer &dstBuffer,
71                                     size_t srcOffset,
72                                     size_t dstOffset,
73                                     size_t size,
74                                     const cl::EventPtrs &waitEvents,
75                                     CLEventImpl::CreateFunc *eventCreateFunc) override;
76 
77     angle::Result enqueueCopyBufferRect(const cl::Buffer &srcBuffer,
78                                         const cl::Buffer &dstBuffer,
79                                         const cl::MemOffsets &srcOrigin,
80                                         const cl::MemOffsets &dstOrigin,
81                                         const cl::Coordinate &region,
82                                         size_t srcRowPitch,
83                                         size_t srcSlicePitch,
84                                         size_t dstRowPitch,
85                                         size_t dstSlicePitch,
86                                         const cl::EventPtrs &waitEvents,
87                                         CLEventImpl::CreateFunc *eventCreateFunc) override;
88 
89     angle::Result enqueueFillBuffer(const cl::Buffer &buffer,
90                                     const void *pattern,
91                                     size_t patternSize,
92                                     size_t offset,
93                                     size_t size,
94                                     const cl::EventPtrs &waitEvents,
95                                     CLEventImpl::CreateFunc *eventCreateFunc) override;
96 
97     angle::Result enqueueMapBuffer(const cl::Buffer &buffer,
98                                    bool blocking,
99                                    cl::MapFlags mapFlags,
100                                    size_t offset,
101                                    size_t size,
102                                    const cl::EventPtrs &waitEvents,
103                                    CLEventImpl::CreateFunc *eventCreateFunc,
104                                    void *&mapPtr) override;
105 
106     angle::Result enqueueReadImage(const cl::Image &image,
107                                    bool blocking,
108                                    const cl::MemOffsets &origin,
109                                    const cl::Coordinate &region,
110                                    size_t rowPitch,
111                                    size_t slicePitch,
112                                    void *ptr,
113                                    const cl::EventPtrs &waitEvents,
114                                    CLEventImpl::CreateFunc *eventCreateFunc) override;
115 
116     angle::Result enqueueWriteImage(const cl::Image &image,
117                                     bool blocking,
118                                     const cl::MemOffsets &origin,
119                                     const cl::Coordinate &region,
120                                     size_t inputRowPitch,
121                                     size_t inputSlicePitch,
122                                     const void *ptr,
123                                     const cl::EventPtrs &waitEvents,
124                                     CLEventImpl::CreateFunc *eventCreateFunc) override;
125 
126     angle::Result enqueueCopyImage(const cl::Image &srcImage,
127                                    const cl::Image &dstImage,
128                                    const cl::MemOffsets &srcOrigin,
129                                    const cl::MemOffsets &dstOrigin,
130                                    const cl::Coordinate &region,
131                                    const cl::EventPtrs &waitEvents,
132                                    CLEventImpl::CreateFunc *eventCreateFunc) override;
133 
134     angle::Result enqueueFillImage(const cl::Image &image,
135                                    const void *fillColor,
136                                    const cl::MemOffsets &origin,
137                                    const cl::Coordinate &region,
138                                    const cl::EventPtrs &waitEvents,
139                                    CLEventImpl::CreateFunc *eventCreateFunc) override;
140 
141     angle::Result enqueueCopyImageToBuffer(const cl::Image &srcImage,
142                                            const cl::Buffer &dstBuffer,
143                                            const cl::MemOffsets &srcOrigin,
144                                            const cl::Coordinate &region,
145                                            size_t dstOffset,
146                                            const cl::EventPtrs &waitEvents,
147                                            CLEventImpl::CreateFunc *eventCreateFunc) override;
148 
149     angle::Result enqueueCopyBufferToImage(const cl::Buffer &srcBuffer,
150                                            const cl::Image &dstImage,
151                                            size_t srcOffset,
152                                            const cl::MemOffsets &dstOrigin,
153                                            const cl::Coordinate &region,
154                                            const cl::EventPtrs &waitEvents,
155                                            CLEventImpl::CreateFunc *eventCreateFunc) override;
156 
157     angle::Result enqueueMapImage(const cl::Image &image,
158                                   bool blocking,
159                                   cl::MapFlags mapFlags,
160                                   const cl::MemOffsets &origin,
161                                   const cl::Coordinate &region,
162                                   size_t *imageRowPitch,
163                                   size_t *imageSlicePitch,
164                                   const cl::EventPtrs &waitEvents,
165                                   CLEventImpl::CreateFunc *eventCreateFunc,
166                                   void *&mapPtr) override;
167 
168     angle::Result enqueueUnmapMemObject(const cl::Memory &memory,
169                                         void *mappedPtr,
170                                         const cl::EventPtrs &waitEvents,
171                                         CLEventImpl::CreateFunc *eventCreateFunc) override;
172 
173     angle::Result enqueueMigrateMemObjects(const cl::MemoryPtrs &memObjects,
174                                            cl::MemMigrationFlags flags,
175                                            const cl::EventPtrs &waitEvents,
176                                            CLEventImpl::CreateFunc *eventCreateFunc) override;
177 
178     angle::Result enqueueNDRangeKernel(const cl::Kernel &kernel,
179                                        const cl::NDRange &ndrange,
180                                        const cl::EventPtrs &waitEvents,
181                                        CLEventImpl::CreateFunc *eventCreateFunc) override;
182 
183     angle::Result enqueueTask(const cl::Kernel &kernel,
184                               const cl::EventPtrs &waitEvents,
185                               CLEventImpl::CreateFunc *eventCreateFunc) override;
186 
187     angle::Result enqueueNativeKernel(cl::UserFunc userFunc,
188                                       void *args,
189                                       size_t cbArgs,
190                                       const cl::BufferPtrs &buffers,
191                                       const std::vector<size_t> bufferPtrOffsets,
192                                       const cl::EventPtrs &waitEvents,
193                                       CLEventImpl::CreateFunc *eventCreateFunc) override;
194 
195     angle::Result enqueueMarkerWithWaitList(const cl::EventPtrs &waitEvents,
196                                             CLEventImpl::CreateFunc *eventCreateFunc) override;
197 
198     angle::Result enqueueMarker(CLEventImpl::CreateFunc &eventCreateFunc) override;
199 
200     angle::Result enqueueWaitForEvents(const cl::EventPtrs &events) override;
201 
202     angle::Result enqueueBarrierWithWaitList(const cl::EventPtrs &waitEvents,
203                                              CLEventImpl::CreateFunc *eventCreateFunc) override;
204 
205     angle::Result enqueueBarrier() override;
206 
207     angle::Result flush() override;
208     angle::Result finish() override;
209 
210   private:
211     const cl_command_queue mNative;
212 };
213 
getNative()214 inline cl_command_queue CLCommandQueueCL::getNative() const
215 {
216     return mNative;
217 }
218 
219 }  // namespace rx
220 
221 #endif  // LIBANGLE_RENDERER_CL_CLCOMMANDQUEUECL_H_
222