Edit

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

Branch :

  • Show log

    Commit

  • Author : jchen10
    Date : 2019-02-15 21:06:42
    Hash : 7d53c60b
    Message : ParallelCompile: use the native extensions This enhances to use the native parallel compile extensions if available. Bug: 873724 Change-Id: I0aaed314accd75e1bfa596b322225b56d729d3a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1475234 Commit-Queue: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/renderer/ShaderImpl.h
  • //
    // Copyright 2014 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.
    //
    
    // ShaderImpl.h: Defines the abstract rx::ShaderImpl class.
    
    #ifndef LIBANGLE_RENDERER_SHADERIMPL_H_
    #define LIBANGLE_RENDERER_SHADERIMPL_H_
    
    #include <functional>
    
    #include "common/angleutils.h"
    #include "libANGLE/Shader.h"
    #include "libANGLE/WorkerThread.h"
    
    namespace gl
    {
    class ShCompilerInstance;
    }  // namespace gl
    
    namespace rx
    {
    
    using UpdateShaderStateFunctor = std::function<void(bool compiled, ShHandle handle)>;
    class WaitableCompileEvent : public angle::WaitableEvent
    {
      public:
        WaitableCompileEvent(std::shared_ptr<angle::WaitableEvent> waitableEvent);
        ~WaitableCompileEvent() override;
    
        void wait() override;
    
        bool isReady() override;
    
        virtual bool getResult() = 0;
    
        virtual bool postTranslate(std::string *infoLog) = 0;
    
        const std::string &getInfoLog();
    
      protected:
        std::shared_ptr<angle::WaitableEvent> mWaitableEvent;
        std::string mInfoLog;
    };
    
    class ShaderImpl : angle::NonCopyable
    {
      public:
        ShaderImpl(const gl::ShaderState &data) : mData(data) {}
        virtual ~ShaderImpl() {}
    
        virtual void destroy() {}
    
        virtual std::shared_ptr<WaitableCompileEvent> compile(const gl::Context *context,
                                                              gl::ShCompilerInstance *compilerInstance,
                                                              ShCompileOptions options) = 0;
    
        virtual std::string getDebugInfo() const = 0;
    
        const gl::ShaderState &getData() const { return mData; }
    
      protected:
        std::shared_ptr<WaitableCompileEvent> compileImpl(const gl::Context *context,
                                                          gl::ShCompilerInstance *compilerInstance,
                                                          const std::string &source,
                                                          ShCompileOptions compileOptions);
    
        const gl::ShaderState &mData;
    };
    
    }  // namespace rx
    
    #endif  // LIBANGLE_RENDERER_SHADERIMPL_H_