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 // CLProgramCL.h: Defines the class interface for CLProgramCL, implementing CLProgramImpl.
7*8975f5c5SAndroid Build Coastguard Worker
8*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_RENDERER_CL_CLPROGRAMCL_H_
9*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_RENDERER_CL_CLPROGRAMCL_H_
10*8975f5c5SAndroid Build Coastguard Worker
11*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/cl/cl_types.h"
12*8975f5c5SAndroid Build Coastguard Worker
13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/CLProgramImpl.h"
14*8975f5c5SAndroid Build Coastguard Worker
15*8975f5c5SAndroid Build Coastguard Worker namespace rx
16*8975f5c5SAndroid Build Coastguard Worker {
17*8975f5c5SAndroid Build Coastguard Worker
18*8975f5c5SAndroid Build Coastguard Worker class CLProgramCL : public CLProgramImpl
19*8975f5c5SAndroid Build Coastguard Worker {
20*8975f5c5SAndroid Build Coastguard Worker public:
21*8975f5c5SAndroid Build Coastguard Worker CLProgramCL(const cl::Program &program, cl_program native);
22*8975f5c5SAndroid Build Coastguard Worker ~CLProgramCL() override;
23*8975f5c5SAndroid Build Coastguard Worker
24*8975f5c5SAndroid Build Coastguard Worker cl_program getNative() const;
25*8975f5c5SAndroid Build Coastguard Worker
26*8975f5c5SAndroid Build Coastguard Worker angle::Result build(const cl::DevicePtrs &devices,
27*8975f5c5SAndroid Build Coastguard Worker const char *options,
28*8975f5c5SAndroid Build Coastguard Worker cl::Program *notify) override;
29*8975f5c5SAndroid Build Coastguard Worker
30*8975f5c5SAndroid Build Coastguard Worker angle::Result compile(const cl::DevicePtrs &devices,
31*8975f5c5SAndroid Build Coastguard Worker const char *options,
32*8975f5c5SAndroid Build Coastguard Worker const cl::ProgramPtrs &inputHeaders,
33*8975f5c5SAndroid Build Coastguard Worker const char **headerIncludeNames,
34*8975f5c5SAndroid Build Coastguard Worker cl::Program *notify) override;
35*8975f5c5SAndroid Build Coastguard Worker
36*8975f5c5SAndroid Build Coastguard Worker angle::Result getInfo(cl::ProgramInfo name,
37*8975f5c5SAndroid Build Coastguard Worker size_t valueSize,
38*8975f5c5SAndroid Build Coastguard Worker void *value,
39*8975f5c5SAndroid Build Coastguard Worker size_t *valueSizeRet) const override;
40*8975f5c5SAndroid Build Coastguard Worker
41*8975f5c5SAndroid Build Coastguard Worker angle::Result getBuildInfo(const cl::Device &device,
42*8975f5c5SAndroid Build Coastguard Worker cl::ProgramBuildInfo name,
43*8975f5c5SAndroid Build Coastguard Worker size_t valueSize,
44*8975f5c5SAndroid Build Coastguard Worker void *value,
45*8975f5c5SAndroid Build Coastguard Worker size_t *valueSizeRet) const override;
46*8975f5c5SAndroid Build Coastguard Worker
47*8975f5c5SAndroid Build Coastguard Worker angle::Result createKernel(const cl::Kernel &kernel,
48*8975f5c5SAndroid Build Coastguard Worker const char *name,
49*8975f5c5SAndroid Build Coastguard Worker CLKernelImpl::Ptr *kernelOut) override;
50*8975f5c5SAndroid Build Coastguard Worker
51*8975f5c5SAndroid Build Coastguard Worker angle::Result createKernels(cl_uint numKernels,
52*8975f5c5SAndroid Build Coastguard Worker CLKernelImpl::CreateFuncs &createFuncs,
53*8975f5c5SAndroid Build Coastguard Worker cl_uint *numKernelsRet) override;
54*8975f5c5SAndroid Build Coastguard Worker
55*8975f5c5SAndroid Build Coastguard Worker private:
56*8975f5c5SAndroid Build Coastguard Worker static void CL_CALLBACK Callback(cl_program program, void *userData);
57*8975f5c5SAndroid Build Coastguard Worker
58*8975f5c5SAndroid Build Coastguard Worker const cl_program mNative;
59*8975f5c5SAndroid Build Coastguard Worker
60*8975f5c5SAndroid Build Coastguard Worker friend class CLContextCL;
61*8975f5c5SAndroid Build Coastguard Worker };
62*8975f5c5SAndroid Build Coastguard Worker
getNative()63*8975f5c5SAndroid Build Coastguard Worker inline cl_program CLProgramCL::getNative() const
64*8975f5c5SAndroid Build Coastguard Worker {
65*8975f5c5SAndroid Build Coastguard Worker return mNative;
66*8975f5c5SAndroid Build Coastguard Worker }
67*8975f5c5SAndroid Build Coastguard Worker
68*8975f5c5SAndroid Build Coastguard Worker } // namespace rx
69*8975f5c5SAndroid Build Coastguard Worker
70*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_RENDERER_CL_CLPROGRAMCL_H_
71