Edit

kc3-lang/angle/src/libANGLE/ProgramPipeline.h

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2018-10-10 16:13:02
    Hash : 1c7f08c3
    Message : Inline RefCountObject::release. Also don't return errors from the object release methods. Not returning errors reduces the amount of code generated. Also we shouldn't be exiting early from destructor type functions. Increases object binding performance. Bug: angleproject:2877 Change-Id: Ieb8120d885b946915e355419825e1f52f31d7b49 Reviewed-on: https://chromium-review.googlesource.com/c/1270218 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/ProgramPipeline.h
  • //
    // Copyright (c) 2017 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.
    //
    
    // ProgramPipeline.h: Defines the gl::ProgramPipeline class.
    // Implements GL program pipeline objects and related functionality.
    // [OpenGL ES 3.1] section 7.4 page 105.
    
    #ifndef LIBANGLE_PROGRAMPIPELINE_H_
    #define LIBANGLE_PROGRAMPIPELINE_H_
    
    #include <memory>
    
    #include "common/angleutils.h"
    #include "libANGLE/Debug.h"
    #include "libANGLE/RefCountObject.h"
    
    namespace rx
    {
    class GLImplFactory;
    class ProgramPipelineImpl;
    };
    
    namespace gl
    {
    class Context;
    class ProgramPipeline;
    
    class ProgramPipelineState final : angle::NonCopyable
    {
      public:
        ProgramPipelineState();
        ~ProgramPipelineState();
    
        const std::string &getLabel() const;
    
      private:
        friend class ProgramPipeline;
    
        std::string mLabel;
    };
    
    class ProgramPipeline final : public RefCountObject, public LabeledObject
    {
      public:
        ProgramPipeline(rx::GLImplFactory *factory, GLuint handle);
        ~ProgramPipeline() override;
    
        void onDestroy(const Context *context) override;
    
        void setLabel(const std::string &label) override;
        const std::string &getLabel() const override;
    
        rx::ProgramPipelineImpl *getImplementation() const;
    
      private:
        std::unique_ptr<rx::ProgramPipelineImpl> mProgramPipeline;
    
        ProgramPipelineState mState;
    };
    }
    
    #endif  // LIBANGLE_PROGRAMPIPELINE_H_