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 // CLContextImpl.h: Defines the abstract rx::CLContextImpl class. 7*8975f5c5SAndroid Build Coastguard Worker 8*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_RENDERER_CLCONTEXTIMPL_H_ 9*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_RENDERER_CLCONTEXTIMPL_H_ 10*8975f5c5SAndroid Build Coastguard Worker 11*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/CLCommandQueueImpl.h" 12*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/CLEventImpl.h" 13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/CLMemoryImpl.h" 14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/CLProgramImpl.h" 15*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/CLSamplerImpl.h" 16*8975f5c5SAndroid Build Coastguard Worker 17*8975f5c5SAndroid Build Coastguard Worker namespace rx 18*8975f5c5SAndroid Build Coastguard Worker { 19*8975f5c5SAndroid Build Coastguard Worker 20*8975f5c5SAndroid Build Coastguard Worker class CLContextImpl : angle::NonCopyable 21*8975f5c5SAndroid Build Coastguard Worker { 22*8975f5c5SAndroid Build Coastguard Worker public: 23*8975f5c5SAndroid Build Coastguard Worker using Ptr = std::unique_ptr<CLContextImpl>; 24*8975f5c5SAndroid Build Coastguard Worker 25*8975f5c5SAndroid Build Coastguard Worker CLContextImpl(const cl::Context &context); 26*8975f5c5SAndroid Build Coastguard Worker virtual ~CLContextImpl(); 27*8975f5c5SAndroid Build Coastguard Worker 28*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result getDevices(cl::DevicePtrs *devicePtrsOut) const = 0; 29*8975f5c5SAndroid Build Coastguard Worker 30*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result createCommandQueue(const cl::CommandQueue &commandQueue, 31*8975f5c5SAndroid Build Coastguard Worker CLCommandQueueImpl::Ptr *commandQueueOut) = 0; 32*8975f5c5SAndroid Build Coastguard Worker 33*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result createBuffer(const cl::Buffer &buffer, 34*8975f5c5SAndroid Build Coastguard Worker void *hostPtr, 35*8975f5c5SAndroid Build Coastguard Worker CLMemoryImpl::Ptr *bufferOut) = 0; 36*8975f5c5SAndroid Build Coastguard Worker 37*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result createImage(const cl::Image &image, 38*8975f5c5SAndroid Build Coastguard Worker void *hostPtr, 39*8975f5c5SAndroid Build Coastguard Worker CLMemoryImpl::Ptr *imageOut) = 0; 40*8975f5c5SAndroid Build Coastguard Worker 41*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result getSupportedImageFormats(cl::MemFlags flags, 42*8975f5c5SAndroid Build Coastguard Worker cl::MemObjectType imageType, 43*8975f5c5SAndroid Build Coastguard Worker cl_uint numEntries, 44*8975f5c5SAndroid Build Coastguard Worker cl_image_format *imageFormats, 45*8975f5c5SAndroid Build Coastguard Worker cl_uint *numImageFormats) = 0; 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result createSampler(const cl::Sampler &sampler, 48*8975f5c5SAndroid Build Coastguard Worker CLSamplerImpl::Ptr *samplerOut) = 0; 49*8975f5c5SAndroid Build Coastguard Worker 50*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result createProgramWithSource(const cl::Program &program, 51*8975f5c5SAndroid Build Coastguard Worker const std::string &source, 52*8975f5c5SAndroid Build Coastguard Worker CLProgramImpl::Ptr *programOut) = 0; 53*8975f5c5SAndroid Build Coastguard Worker 54*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result createProgramWithIL(const cl::Program &program, 55*8975f5c5SAndroid Build Coastguard Worker const void *il, 56*8975f5c5SAndroid Build Coastguard Worker size_t length, 57*8975f5c5SAndroid Build Coastguard Worker CLProgramImpl::Ptr *programOut) = 0; 58*8975f5c5SAndroid Build Coastguard Worker 59*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result createProgramWithBinary(const cl::Program &program, 60*8975f5c5SAndroid Build Coastguard Worker const size_t *lengths, 61*8975f5c5SAndroid Build Coastguard Worker const unsigned char **binaries, 62*8975f5c5SAndroid Build Coastguard Worker cl_int *binaryStatus, 63*8975f5c5SAndroid Build Coastguard Worker CLProgramImpl::Ptr *programOut) = 0; 64*8975f5c5SAndroid Build Coastguard Worker 65*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result createProgramWithBuiltInKernels(const cl::Program &program, 66*8975f5c5SAndroid Build Coastguard Worker const char *kernel_names, 67*8975f5c5SAndroid Build Coastguard Worker CLProgramImpl::Ptr *programOut) = 0; 68*8975f5c5SAndroid Build Coastguard Worker 69*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result linkProgram(const cl::Program &program, 70*8975f5c5SAndroid Build Coastguard Worker const cl::DevicePtrs &devices, 71*8975f5c5SAndroid Build Coastguard Worker const char *options, 72*8975f5c5SAndroid Build Coastguard Worker const cl::ProgramPtrs &inputPrograms, 73*8975f5c5SAndroid Build Coastguard Worker cl::Program *notify, 74*8975f5c5SAndroid Build Coastguard Worker CLProgramImpl::Ptr *programOut) = 0; 75*8975f5c5SAndroid Build Coastguard Worker 76*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result createUserEvent(const cl::Event &event, CLEventImpl::Ptr *eventOut) = 0; 77*8975f5c5SAndroid Build Coastguard Worker 78*8975f5c5SAndroid Build Coastguard Worker virtual angle::Result waitForEvents(const cl::EventPtrs &events) = 0; 79*8975f5c5SAndroid Build Coastguard Worker 80*8975f5c5SAndroid Build Coastguard Worker protected: 81*8975f5c5SAndroid Build Coastguard Worker const cl::Context &mContext; 82*8975f5c5SAndroid Build Coastguard Worker }; 83*8975f5c5SAndroid Build Coastguard Worker 84*8975f5c5SAndroid Build Coastguard Worker } // namespace rx 85*8975f5c5SAndroid Build Coastguard Worker 86*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_RENDERER_CLCONTEXTIMPL_H_ 87