Edit

kc3-lang/angle/src/libANGLE/renderer/CLContextImpl.h

Branch :

  • Show log

    Commit

  • Author : John Plate
    Date : 2021-06-11 19:12:11
    Hash : 69562546
    Message : CL: Refactor info structs and fix conformance bug - Remove variable name prefix from Info structs to be more consistent with other ANGLE structs. - Fix CL object validation check with magics, since the Mesa solution doesn't work without RTTI. - Add support for some extensions required by OpenCL 1.1 and for some optional extensions. - Fix more conformance bugs. Bug: angleproject:6015 Change-Id: I41b1c45d95059a9994f5dc78bf9b74476cc6f2d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2956349 Commit-Queue: John Plate <jplate@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/renderer/CLContextImpl.h
  • //
    // 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.
    //
    // CLContextImpl.h: Defines the abstract rx::CLContextImpl class.
    
    #ifndef LIBANGLE_RENDERER_CLCONTEXTIMPL_H_
    #define LIBANGLE_RENDERER_CLCONTEXTIMPL_H_
    
    #include "libANGLE/renderer/CLCommandQueueImpl.h"
    #include "libANGLE/renderer/CLEventImpl.h"
    #include "libANGLE/renderer/CLMemoryImpl.h"
    #include "libANGLE/renderer/CLProgramImpl.h"
    #include "libANGLE/renderer/CLSamplerImpl.h"
    
    namespace rx
    {
    
    class CLContextImpl : angle::NonCopyable
    {
      public:
        using Ptr = std::unique_ptr<CLContextImpl>;
    
        CLContextImpl(const cl::Context &context);
        virtual ~CLContextImpl();
    
        virtual cl::DevicePtrs getDevices(cl_int &errorCode) const = 0;
    
        virtual CLCommandQueueImpl::Ptr createCommandQueue(const cl::CommandQueue &commandQueue,
                                                           cl_int &errorCode) = 0;
    
        virtual CLMemoryImpl::Ptr createBuffer(const cl::Buffer &buffer,
                                               size_t size,
                                               void *hostPtr,
                                               cl_int &errorCode) = 0;
    
        virtual CLMemoryImpl::Ptr createImage(const cl::Image &image,
                                              cl::MemFlags flags,
                                              const cl_image_format &format,
                                              const cl::ImageDescriptor &desc,
                                              void *hostPtr,
                                              cl_int &errorCode) = 0;
    
        virtual cl_int getSupportedImageFormats(cl::MemFlags flags,
                                                cl::MemObjectType imageType,
                                                cl_uint numEntries,
                                                cl_image_format *imageFormats,
                                                cl_uint *numImageFormats) = 0;
    
        virtual CLSamplerImpl::Ptr createSampler(const cl::Sampler &sampler, cl_int &errorCode) = 0;
    
        virtual CLProgramImpl::Ptr createProgramWithSource(const cl::Program &program,
                                                           const std::string &source,
                                                           cl_int &errorCode) = 0;
    
        virtual CLProgramImpl::Ptr createProgramWithIL(const cl::Program &program,
                                                       const void *il,
                                                       size_t length,
                                                       cl_int &errorCode) = 0;
    
        virtual CLProgramImpl::Ptr createProgramWithBinary(const cl::Program &program,
                                                           const size_t *lengths,
                                                           const unsigned char **binaries,
                                                           cl_int *binaryStatus,
                                                           cl_int &errorCode) = 0;
    
        virtual CLProgramImpl::Ptr createProgramWithBuiltInKernels(const cl::Program &program,
                                                                   const char *kernel_names,
                                                                   cl_int &errorCode) = 0;
    
        virtual CLProgramImpl::Ptr linkProgram(const cl::Program &program,
                                               const cl::DevicePtrs &devices,
                                               const char *options,
                                               const cl::ProgramPtrs &inputPrograms,
                                               cl::Program *notify,
                                               cl_int &errorCode) = 0;
    
        virtual CLEventImpl::Ptr createUserEvent(const cl::Event &event, cl_int &errorCode) = 0;
    
        virtual cl_int waitForEvents(const cl::EventPtrs &events) = 0;
    
      protected:
        const cl::Context &mContext;
    };
    
    }  // namespace rx
    
    #endif  // LIBANGLE_RENDERER_CLCONTEXTIMPL_H_