| // | |
| // 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. | |
| // | |
| // CLProgramImpl.h: Defines the abstract rx::CLProgramImpl class. | |
| #ifndef LIBANGLE_RENDERER_CLPROGRAMIMPL_H_ | |
| #define LIBANGLE_RENDERER_CLPROGRAMIMPL_H_ | |
| #include "libANGLE/renderer/CLKernelImpl.h" | |
| namespace rx | |
| { | |
| class CLProgramImpl : angle::NonCopyable | |
| { | |
| public: | |
| using Ptr = std::unique_ptr<CLProgramImpl>; | |
| CLProgramImpl(const cl::Program &program); | |
| virtual ~CLProgramImpl(); | |
| virtual std::string getSource(cl_int &errorCode) const = 0; | |
| virtual cl_int build(const cl::DevicePtrs &devices, | |
| const char *options, | |
| cl::Program *notify) = 0; | |
| virtual cl_int compile(const cl::DevicePtrs &devices, | |
| const char *options, | |
| const cl::ProgramPtrs &inputHeaders, | |
| const char **headerIncludeNames, | |
| cl::Program *notify) = 0; | |
| virtual cl_int getInfo(cl::ProgramInfo name, | |
| size_t valueSize, | |
| void *value, | |
| size_t *valueSizeRet) const = 0; | |
| virtual cl_int getBuildInfo(const cl::Device &device, | |
| cl::ProgramBuildInfo name, | |
| size_t valueSize, | |
| void *value, | |
| size_t *valueSizeRet) const = 0; | |
| virtual CLKernelImpl::Ptr createKernel(const cl::Kernel &kernel, | |
| const char *name, | |
| cl_int &errorCode) = 0; | |
| virtual cl_int createKernels(cl_uint numKernels, | |
| CLKernelImpl::CreateFuncs &createFuncs, | |
| cl_uint *numKernelsRet) = 0; | |
| protected: | |
| const cl::Program &mProgram; | |
| }; | |
| } // namespace rx | |
| #endif // LIBANGLE_RENDERER_CLPROGRAMIMPL_H_ |